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

    文章

    5590

    浏览量

    129092
  • 上电复位
    +关注

    关注

    1

    文章

    43

    浏览量

    16143
  • init
    +关注

    关注

    0

    文章

    16

    浏览量

    3666

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    智能显示模块怎么在显示工程中给寄存器设置初始值?我想给变量一个上电的默认该如何设置?

    智能显示模块怎么在显示工程中给寄存器设置初始值?我想给变量一个上电的默认该如何设置?
    发表于 12-06 10:20

    【NCS随笔】nRF54L15使用UICR寄存器保存数据

    (NVM)寄存器,用于配置用户特定的设置 注意所有 UICR 寄存器都具有 RW1 保护,只能写入一次,需要再写的话必须要擦除Erase All 默认复位为 0xFFFFFFFF 这个是是
    的头像 发表于 11-27 17:09 1117次阅读

    NVMe高速传输之摆脱XDMA设计32:寄存器功能验证与分析2

    寄存器最大为 64’hFFFFFFFFFFFFFFFF,到达最大后一个时钟周期后翻转回 0, 在随机时刻使用 force 将寄存器赋值临近最大
    的头像 发表于 10-14 17:06 468次阅读
    NVMe高速传输之摆脱XDMA设计32:<b class='flag-5'>寄存器</b>功能验证与分析2

    NVMe高速传输之摆脱XDMA设计31: 寄存器功能验证与分析1

    寄存器初始值、 读写操作测试、 边界测试、 功能测试等。(1) 初始值测试结果全局计数寄存器
    发表于 09-30 10:01

    使用寄存器点亮LED灯

    学习本章时,配合以上芯片手册中的“19. I/O Ports”章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。本章内容涉及到较多寄存器方面的深入内容,对于初学者而言这些内容丰富也较难理解,但非常有必要细读研究、夯实基础。
    的头像 发表于 05-28 17:37 1048次阅读
    使用<b class='flag-5'>寄存器</b>点亮LED灯

    如何用C语言操作寄存器——瑞萨RA系列FSP库开发实战指南(10)

    由于寄存器的数量是非常之多的,如果每个寄存器都用像*((uint32_t*)(0x40080000+0x0020*1))这样的方式访问的话,会显得很繁琐、很麻烦。为了更方便地访问寄存器
    的头像 发表于 04-22 15:30 1672次阅读
    如何用C语言操作<b class='flag-5'>寄存器</b>——瑞萨RA系列FSP库开发实战指南(10)

    使用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

    用51单片机实现与LDC1000的通讯,读取proximity data两个寄存器里面的都是0x00,为什么?

    大家的帮助。 另外说一下,我们没有改其他寄存器初始值,因为我们现在只想能读出proximity data 里面的数,精不精确还不重要。另外芯片所需要的TBCLK时钟频率是用51单片机定时实现的。频率大约100kHZ 求大家帮
    发表于 01-13 07:41

    ADS1255读写寄存器不对是哪里出了问题?

    进去再经串口显示出来。但是无论是读ADS1255寄存器初始值也不对,读经过写之后的也不对。 无论是第一次读,还是写后再读,都是显示一些255 63 253等等的数值(255居多
    发表于 01-10 16:21

    使用AFE031芯片通过SPI接口进行寄存器的读写,不能读出来AFE031寄存器上的,为什么?

    使用AFE031芯片,通过SPI接口进行寄存器的读写,只能给寄存器,不能读出来AFE031寄存器上的,芯片AFE031的
    发表于 01-10 09:26

    将LDC1000配置了0X0B寄存器,各寄存器都变成了相应寄存器的Deffault,为什么?

    我将LDC1000各寄存器配置后,当不配置0X0B,即传感处于待机状态时,单片机读回来各寄存器是正常的,但当配置了0X0B寄存器,即
    发表于 01-02 07:41

    TPS80032寄存器手册

    电子发烧友网站提供《TPS80032寄存器手册.pdf》资料免费下载
    发表于 12-21 09:08 0次下载
    TPS80032<b class='flag-5'>寄存器</b>手册

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

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