关于reg型变量赋初值的问题
时间:10-02
整理:3721RD
点击:
我查了下网上比较通用的两种赋初值的方式,一种是直接定义时候赋值,一种是通过reset赋值今天看vivado简明教程里面有这样一句话,截图下来

不是很理解这句话什么意思

不是很理解这句话什么意思
没见过这种赋值方式。
如果是仿真使用,可以使用initial语句。
是设计中用的赋值,这种赋初值是可以的,没懂为什么不可以用reset赋值
在FPGA中可以这样设置上电的初始值(但不推荐这样的方法,在稍微大些的系统中,可能会因为各种异常经常做软/硬复位,有时有些信号不能被复位就会导致电路异常,只能重新上电了,如果设备用在不方便断电的地方,那就无比郁闷了)。
至于为什么不可以用RESET赋值,就需要看电路的具体应用场景了,比如这个模可能在使用中会经常被复位,但又不希望这个信号被复位。
同意vongy的观点,补充一点,不用reset复位还有一个原因可能是为了降低reset信号的扇出。
明白了 非常感谢~
因为xilinx的fpga架构的特殊性,xilinx的设计模式建议使用赋初始值的方式来实现全局同步复位初始化,不建议使用异步复位信号
这是由赛灵思FPGA芯片结构决定的。因为很多的逻辑都是由SLICE等逻辑资源搭建起来的,有的寄存器并没有自己的复位控制,所以需要使用其他的资源去完成,本来可能只需要一个slice的使用复位之后可能就需要使用很多的slice,这样就造成逻辑资源的浪费。而且复位信号太多 容易造成扇出过大,影响性能。
不赞成使用复位,在代码设计的时候,尤其是数据流没有反馈应用的环境里,能不使用复位就不使用。
系统复杂度提高,要靠代码设计去完成系统的自恢复能力。
复位会浪费走线资源,降低资源使用率.
同意此观点
