打印

verilog编程风格与优化

[复制链接]
1379|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fineamy|  楼主 | 2008-7-21 13:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
sample1:
引用:
always @(ilut_index[7:0])
begin
if(ilut_index[7]) begin
      ron = 1;
  end
else if(ilut_index[6]) begin
     ron = 1;  
end 
else if(ilut_index[5]) begin
     ron = 1;   
end
else if(ilut_index[4]) begin
     ron = 1;
end
else if(ilut_index[3]) begin
     ron = 1;  
end 
else if(ilut_index[2]) begin
     ron = 1;   
end
else if(ilut_index[1]) begin
     ron = 1;   
end
else begin
     ron = 0;  
end
end
sample2:
引用:
always @(ilut_index[7:0])
begin
if(ilut_index[7] == 1'b1) begin
      ron = 1;
  end
else if(ilut_index[7:6] == 2'b01) begin
     ron = 1;  
end 
else if(ilut_index[7:5] == 3'b001) begin
     ron = 1;   
end
else if(ilut_index[7:4] == 4'b0001) begin
     ron = 1;
end
else if(ilut_index[7:3] == 5'b00001) begin
     ron = 1;  
end 
else if(ilut_index[7:2] == 6'b000001) begin
     ron = 1;   
end
else if(ilut_index[7:1] == 7'b0000001) begin
     ron = 1;   
end
else begin
     ron = 0;  
end
end
sample3:
引用:
always @(ilut_index[7:0])
begin
if(ilut_index[7] == 1'b1) begin
      ron = 1;
  end
if(ilut_index[7:6] == 2'b01) begin
     ron = 1;  
end 
if(ilut_index[7:5] == 3'b001) begin
     ron = 1;   
end
if(ilut_index[7:4] == 4'b0001) begin
     ron = 1;
end
if(ilut_index[7:3] == 5'b00001) begin
     ron = 1;  
end 
if(ilut_index[7:2] == 6'b000001) begin
     ron = 1;   
end
if(ilut_index[7:1] == 7'b0000001) begin
     ron = 1;   
end
else begin
     ron = 0;  
end
end

sample4:
always @(ilut_index[7:0])
begin
if((ilut_index[7] == 1'b1)         ||
   (ilut_index[7:6] == 2'b01)      ||
   (ilut_index[7:5] == 3'b001)     ||  
   (ilut_index[7:4] == 3'b0001)    ||
   (ilut_index[7:3] == 3'b00001)   ||
   (ilut_index[7:2] == 3'b000001)  ||
   (ilut_index[7:1] == 3'b0000001) begin
      ron = 1;
  end
  else begin
     ron = 0;
  end
  end
sample5:
引用:
always @(ilut_index[7:0])
begin
casex (ilut_index[7:0])
8'b1xxx_xxxx : ron = 1;
8'b01xx_xxxx : ron = 1;
8'b001x_xxxx : ron = 1;
8'b0001_xxxx : ron = 1;
8'b0000_1xxx : ron = 1;
8'b0000_01xx : ron = 1;
8'b0000_001x : ron = 1;
default : ron = 0;
endcase
end
sample6:
引用:
always @(ilut_index[7:0])
begin
casex (ilut_index[7:0])
8'b1xxx_xxxx ,
8'b01xx_xxxx ,
8'b001x_xxxx , 
8'b0001_xxxx ,
8'b0000_1xxx ,
8'b0000_01xx ,
8'b0000_001x : begin
   ron = 1;
end
default: ron = 0;
endcase
end
上面代码等效
问题:
  1.请问上面几种风格优略如何?
  2.从综合角度,速度及门数方面有没区别,请作一比较?

相关帖子

沙发
walnutcy| | 2008-8-2 08:40 | 只看该作者

估计后两种会好一些,

IF语句如果没写完,可能会综合出锁存器,而case,casex一般不会,都是组合逻辑电路,

其实这些你都可以自己综合一下,看看综合结果进行比较就好,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

59

帖子

1

粉丝