前言

本复位只针对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. CTSC 2018酱油记

    Day0 5.5 花了一上午的时间把codechef div2的前四题切了,又在zbq老司机的指导下把第五题切了 中午12:00 gryz电竞组从机房出发,临走的时候看到很多学长挺恋恋不舍的,毕竟可能 ...

  2. Android WebView的HTML中的select标签不起作用

    Android WebView的HTML中的select标签不起作用 经过查询资料,了解到android对html里的select标签是弹出一个原生的选择器. 问题: Webview中的select没 ...

  3. Windows Java包环境变量的设置

    复制Bin文件所在路径 验证

  4. win快捷键

    ******************键盘快捷键大全******************  一.常见用法: F1 显示当前程序或者windows的帮助内容. F2 当你选中一个文件的话,这意味着“重命名 ...

  5. FPGA配置OV5640摄像头及RGB图像数据采集

    本文设计思想采用明德扬至简设计法.在做摄像头数据采集处理之前,需要配置OV5640传感器内部寄存器使其按要求正常工作,详细内容请参见<OV5640自动对焦照相模组应用指南>.首先要关注OV ...

  6. nginx内置变量总结

    nginx内置变量 2019-02-28 变量名称 变量用途 $atg_PARAMETER      客户端GET请求中   PARAMETER字段的值                        ...

  7. Elixir 简介

    概述 Elixir 是一种基于 Erlang 虚拟机的函数式,面向并行的通用语言, 它是一门通用语言,所以不仅可以用在擅长的高可用,高并发场景下,也可以用在 web 开发等场景下. Erlang 诞生 ...

  8. nmap比较详细的使用方法

    nmap 信息收集工具 -sP 192.168.1.0/24  区域网内存活主机扫描  -O 192.168.1.1    获取操作系统 nmap -sS -sV baidu.com    -sS 使 ...

  9. 错误ERROR datanode.DataNode (DataXceiver.java:run(278)) - hadoop07:50010DataXceiver error processing unknown operation src:127.0.0.136479 dst:127.0.0.150010

    原因: Ambari 每分钟会向datanode发送"ping"连接一下去确保datanode是正常工作的.否则它会触发alert.但是datanode并没有处理空内容的逻辑,所以 ...

  10. ios自动打包-fastlane 安装、使用、更新和卸载

    ios自动打包使用fastlane 1.首先安装xcode 首先检查是否已经安装 Xcode 命令行工具,fastlane 使用 xcodebuild 命令进行打包,运行 xcode-select - ...