0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你们怎么去设定寄存器的初始值

FPGA技术驿站 来源:Teacher Gao 作者:Teacher Gao 2021-04-01 10:27 次阅读

对于寄存器,如果没有明确指定其初始值,Vivado会根据其类型(FDCE/FDRE/FDPE/FDRE)设定合适的初始值。有些工程师喜欢使用复位信号,对所有的寄存器进行上电复位,使其在处理数据之前达到期望初始状态。但这会有一个不利之处就是复位信号的扇出很大,从而消耗了大量的布线资源,甚至造成布线拥塞。那么能不能让寄存器在上电之后不用通过复位就输出期望值呢?答案是肯定的。

Xilinx也建议对于同步元件,最好设定其初始值。这里我们以最常用的寄存器为例。如果使用的是VHDL,可以采用下面的方法设定寄存器初始值,如下图所示。

ccd385aa-923c-11eb-8b86-12bb97331649.png

如果使用的是Verilog,可以采用下面的方法设定寄存器初始值,如下图所示。

ccdf4f48-923c-11eb-8b86-12bb97331649.png

此外,对于Verilog,也可通过initial设定初始值,如下图所示。

ccedec4c-923c-11eb-8b86-12bb97331649.png

采用这种方法的好处是:综合工具是支持的,这样生成bit文件时这些初始值会被写入配置文件中,上电即可生效,避免了使用复位造成的扇出过大;同时在仿真时,也能跟实际业务相匹配。 为了验证这个方法是否生效,只需要打开综合后的.dcp,找到相应的寄存器,在其Property窗口中查看属性INIT的值,如下图所示。

ccff28e0-923c-11eb-8b86-12bb97331649.png

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5377

    浏览量

    121396
  • 上电复位
    +关注

    关注

    1

    文章

    39

    浏览量

    15869
  • init
    +关注

    关注

    0

    文章

    16

    浏览量

    3459

原文标题:如何设定寄存器的初始值?

文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用ads1298时,部分寄存器读写不正常,为什么?

    你好,我在使用ads1298时遇到了如下问题,希望可以解答: (1)部分寄存器读写不正常,在寄存器读写测试中我对所有寄存器进行读写操作,包括读初始值,写入读出操作,发现ID
    发表于 02-13 08:24

    ADS1298 CONFIG2读取初始值不正常是什么原因引起的?

    你好,我从贵公司申请了几片ADS1298的芯片,使用后发现以下问题:1。芯片ID,CONFIG2读取初始值不正常2。前四个通道控制寄存器读写正常,后四个通道寄存器无法读写,请问是否出现过类似情况,望尽快回复,谢谢
    发表于 02-13 08:02

    AFE5801到底怎么读TGC registers寄存器组的

    大家好,请教你们AFE5801的一个问题。AFE5801在配置了SPI读使能之后,我读出的地址到底是general-purpose registers的还是TGC registers的?因为这两组
    发表于 02-11 07:54

    ads124s08把AIN0端口接入的采集电压断开或者接通,芯片的寄存器所有配置都变成默认的初始值了,为什么?

    题是我把AIN0端口接入的采集电压断开或者接通,芯片的寄存器所有配置都变成默认的初始值了,整个芯片进行复位。我不知道这个是原因。下面是我的连接图。
    发表于 12-13 07:06

    ADS1263初始化后,读取的寄存器都为0,为什么?

    ADS1263初始化后,读取的寄存器都为0,这是为什么?
    发表于 12-09 07:03

    AFE4404没有接外部时钟,4404寄存器的为初始值,能够通过IIC修改寄存器吗?

    1、首先AFE4404寄存器默认使用外部时钟,CLK引脚是否必须要先接一个时钟,通过修改寄存器改为内部时钟,然后再停止外部时钟?? 2、假如没有接外部时钟,4404寄存器的为
    发表于 12-06 06:35

    使用ADS1256的8个Single-Ended输入采集压力传感数据,压力传感空载时AIN0-AIN7 8个通道初始值不是直线,为什么?

    最近使用ADS1256的8个Single-Ended输入采集压力传感数据,发现在压力传感空载的时候,AIN0-AIN7 8个通道的初始值不是一条直线, 而是有规律地被拉低,刚好
    发表于 12-04 07:45

    Modbus协议的读取保持寄存器

    功能码用于读取从设备保持寄存器的内容,不支持广播模式。消息顿中指定了需要读取的保持寄存器的起始地址和数目。而保持寄存器中各地址的具体内容和意义则由设备开发者自行规定。
    的头像 发表于 10-30 10:54 1953次阅读

    详解寄存器模型镜像

    DUT的配置寄存器是实际,reg_model有镜像、期望的概念。
    的头像 发表于 10-23 09:43 424次阅读
    详解<b class='flag-5'>寄存器</b>模型镜像<b class='flag-5'>值</b>

    TAS5733L按照初始化的寄存器配置,播放音乐无声是怎么回事?

    按照贵司提供的初始化的寄存器配置(如附件)设置,读取0x05,0x06也是设定。播放音乐此时仍然无声。 请问,是否还有额外的寄存器需要
    发表于 10-21 07:41

    寄存器是什么意思?寄存器是如何构成的?

    在计算机科学中,寄存器(Register)是一个高速存储单元,它位于中央处理(CPU)内部,用于存储计算机程序执行过程中所需要的数据、指令地址或状态信息。寄存器是计算机体系结构中至关重要的组成部分,对计算机的运算速度和性能有着
    的头像 发表于 08-02 18:23 5038次阅读
    <b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何构成的?

    寄存器寻址和直接寻址的区别

    寄存器寻址和直接寻址是计算机指令系统中的两种基本寻址方式。它们在指令的执行过程中起着至关重要的作用,决定了指令操作数的来源和目标。下面我们将介绍这两种寻址方式的特点、区别以及在实际应用中的优缺点
    的头像 发表于 07-12 10:42 2536次阅读

    寄存器寻址的实现方式

    在计算机体系结构中,寄存器寻址是一种常见的寻址方式,它允许程序直接访问CPU内部的寄存器寄存器寻址可以提高程序的执行效率,因为它避免了对内存的访问。 寄存器寻址的基本概念
    的头像 发表于 07-12 10:36 897次阅读

    寄存器分为基本寄存器和什么两种

    寄存器是计算机中用于存储数据的高速存储单元,它们是CPU内部的重要组成部分。寄存器可以分为基本寄存器和扩展寄存器两种类型。 一、基本寄存器
    的头像 发表于 07-12 10:31 1658次阅读

    干货满满:ARM的内核寄存器讲解

    内核寄存器与外设寄存器: 内核寄存器与外设寄存器是完全不同的概念。内核寄存器是指 CPU 内部的寄存器
    发表于 04-17 11:47 4440次阅读
    干货满满:ARM的内核<b class='flag-5'>寄存器</b>讲解