在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 4437|回复: 4

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

[复制链接]
发表于 2013-10-24 21:50:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×

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型。真是不知道应该怎么改了。希望能帮我一下,提出宝贵意见。

发表于 2013-10-25 11:28:22 | 显示全部楼层
楼主16位加法器为啥要这么写?
回复 支持 反对

使用道具 举报

发表于 2013-10-25 13:43:22 | 显示全部楼层
回复 1# __Frank

大侠,你是写Gate RTL呢?还是行为RTL。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-25 20:55:49 | 显示全部楼层
回复 3# A1985


   行为级的。应该怎么修改?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-25 21:01:52 | 显示全部楼层
回复 3# A1985


   说错了。应该是用RTL 寄存器来描述。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-14 03:00 , Processed in 0.018644 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表