首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在verilog中使用if语句

如何在verilog中使用if语句
EN

Stack Overflow用户
提问于 2015-03-11 20:49:22
回答 1查看 14K关注 0票数 0

我在使用verilog来实现这个问题上是个彻头彻尾的灾难,但是这个问题已经困扰了我一个小时,我无法解决它!

这是我的密码

代码语言:javascript
复制
genvar i;
assign eq=1; 
assign gr=0;
generate for(i=7 ; i>=0 ; i=i-1)
        initial begin
        if(eq&&~gr)
            if (a[i]&~b[i])
              initial begin
               assign gr=1;
               assign eq=0;
              end
            else if (~a[i]|b[i])
            initial begin
              assign gr=0;

    assign eq=0;
    end
    end
endgenerate

这个想法是创建一些if语句,这样我就可以比较ai和bi,如果gr是0,eq是1。算法是不能改变的,因为它是一个赋值,我必须这样做,但我真的很想知道问题在哪里(verilog的错误描述根本没有帮助)

EN

回答 1

Stack Overflow用户

发布于 2015-03-11 21:53:58

  • generate块用于在编译/精化时复制硬件。
  • initial块在0时只运行一个。对ab的更改不会产生任何影响。嵌套initial块是非法的。
  • assign语句不应在initial块中使用(这是合法的,但非常不鼓励,并考虑折旧)。通常,对一个网络的非三状态assign应该只执行一次.
  • 对于连续的评估,需要使用always

最好的猜测,这就是你想要的功能:

代码语言:javascript
复制
integer i;
reg eq,gr; 

always @* begin
  for (i=7 ; i>=0 ; i=i-1) begin
    if (eq&&~gr) begin
      if (a[i]&~b[i]) begin
        gr=1;
        eq=0;
      end
      else if (~a[i]|b[i]) begin
        gr=0;
      end
    end
    eq=0;
  end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28997067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档