高质量VerilogHDL描述方法

刚刚初学veriloghdl的时候,感觉语言风格很像c语言,编程也是完全用软件的思想去写,但是使用过fpga和学习了数集之后,才醒悟出何为“硬件思想”,本节主要介绍一下西交邱志雄老师一门课中的veriloghdl描述方法。
veriloghdl可综合的四大法宝:always、if-else、case、assign ,本文将围绕这四大法宝来讲述。
有可综合的法宝,那么可综合风格禁止出现的情况:function、for、fork-join、while等。
** if-else的硬件映射及优化**
01
if-else的映射硬件结构是多路选择器multiplexing hardware(简称mux)。
我们来看看上面的第一段代码,我们心中要出现该代码描述的电路,该电路由两个加法器和一个mux组成。
接下来我们看第二段代码:
该段代码描述的电路应该是两个mux和一个加法器组成:
两段代码描述的功能都一样,但是电路面积却不一样,第二段代码描述的电路少了一个加法器多了一个mux,在同一个工艺库下,二输入mux的晶体管数量比一位半加器少,因此第二段代码描述的电路减少了硬件的面积。
从面积的角度看,第二段代码更优,但是真的可以说第二段代码比第一段代码好吗?很显然,一般这么问,答案都为否定。
我们从传播延迟的角度再来分析一下这两个电路:
1、左图的数据通道的延迟是一个加法器和一个mux,控制通道的延迟是一个mux。
2、右图的数据通道的延迟依然是一个加法器和一个mux,控制通道的延迟却是一个加法器和一个mux。
很显然第二段代码描述电路(右图)的控制通道延迟比较大,如果aflag到来的延迟比较晚的话,那么第二种电路的性能就会比第一种差。
综上所述,在设计的时候要根据输入约束,再来选择两种不同的设计:是先加后选,还是先选后加。
** if的优先级问题**
02
多if语句具有优先级的判断结构,即输入信号是有不平等关系的,最后一级选择信号具有最高优先级,具有优先级的多选结构会消耗组合逻辑,而且这种写法比较乱,一般不推荐这种写法。(case语句是无优先级的)
但是在某些设计中,有些信号要求先到达(如关键使能信号、选择信号等),而有些信号需要后到达(如慢速信号、有效时间较长的信号等),此时则需要用if...if... 或者 if...else if...结构,一般最高优先级给最迟到的关键信号。
电路之大敌——latch
03
latch由电平触发,非同步控制,所以非常 容易产生毛刺(glitch) ,这是很大的危害,这对于下一级电路是极其危险的,而且静态时序分析会变得极为复杂,因此只要能用d触发器的地方就不用latch。
易引入latch的途径:使用不完备的条件判断语句,如if缺少else,case缺少default。
逻辑复制 均衡负载
04
通过逻辑复制,降低关键信号的扇出,进而降低该信号的传播延迟,提高电路的性能。
资源共享 减小面积
05
如果电路中存在较多的公共单元,可以通过资源共享,来减小电路的面积,但是一般来说,共享会降低电路性能,所以还是要根据性能和面积而进行取舍。
逻辑重组 降低延时
06
在电路设计中,可以根据信号的延时,对这些资源进行顺序的重排,以降低传播延时。如下图所示,信号a延迟比较高,可以把它尽可能地放到后面隐藏其延迟。
逻辑赋值
07
在时序电路中必须使用非阻塞赋值(<=), 组合逻辑电路必须使用阻塞赋值(=)。

浅谈不锈钢卡压式管件的三种防渗水加工工艺构造
全球最大的合同芯片制造商台积电宣布了其8月份的收入
华为官宣:EMUI 11系统用户数已经突破1亿
HiFi级音质的TWS耳机是怎样炼成的?
SDN网络对云来说意味着什么
高质量VerilogHDL描述方法
关于罗氏线圈在有源滤波中的应用分析
集中介绍几款头戴式VR设备
如何通过Hi-Mesh进行组网透传
冰山下的三星:放任,或许会导致三星手机在中国消亡
变电所运维云平台在山东某电力科技有限公司的设计与应用
土壤墒情测定仪是什么,它的主要作用是什么
帮您了解制造业的命脉所在,工业设计的重中之重究竟是什么?
中国将成为多接入边缘计算规模最大的区域市场
新基建将如何推动5G产业的发展
三星S7/S7edge安卓7.0推送更新,姗姗来迟的惊喜!9大更新值得升级
日本夏普太阳能电池获IEEE里程碑奖
工业控制(工控)
浅谈自然语言处理技术的应用领域
日本电气股份有限公司(NEC Corp.)推出了一种新的人脸识别系统