微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA/CPLD设计无复位输入,内部寄存器初值是怎样的?

FPGA/CPLD设计无复位输入,内部寄存器初值是怎样的?

时间:10-02 整理:3721RD 点击:
最近一款设计,FPGA/CPLD无输入复位pin,那么一上电后,有人说内部寄存器是默认值为零
但本人一直没有得到权威资料证实,请大家帮忙,谢谢!



    reg xxx = 0;
在你声明寄存器的地方
至于默认值,我记得altera芯片上电是零,在altera官网上下“推荐代码风格”,上面有



    verilog 可以声明寄存器时定义初值吗?VHDL有这个功能,verilog我还从来没这么用过!
    非常感谢您的及时帮助!

从语言上是不可能做到没有复位就赋初值的,你说的设置应该是工具针对芯片内部进行的处理。如果按一般来说,初始状态都是未知的。



    自己写逻辑做一个RST



  您说的可以做,别的项目我做过,但上电后寄存器初值问题我一直想搞明白.



    做一堆有复位的FF去采一堆无复位的FF,输出到管脚,你就知道了。



    上电后是不定态。在项目里面,很少见没有复位的。

thanks

xilinx是有约束去确保初值的
默认初值是0

上电寄存器初值是随机的,不一定全是零,亲身体会。办法是自己做一个内部复位。

感谢大家的回复,我目前是采用quartus 内部设置实现的。
首先将quartus 综合属性 Power up Dont care 改成off,默认是on
然后在代码中将需要赋初值的寄存器赋初值,比如:
reg [7:0] dma_ctrl_reg = 8'h00 ;
大家觉得这种方式如何?

初值是由配置电路完成的,bit导放之后,配置电路会对寄存器进行初值配置,由声明时的值决定。
如果你电路中使用rst信号对信号进行初始化,相当于重复做了一次。

    如果无复位,且不声明初值,则配置电路如何配置?一个8位寄存器会配置成8‘hff,还是8’h00?

Xilinx使用SRINT0/SRINT1设置DFF的初始值,默认为SRINT0,即复位后默认为0.具体可参见芯片的数据手册。

看来一定要复位了
有的混合芯片没有复位的是怎么做的?

FPGA一般都有个全局复位端,上电时有效

    需要在器件属性上做设置吧?请指教

应该不用专门设置,有管脚就是主要做这个全局复位的。

Xilinx 的寄存器初始值也是 0

xlinx 器件内部寄存器的初始值是不定的 最好自己设置一个内部复位信号

    不记得有全局复位管脚。


记得有些芯片是有的.有专门的复位信号树给各个寄存器的.路径上也有不同的.

上电之后没有复位之前寄存器应该是不定态。

我也遇到这样的问题,现在在设计一个ic的复位电路模块,但是感觉没有复位使能信号,内部寄存器不能初始化

要看初值对你的设计有影响不
1、无影响,只是打拍什么的,不关心
2、有影响,最好使用工具约束一个初值。

看了大家的发言 感觉还是有些不清楚 有没有人可以对这个问题做个系统的讲解? 虽然是老帖子了,挖一下,希望更多人可以看到,然后可以获得更多解答。

在你声明寄存器的地方
至于默认值,我记得altera芯片上电是零,在altera官网上下“推荐代码风格”,上面有

原来我看过说是reg赋初值是不能被综合的,即使赋了初值上电后没有复位信号回归也是不定状态。没有试过,可以测试下。

不确定

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

网站地图

Top