verilog编程风格与优化

[复制链接]
 楼主| fineamy 发表于 2008-7-21 13:13 | 显示全部楼层 |阅读模式
sample1:<br />引用:<br />always&nbsp;@(ilut_index[7:0])<br />begin<br />if(ilut_index[7])&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;end<br />else&nbsp;if(ilut_index[6])&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;<br />end&nbsp;<br />else&nbsp;if(ilut_index[5])&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;<br />end<br />else&nbsp;if(ilut_index[4])&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;<br />end<br />else&nbsp;if(ilut_index[3])&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;<br />end&nbsp;<br />else&nbsp;if(ilut_index[2])&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;<br />end<br />else&nbsp;if(ilut_index[1])&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;<br />end<br />else&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />end<br />end<br />sample2:<br />引用:<br />always&nbsp;@(ilut_index[7:0])<br />begin<br />if(ilut_index[7]&nbsp;==&nbsp;1'b1)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;end<br />else&nbsp;if(ilut_index[7:6]&nbsp;==&nbsp;2'b01)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;<br />end&nbsp;<br />else&nbsp;if(ilut_index[7:5]&nbsp;==&nbsp;3'b001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;<br />end<br />else&nbsp;if(ilut_index[7:4]&nbsp;==&nbsp;4'b0001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;<br />end<br />else&nbsp;if(ilut_index[7:3]&nbsp;==&nbsp;5'b00001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;<br />end&nbsp;<br />else&nbsp;if(ilut_index[7:2]&nbsp;==&nbsp;6'b000001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;<br />end<br />else&nbsp;if(ilut_index[7:1]&nbsp;==&nbsp;7'b0000001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;<br />end<br />else&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />end<br />end<br />sample3:<br />引用:<br />always&nbsp;@(ilut_index[7:0])<br />begin<br />if(ilut_index[7]&nbsp;==&nbsp;1'b1)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;end<br />if(ilut_index[7:6]&nbsp;==&nbsp;2'b01)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;<br />end&nbsp;<br />if(ilut_index[7:5]&nbsp;==&nbsp;3'b001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;<br />end<br />if(ilut_index[7:4]&nbsp;==&nbsp;4'b0001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;<br />end<br />if(ilut_index[7:3]&nbsp;==&nbsp;5'b00001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;<br />end&nbsp;<br />if(ilut_index[7:2]&nbsp;==&nbsp;6'b000001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;<br />end<br />if(ilut_index[7:1]&nbsp;==&nbsp;7'b0000001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;<br />end<br />else&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />end<br />end<br /><br />sample4:<br />always&nbsp;@(ilut_index[7:0])<br />begin<br />if((ilut_index[7]&nbsp;==&nbsp;1'b1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||<br />&nbsp;&nbsp;&nbsp;(ilut_index[7:6]&nbsp;==&nbsp;2'b01)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||<br />&nbsp;&nbsp;&nbsp;(ilut_index[7:5]&nbsp;==&nbsp;3'b001)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;(ilut_index[7:4]&nbsp;==&nbsp;3'b0001)&nbsp;&nbsp;&nbsp;&nbsp;||<br />&nbsp;&nbsp;&nbsp;(ilut_index[7:3]&nbsp;==&nbsp;3'b00001)&nbsp;&nbsp;&nbsp;||<br />&nbsp;&nbsp;&nbsp;(ilut_index[7:2]&nbsp;==&nbsp;3'b000001)&nbsp;&nbsp;||<br />&nbsp;&nbsp;&nbsp;(ilut_index[7:1]&nbsp;==&nbsp;3'b0000001)&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;end<br />&nbsp;&nbsp;else&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;end<br />&nbsp;&nbsp;end<br />sample5:<br />引用:<br />always&nbsp;@(ilut_index[7:0])<br />begin<br />casex&nbsp;(ilut_index[7:0])<br />8'b1xxx_xxxx&nbsp;:&nbsp;ron&nbsp;=&nbsp;1;<br />8'b01xx_xxxx&nbsp;:&nbsp;ron&nbsp;=&nbsp;1;<br />8'b001x_xxxx&nbsp;:&nbsp;ron&nbsp;=&nbsp;1;<br />8'b0001_xxxx&nbsp;:&nbsp;ron&nbsp;=&nbsp;1;<br />8'b0000_1xxx&nbsp;:&nbsp;ron&nbsp;=&nbsp;1;<br />8'b0000_01xx&nbsp;:&nbsp;ron&nbsp;=&nbsp;1;<br />8'b0000_001x&nbsp;:&nbsp;ron&nbsp;=&nbsp;1;<br />default&nbsp;:&nbsp;ron&nbsp;=&nbsp;0;<br />endcase<br />end<br />sample6:<br />引用:<br />always&nbsp;@(ilut_index[7:0])<br />begin<br />casex&nbsp;(ilut_index[7:0])<br />8'b1xxx_xxxx&nbsp;,<br />8'b01xx_xxxx&nbsp;,<br />8'b001x_xxxx&nbsp;,&nbsp;<br />8'b0001_xxxx&nbsp;,<br />8'b0000_1xxx&nbsp;,<br />8'b0000_01xx&nbsp;,<br />8'b0000_001x&nbsp;:&nbsp;begin<br />&nbsp;&nbsp;&nbsp;ron&nbsp;=&nbsp;1;<br />end<br />default:&nbsp;ron&nbsp;=&nbsp;0;<br />endcase<br />end<br />上面代码等效<br />问题:<br />&nbsp;&nbsp;1.请问上面几种风格优略如何?<br />&nbsp;&nbsp;2.从综合角度,速度及门数方面有没区别,请作一比较?
walnutcy 发表于 2008-8-2 08:40 | 显示全部楼层

估计后两种会好一些,

IF语句如果没写完,可能会综合出锁存器,而case,casex一般不会,都是组合逻辑电路,<br /><br />其实这些你都可以自己综合一下,看看综合结果进行比较就好,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

59

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

14

主题

59

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部