Vivado寄存器初始值问题
前言
本复位只针对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寄存器初始值问题的更多相关文章
- C++类成员默认初始值
有时候我们会不给C++类成员变量赋初始值,或是因为忘记在构造函数中指定(C++11可以写在类内),或是觉得没有必要写.然而,因为觉得编译器会把变量赋成0而不写是错误的.本文通过C++标准来解释这个问题 ...
- Bash 什么时候会给 HOME 赋初始值
今天无意发现下面这个表现: $ env -i bash -c cd bash: line 0: cd: HOME not set $ env -i bash -c 'echo $HOME' 这表明了 ...
- Holt-Winters原理和初始值的确定
关于模型 (来自以下PPT,从第4页开始) 关于初始值: 以下文档给出了三个模型的初始值计算的思路. 大致思路如下,建立一个p阶移动平均模型,估计出参数即为初始值,具体的根据三种不同的模型,有 ...
- 关于int,integer初始值问题
- C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析与解决方法
对于C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析,目前本人分析两种情况,如下: 情况一: 借鉴麒麟.NET ...
- Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence
Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence 使用oracle11g插入数据时遇到这样一个问题: 1 --创建测试表-- 2 CREATE T ...
- malloc error:初始值设定元素不是常量
#include <stdio.h> #include <stdlib.h> char *buf = (char *)malloc(BUFSIZ); setbuf(stdout ...
- “System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常---解决方案
"System.Data.SqlClient.SqlConnection"的类型初始值设定项引发异常 问题出在了 .net 的C:\WINDOWS\Microsoft.NET\Fr ...
- Access自动编号的初始值设置及重置编号
项目上需要在Access数据库,发现自动编号的列无法设置初始值和步长,但是可以使用SQL语句来设置它. 方法如下: ALTER TABLE tableName ALTER COLUMN ID COUN ...
随机推荐
- 当桌面的快捷方式图标左下角出现一个X(叉)的时候应该怎么去掉
win+r打开运行,然后复制粘贴如下命令就OK辣 cmd /k reg delete "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f &a ...
- 企业信息化-Excel快速生成系统
企业信息化,主要是指对企业生产运营过程所形成的信息数字化,最终形成了数字资产.大型企业为了节约成本,提高协同工作效率,都会定制ERP.办公OA.流程审批等系统做信息化支撑.但是中小企业精力投入到生成中 ...
- 从零学习Flutter(一):初识Dart
Fluter是Google推出的跨平台开发App的一套框架,很多人都说,Google出品比属于金品,故,我也来凑凑热闹,Fluter是用Dart写的,所以在用Fluter之前,我们还是有必要简单了解一 ...
- Ext.grid.panel 改变某一行的字体颜色
grid.getStore().addListener('load', handleGridLoadEvent); function handleGridLoadEvent(store, record ...
- Linux安装配置vsftp搭建FTP的详细配置
这里主要是说vsftp的配置:基础的可以参考Linux中VSFTP的配置 转自:https://www.jb51.net/article/103904.htm 修改配置文件 配置文件/etc/vsft ...
- AngularJS学习之旅—AngularJS Table(十一)
1.AngularJS 表格 1. ng-repeat 指令可以完美的显示表格 AngularJS 实例 <!DOCTYPE html> <html> <head> ...
- C# -- 结构、访问修饰符
C# -- 结构.访问修饰符 1. 结构: struct 类型 对于结构,不像类那样存在继承. 一个结构不能从另一个结构或类继承,而且不能作为一个类的基. 但是,结构从基类 Object 继承. 结构 ...
- HTML,CSS---问题记录
1,,登录框input和标签垂直方向对不齐,咋解决? 给input框外套一层span标签,给span标签设置宽高,让它和左边或右边的标签对齐. 不要直接给input设置宽高,这样是对不齐的 2,套没有 ...
- Node、TS、Koa学习笔记
这样定义可以轻松拿到gender属性 这样定义,函数内显示没有gender 这种方法能得到gender但是函数内部没有gender 这种方式能到gender 但是在函数里施symbel属性,外部不能访 ...
- SpringBoot四大核心
auto-configuration.starters.cli.actuator