Verilog条件表达式

时间:2014-01-09 17:16:42

标签: verilog fpga

请有人帮我写这两个条件陈述 两者都应该给出相同的输出......例如:

如果我按照下面提到的方式写它,那就是给出输出 有很多延迟

if(count==3'd2 || i<=16'd8192) begin
  count = 3'd1;
  AL1   = x[i]+x[i+1];
  DL1   = x[i]-x[i+1];
  i     = i+2;
end
else begin
  count = count+1'd1;
  i     = 16'd0;
end

如果以这种方式编写代码,我会收到错误......

if (i<=16'd8192) begin
   if (count==3'd2) begin
     count = 3'd1;
     AL1   = x[i]+x[i+1];
     DL1   = x[i]-x[i+1];
     i     = i+2;
   end
   else begin
     count = count+1'd1;
   end
 else begin
   i       = 16'd0;
 end

请帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

问题是代码在功能上是不一样的还是语法错误?

这两个代码示例都有一个尾随end,我在格式化问题中的代码时已将其删除。

Verilogs开始if语句的结束语法是:

if ( condition a ) begin
  // a true
end
else begin
  // a false
end 

使用辅助嵌入条件,它将是:

if ( condition a ) begin
  if ( condition b ) begin
    // a & b true
  end
  else begin
    // a true b false
  end 
end
else begin
  // a false
end 

如果这是在编码时采用更严格的缩进样式的问题,将有助于发现这些错误。