微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 有一些问题困扰好久了,求大神解惑

有一些问题困扰好久了,求大神解惑

时间:10-02 整理:3721RD 点击:
1.reg变量不用复位信号赋值,那要怎么赋值?比如一个分频器,不想设复位信号,那怎么给计数变量赋初值?2.为什么要复位信号?复位信号有什么用?是不是只是单纯用于赋初值。
求达者解惑,我感觉我钻入牛角尖了。

复位信号是为了让系统回到初始状态。reg变量如果不是表示组合逻辑,是表示时序逻辑的话,是要加复位信号的,这样才能保证系统在最开始的时候,reg变量的初值是什么。另外仿真也需要复位信号,仿真中如果没有复位信号赋初值,那仿真的结果全部都是未定态、

定义这个reg变量的时候直接给它赋值就是初始值


这个我知道。我想问的就是要把代码下载到板上验证的话,那不是也要弄一个按键给复位信号那才能让整个系统开始工作,没按那个复位按键的话,系统是不是就不工作(状态机没有到初始态)。再者,做成实物芯片,比如说安防产品,有复位信号那不就失去了其原本的意义,例如电子密码锁,简单的一个报警,你一按那个复位按键让系统回到初始状态,报警状态没有持续被立即打断,这就失去了设置报警状态的意义。还是说,设置复位信号赋初始值和初始状态只是在设计仿真验证中用到?等真正流片时把复位信号删了?


我在网上查了,说是reg变量必须在always块里赋值。问老师,老师说在always块外面赋值的话,等下载到板上时就等于固定了那个变量,但是用modelsim进行功能仿真时发现即使在always块外面给reg变量赋值,等仿真时reg变量还是会变。不知道老师说的在always块外面赋值会将那个变量固定的意思是不是在综合时把那个变量给综合成固定值?我初学verilog,思想有些方面会被C程序影响,所以对这个给搞晕了。希望您帮我讲讲。

1.reg变量不用复位信号赋值,那要怎么赋值?比如一个分频器,不想设复位信号,那怎么给计数变量赋初值?2.为什么要复位信号?复位信号有什么用?是不是只是单纯用于赋初值。
1、reg初值跟器件有关,Xilinx器件触发器在芯片配置成功,GSR信号释放后,触发器值才能开始改变,配置期间值好像是0。所以你定义reg时,给不给初值是一样的。但是wire型变量是不能给初值的。
2、就是说FPGA配置成功后,FPGA内部会有个将所有状态清零的动作。仿真中你是看不到的。
   复位信号的用处是,当系统中存在多个期间或设备,各器件加载时间不一样,复位信号的作用就是让各器件都加载成功之后,再同时开始动作。防止某个器件先加载跑到某个状态之后,别的器件才开始工作。
3、系统必须要有复位信号,当系统达到某个功能,比如说安防报警功能后,不能说让他一直在那响然后必须断电才能恢复。再或者你系统工作不正常,而环境又不允许断电的情况下,可通过复位来解决。复位信号是系统稳定运行的保证,并非单纯的赋值。


懂了,谢谢您了。



   顺便问下  altra的开发板应该也是会在上电后对所有内部寄存器置值吧


这个跟开发板无关,跟你开发板使用的器件有关,具体情况你需要去查查datasheet,里面都有说明。

主要是系统要从没电到有电。

没有上电复位的话, reg中的数值是随机的,当然,你也可以专门写代码为reg幅值。
   对已分频电路来说,reg最好有上电复位,不然每次分频出来的时钟相位是未知的

我们的设计团队有个要求,尽量避免使用复位信号,保证自己的设计跑飞后可以自己恢复而不依靠复位


能否透露下简略的思路?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top