不同verilog代码的RTL视图

刚开始玩cpld/fpga开发板的时候使用的一块基于epm240t100的板子,alter的这块芯片虽说功耗小体积小,但是资源还是很小的,你写点稍微复杂的程序,如果不注意coding style,很容易就溢出了。当时做一个三位数的解码基本就让我苦死了,对coding style的重要性也算是有一个比较深刻的认识了。
后来因为一直在玩xilinx的spartan3 xc3s400,这块芯片资源相当丰富,甚至于我在它里面缓存了一帧640*480*3/8byte的数据都没有问题(vga显示用)。而最近接触epm7128,它的资源似乎也不丰富,我写着写着有时不注意就无法布线了。由此可见coding style对设计的重要性,尤其是在资源紧张或者速度要求较高的设计中。我个人对前者的体会深一些,高速的设计没有涉及过,只是明白一些用流水线提高速度的方法。
可以步入正题了,先拿一段简单的代码开始吧。我先提一点,这回我用的是quartus ii 7.0进行测试,其它的eda工具综合出来的rtl视图可能会不一样,所以仅作为在quartus ii 7.0环境下的一些参考吧。不过思路是一样的,可以借鉴的。
ex1:
input[1:0] xin;
output dout;
assign dout = (xin == 2'b0);
代码很简单,就是当xin==2’b0时dout=1,否则dout=0。上面这段程序的rtl视图如下:
其实就是一个比较器,如果xin=2’h0,那么输出out就为1。和设想一样。
下面是我在参考一些别人的代码的时候看到别人一种常见的写法,它是用了?语句。
input[1:0] xin;
output dout;
assign dout = (xin == 2'b0) ? 1'b1:1'b0;
rtl如下:
是不是发现多了以一个选择器(可能不叫选择器吧,但是你明白意思就可以),这样平白无故的就多耗用了一点资源,刚开始的时候我也是傻乎乎的跟着别人用这种写法,但是看到rtl视图后我就不这么干了,既然前者一样可以得到预期结果,为什么我还要画蛇添足多一个选择器呢。所以,推荐使用前者。资源的节约是潜移默化的~_~
(先说一点吧,其它的待我想起或者是感悟到了再提吧,以上也完全是我的个人愚见,如有不妥之处欢迎拍砖~_~)

特斯拉汽车添加新技能 传感器可识别画面
图像尺寸测量仪怎么测量
变压器的冲击合闸试验目的
热继电器的选择方法和使用事项有哪些
莱迪思为加速产品开发提供大量机器视觉处理器的MIPI I/O
不同verilog代码的RTL视图
回顾苹果自研CPU偷用技术事件
利用德州仪器毫米波占用传感器设计智能、高效节能的空调
我国成功研制1.8米太阳望远镜实现首光
2020年全球动力电池装机量达137GWh,宁德时代卫冕冠军
为什么智能蓝牙在工业应用中意义重大?
如何使用树莓派和BitTorrent Sync构建自己的云存储
nRF24L01+RF模块教程
索尼随身听缔造个人移动音乐的小精灵
基于USB控制器设计的Windows音量控制器
手机、VR双驱动_推升宏达电第1季整体营运
四家台商被指是协助华为关键企业或进入美方黑名单
用Proteus8.9自带STM32F401VE的Controller仿真STM32F407ZGT6,F429IGT6
日置电机:深耕中国测试测量市场
荣耀V9评测:华为荣耀V9想要快,就现在!