首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

verilog程序中的一个小问题

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语句)才行.请问这是什么原因啊.谢谢各位指导.

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

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

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

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

这样就一样了。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
返回列表