热度 31
2013-3-19 16:17
5390 次阅读|
12 个评论
最近在学习FPGA,遇到一个棘手的问题,就是FPGA的寄存器类型变量如何赋初值问题。 在网上找了些论坛看了下,总结如下: 1、有的FPGA(后期带有内部RAM的)可以直接在定义reg类型时赋初值,如reg led_out = 4'b1100; 而有的FPGA(早期产品)不支持这种赋初值方法,上电后reg一般会有默认的全1或全0. 2、想要FPGA的寄存器上电即有初值, 对可直接赋初值的FPGA有两种方法,一种是直接在定义reg类型变量时直接赋初值,另一种是利用上电复位信号对FPGA寄存器回归初值。(其实如果此reg类型定义的是状态机的一种状态,还可以让状态机自动回归。) 对不支持直接赋初值的FPGA则只有利用上电复位信号对FPGA回归到初值了。 个人意见,如果想要程序移植性好,就需要适应以上所述的两种FPGA,所以为了保证程序可靠性而应该统一用上电复位信号来将寄存器回归初值。 但是我比较迷惑的是这个上电复位信号怎么产生呢。 这样又有两种情况: 1、FPGA采用被动配置方式时,可以在配置完成后配置其的MCU等再发个rst信号给FPGA来个复位,寄存器回归初始状态。 2、FPGA采用主动配置方式时,上电信号信号怎么给?如果用上电复位芯片有点不可靠,因为复位芯片复位完成后FPGA还不一定配置完成呢。那这种情况下怎么办? 这就是我的问题,麻烦各位大神说说自己平时的做法。