微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog程序的一点问题。求救各位大神

verilog程序的一点问题。求救各位大神

时间:10-02 整理:3721RD 点击:

module add(a, b, ci, s, co);

  input a,b,ci;

  output s,co;

  reg s,co;

  always @(a or bor ci)

       begin

       s=a^b^ci;

       co=a&b+b&ci+a&ci;

       end

endmodule


module adder16(a, b, cin, sum, cout);

   input[16:1]  a;

   input[16:1]  b;

   input         cin;

   output [16:1]sum;

   reg [16:1]    sum;

   output        cout;

   reg          cout;

   reg [16:0]   vsum;

   reg [16:0]   carry;


   integer    i;

         

        initial

       begin        

         for(i=1;i<=16;i=i+1)

                     begin

                            addadder16(.a(a),.b(b),.ci(carry[i-1]),.s(sum),.co(carry));                                         

                     end                  

       end         

      

      always @(a orb or cin)   

                    begin           

                            if(i==1)

                                   vsum[1]=(a[1]^b[1])^cin;

                                   carry[1]=(a[1]&b[1])|(cin&(a[1]|b[1]));

                            elseif (i>1)

                                   for(i=2;i<=16;i=i+1)

                                   begin

                                          vsum=(a^b)^carry[i-1];

                                          carry=(a&b)|(carry[i-1]&(a|b));                                      

                                   end

                     end

              assignsum=vsum[16];

              assigncout=carry[16];

endmodule

写了一个16位全加器的verilog程序。但是编译一直出错。

Error (10663): Verilog HDL Port Connection error at adder16.v(29): output or inout port "s" must be connected to a structural net expression

Error (10663): Verilog HDL Port Connection error at adder16.v(29): output or inout port "co" must be connected to a structural net expression

Error: Can't elaborate top-level user hierarchy

我知道出错是说s 和co 所引用的必须是assign型,用wire。但是下面又有always。改过来这个又在always里报错,必须用reg型。真是不知道应该怎么改了。希望能帮我一下,提出宝贵意见。

小编16位加法器为啥要这么写?


大侠,你是写Gate RTL呢?还是行为RTL。



   行为级的。应该怎么修改?



   说错了。应该是用RTL 寄存器来描述。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top