前言

本复位只针对Vivado中的寄存器复位。

什么时候需要复位?到底要不要复位?怎么复位?复位有什么卵用?

该复位的寄存器需要复位,复位使得寄存器恢复初始值,有的寄存器并不需要复位(数据流路径上)。

官方说法如下:具体可查看ug949。

流程

所以,问题来了,为了不使用复位信号该怎么赋初始值。

注意:reg语句中给寄存器赋初始值,在FPGA上电配置后值就为这个初始值。

如果只有复位语句中的初始值,那么上电配置(configuration )后和复位(reset)后寄存器都为此初始值。

如果reg语句给了初始值x1,且在复位语句中赋初始值x2,那么上电配置后初始值为x1,复位后寄存器初始值为x2。

代码验证:

1.如下代码,不复位也不赋初始值,vivado综合后寄存器初始值全为0。

(*DONT_TOUCH="yes"*)reg [:] r_cnt_1;
always @(posedge i_clk)
begin
r_cnt_1 <= r_cnt_1 + 'd1;
end //always

2.如下代码,不复位赋初始值,vivado综合后寄存器初始值为代码中赋的初始值。

(*DONT_TOUCH="yes"*)reg [:] r_cnt_1 = 6'h34;
always @(posedge i_clk)
begin
r_cnt_1 <= r_cnt_1 + 'd1;
end //always

3.如下代码,使用复位但不给初始值,vivado综合后寄存器初始值为代码中复位语句中赋的初始值。(Xilinx不推荐异步复位)

(*DONT_TOUCH="yes"*)reg [:] r_cnt_0;
always @(posedge i_clk,negedge i_rst_n)
begin
if (~i_rst_n)
r_cnt_0 <= 'h12;
else
r_cnt_0 <= r_cnt_0 + 'd1;
end //always

4.如下代码,既使用复位且给初始值,vivado综合后寄存器初始值为reg赋的初始值。

(*DONT_TOUCH="yes"*)reg [:] r_cnt_2 = 'h01;
always @(posedge i_clk,negedge i_rst_n)
begin
if (~i_rst_n)
r_cnt_2 <= 'h12;
else
r_cnt_2 <= r_cnt_2 + 'd1;
end //always

另一个问题,vivado综合寄存器初始值怎么查看?

(1)打开综合后的工程。

(2)在网表中查看,不过只能单个点击查看。。。。

(3)在properties窗口中查看初始值如下,右侧可以更改初始值(没使用过。。)

以上。

Vivado寄存器初始值问题的更多相关文章

  1. C++类成员默认初始值

    有时候我们会不给C++类成员变量赋初始值,或是因为忘记在构造函数中指定(C++11可以写在类内),或是觉得没有必要写.然而,因为觉得编译器会把变量赋成0而不写是错误的.本文通过C++标准来解释这个问题 ...

  2. Bash 什么时候会给 HOME 赋初始值

    今天无意发现下面这个表现: $  env -i bash -c cd bash: line 0: cd: HOME not set $ env -i bash -c 'echo $HOME' 这表明了 ...

  3. Holt-Winters原理和初始值的确定

      关于模型 (来自以下PPT,从第4页开始)   关于初始值: 以下文档给出了三个模型的初始值计算的思路. 大致思路如下,建立一个p阶移动平均模型,估计出参数即为初始值,具体的根据三种不同的模型,有 ...

  4. 关于int,integer初始值问题

  5. C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析与解决方法

    对于C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析,目前本人分析两种情况,如下: 情况一: 借鉴麒麟.NET ...

  6. Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence

    Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence 使用oracle11g插入数据时遇到这样一个问题: 1 --创建测试表-- 2 CREATE T ...

  7. malloc error:初始值设定元素不是常量

    #include <stdio.h> #include <stdlib.h> char *buf = (char *)malloc(BUFSIZ); setbuf(stdout ...

  8. “System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常---解决方案

    "System.Data.SqlClient.SqlConnection"的类型初始值设定项引发异常 问题出在了 .net 的C:\WINDOWS\Microsoft.NET\Fr ...

  9. Access自动编号的初始值设置及重置编号

    项目上需要在Access数据库,发现自动编号的列无法设置初始值和步长,但是可以使用SQL语句来设置它. 方法如下: ALTER TABLE tableName ALTER COLUMN ID COUN ...

随机推荐

  1. 【Vue 2.x】指令的学习

      v-on作用于事件,简写@ v-bind作用于html元素的属性,简写: v-for作用于模板内的变量,和C#的foreach类似的用法 v-if和v-show条件渲染html元素 v-model ...

  2. 环境设置——pyCharm环境下导入MySQLdb遇到的一系列问题

    本文转自http://blog.sina.com.cn/s/blog_135031dae0102yc8l.html 安装好pyCharm后想要import MySQL,结果发现了一系列问题,像推到了塔 ...

  3. spring学习总结——高级装配学习一(profile与@Conditional)

    前言: 在上一章装配Bean中,我们看到了一些最为核心的bean装配技术.你可能会发现上一章学到的知识有很大的用处.但是,bean装配所涉及的领域并不仅仅局限于上一章 所学习到的内容.Spring提供 ...

  4. Axure RP 8 注册码

    升级了8.1.0.3377版本后,需要使用下面这组注册码 许可:zdfans.com 重点:gP5uuK2gH + iIVO3YFZwoKyxAdHpXRGNnZWN8Obntqv7 ++ FF3pA ...

  5. 常用SMTP地址

    1.QQ邮箱(mail.qq.com) POP3服务器地址:pop.qq.com(端口:110) SMTP服务器地址:smtp.qq.com(端口:25) 2.搜狐邮箱(sohu.com): POP3 ...

  6. Cs231n课堂内容记录-Lecture 7 神经网络训练2

    Lecture 7  Training Neural Networks 2 课堂笔记参见:https://zhuanlan.zhihu.com/p/21560667?refer=intelligent ...

  7. 关于clone(java.lang.Object)重写

    1. 需要实现接口java.lang.Cloneable 2. 重写java.lang.Object的clone 3. clone访问权限扩大为public 4. 不实现(java.lang.Clon ...

  8. python3 shell 中添加清屏

    在windows中: 安装目录 \Lib(  D:\Python37\Lib) 中添加 ClearWindow.py 文件,文件内容: """ Clear Window ...

  9. hello随笔

    初次来到博客园,都试一下 我明白了,随笔就是博客咯.日记自对自己可见.再试试分类吧

  10. java常用问题排查工具

    一:jstack找到最耗cpu的线程并定位代码 1.ps -ef|grep java 或者 jps -l 得到进程pid 2.找到该进程内最耗cpu的线程,我一般使用: top -Hp pid 3.c ...