module dds ( clk , reset , div , choose , data );
input [5:0] div ;
input [1:0] choose ;
input clk , reset ;
output [7:0] data ;
wire [7:0] data ;
reg [5:0] addr , address ;
reg [5:0] i ;
reg clkdiv ;
function [7:0] rom ;
input [5:0] address ;
begin
case ( address )
0:rom=0;
1: rom =4;
2: rom =12;
3: rom =21;
4:rom=25;
5:rom=21;
6:rom=12;
7:rom=4;
8: rom =20;
9:rom=20;
10:rom=20;
11:rom=20;
12:rom=1;
13: rom =1;
14:rom=1;
15:rom=1;
16:rom=0;
17: rom =5;
18:rom=10;
19:rom=15;
20: rom =20;
21: rom =25;
22: rom =30;
23: rom =35;
24:rom=35;
25: rom =30;
26:rom=25;
27: rom =20;
28:rom=15;
29:rom=10;
30:rom=5;
31: rom =0;
default:rom=10'hxx ;
endcase
end
endfunction
assign data=rom(address);
endmodule
always @(posedge clk or negedge reset )
if(!reset)
begin
i<=0;
addr <=0;
clkdiv <=0;
end
always @ ( posedge clk )
begin
if ( i ==( div -1))
begin
i<=0;
clkdiv <=~ clkdiv ;
end
else
i <= i +1;
end
always @( posedge clkdiv )
begin
if ( addr ==7)
addr <=0;
else
addr <= addr +1;
end
always @( posedge clkdiv )
begin
case ( choose )
0:address<= addr ;
1:address<= addr +8;
2:address<= addr +16;
3:address<= addr +24;
endcase
end
错误如下
** Error: D:/zhuomian/yuan.v(59): near "always": syntax error, unexpected always, expecting class

Verilog中always语法错误
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 老皮芽子 2022-06-16 09:06关注
代码毛病比较多
module dds ( clk , reset , div , choose , data ); input [5:0] div ; input [1:0] choose ; input clk , reset ; output [7:0] data ; wire [7:0] data ; reg [5:0] addr=0 , address=0 ; reg [5:0] i ; reg clkdiv ; function [7:0] rom ; input [5:0] address ; begin case ( address ) 0:rom=0; 1: rom =4; 2: rom =12; 3: rom =21; 4:rom=25; 5:rom=21; 6:rom=12; 7:rom=4; 8: rom =20; 9:rom=20; 10:rom=20; 11:rom=20; 12:rom=1; 13: rom =1; 14:rom=1; 15:rom=1; 16:rom=0; 17: rom =5; 18:rom=10; 19:rom=15; 20: rom =20; 21: rom =25; 22: rom =30; 23: rom =35; 24:rom=35; 25: rom =30; 26:rom=25; 27: rom =20; 28:rom=15; 29:rom=10; 30:rom=5; 31: rom =0; default:rom=10'hxx ; endcase end endfunction assign data=rom(address); always @(posedge clk or negedge reset ) begin if(!reset) begin i<=0; clkdiv <=0; end else begin if ( i ==( div -1)) begin i<=0; clkdiv <=~ clkdiv ; end else i <= i +1; end end always @( posedge clkdiv ) begin if ( addr ==7) addr <=0; else addr <= addr +1; end always @( posedge clkdiv ) begin case ( choose ) 0:address<= addr ; 1:address<= addr +8; 2:address<= addr +16; 3:address<= addr +24; endcase end endmodule
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 用C语言解决编程问题
- ¥15 unity硬件连接与使用
- ¥15 鱼缸加热棒的数据分析或者实际案例也行
- ¥15 postgresql11安装完成后,pgadmin无法启动
- ¥15 (标签-无人机|关键词-Matlab代码)
- ¥15 执行shell脚本提示参数太多
- ¥15 困扰好久了,电脑的串口调试助手向单片机发送一个字符(如:字符‘1’到‘8’),单片机点亮对应的灯(如发送字符‘2’则点亮第2个灯)并给电脑回复信息:已点亮第x个灯(其中 x 要替换成对应的数字)
- ¥15 求减少这个c++程序内存的解决方案
- ¥30 改正代码,错误比较多
- ¥15 vue3 keepalive