阔你急哇 2022-06-15 20:59 采纳率: 50%
浏览 251
已结题

Verilog中always语法错误

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

img

  • 写回答

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
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月26日
  • 已采纳回答 6月18日
  • 专家修改了标签 6月16日
  • 创建了问题 6月15日

悬赏问题

  • ¥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之后自动重连失效