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 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效