Board logo

标题: verilog程序中的一个小问题 [打印本页]

作者: sudahai    时间: 2007-8-11 08:41     标题: verilog程序中的一个小问题

程序如下:

module updowncnt8(d,load,ena,clk,clr,updown,q,cout);
input[7:0] d;
input load,ena,clk,clr,updown;
output[7:0] q;
output cout;
reg[7:0] q;
//reg  cout;
always@(posedge clk)
   begin
    if(~clr)
      begin
       q='b00000000;//cout='b0;
      end
    else if(ena)
         begin
          if(load) q=d;
          else if(updown==0)
                 begin
                 q=q+1;
                // cout=|q;

                 end
               else
               begin
              
               q=q-1;
               //cout=&q;
               end
           end
     end
assign cout=(~updown)?&q:|q;
endmodule
      

我的目的是让cout记录进位和借位,被我注释掉的是我的原程序(原程序中没assign语句),但不能达到目的,该成现在这样(即使用assign语句)才行.请问这是什么原因啊.谢谢各位指导.


作者: caopengly    时间: 2007-8-19 22:15

“我的目的是让cout记录进位和借位,被我注释掉的是我的原程序(原程序中没assign语句),但不能达到目的,该成现在这样(即使用assign语句)才行.请问这是什么原因啊”

你的程序通过两种方法可以到达目的,而且是一样的,只不过在逻辑上有一点问题,就是

assign cout=(~updown)?&q:|q;
应为

assign cout=(updown)?&q:|q;

这样就一样了。






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0