FPGA之道(26)VHDL初始化
文章目录
- VHDL初始化
- 未初始化的信号会对芯片的行为有什么影响
- 初始化与仿真
- 如何初始化
VHDL初始化
未初始化的信号会对芯片的行为有什么影响
信号最终都会对应到存储单元或者连线上,对于组合逻辑的信号,在FPGA上的归属应该是连线,而对于时序逻辑的信号,在FPGA上的归属上应该是寄存器、查找表、块存储等存储单元。
对于连线类的信号,是否初始化对于芯片的行为几乎没有影响,因为芯片一上电后,整个FPGA的输入就由客观环境确定了,那么的连线被高电平驱动源驱动就是高电平,被低电平驱动源驱动就呈现低电平。而不会因为你给信号赋了初值而影响这个结果,否则这也就不是一个组合逻辑了。
对于类似寄存器类的存储单元信号,如果不赋初值的话,不同FPGA芯片型号的默认的上电状态会不同。有的是上电自动存储高电平,有的是自动存储低电平。由于时序逻辑的运算结果很多时候是和当前存储单元中存储的数值有关的,所以这类信号如果未赋初值,很可能造成设计在不同的芯片上运行结果的不同,这是比较危险的。
当然了,也许有的编译器或者芯片型号不支持赋初值的操作,那么这个时候一定要注意复位逻辑的编写。
初始化与仿真
初始化与仿真是息息相关的,无论是连线类还是存储类的信号,若没有初始化,在仿真的一开始都会出现不可确定的波形,如果是std_logic类型的话,就会显示’U’。
对于连线类信号,只要在后续给定输入,那么输出端的连线还是能够回归正常结果的。
但是对于存储类的信号,例如寄存器,如果这个寄存器存在反馈,例如:
signal a : std_logic;
process(clk)
beginif(clk'event and clk = '1')thena <= not a;end if;
end process;
那么对于a信号,仿真器将永远不可能给出确定的仿真结果。
如何初始化
初始化一般是在定义时,配合“:=”赋值符号进行的,例如:
signal a : std_logic := '1'; variable b : integer := 512;port(…
c : in std_logic_vector(3 downto 0) := "1010";
…);
对于数组类型的信号,参考如下方法:
type rt is array (1 downto 0) of std_logic_vector (7 downto 0);
signal r0: rt := (X"11", X"88");
FPGA之道(26)VHDL初始化相关推荐
- FPGA之道(38)VHDL与Verilog的比较
文章目录 前言 VHDL与Verilog的比较 语法比较 基本程序框架比较 端口定义比较 范围表示方法比较 元件调用与实例化比较 Process与always比较 标准逻辑类型比较 逻辑常量赋值比较 ...
- FPGA之道(34)Verilog初始化与操作符号
文章目录 前言 Verilog初始化 Verilog的操作符号 Verilog赋值运算符 连续赋值符号 阻塞赋值符号 非阻塞赋值符号 映射赋值符号 位置赋值 Verilog按位运算符 ~ & ...
- FPGA之道(24)VHDL数据类型
文章目录 前言 VHDL数据类型 常用数据类型 逻辑数据类型 std_logic std_logic_vector boolean bit bit_vector 数值数据类型 integer real ...
- FPGA之道(31)VHDL编写注意事项
文章目录 前言 VHDL编写注意事项 大小写不敏感 VHDL中的关键字 多余的符号 纠结的downto 与to 数组范围混用 逻辑向量范围混用 范围中的变量 仿真雷区 进程敏感量表缺失 进程间语句顺序 ...
- FPGA之道(30)编写自己的vhdl库文件
文章目录 前言 编写自己的vhdl库文件 Work库 记录数据类型 子程序介绍 函数 过程 子程序使用总结 程序包 自定义程序包范例 前言 本文节选自<FPGA之道>来一起学习下高阶Ver ...
- FPGA之道(28)VHDL的并行语句
文章目录 前言 VHDL的并行语句 VHDL直接信号赋值语句 VHDL条件式信号设置语句 VHDL选择式信号设置语句 VHDL进程语句 时钟事件表示方法 纯组合process 纯时序process 具 ...
- FPGA之道(22)VHDL基本程序框架
文章目录 前言 VHDL基本程序框架 VHDL基本程序框架模板 Library Entity Architecture 声明与定义部分 语句部分 VHDL基本程序框架范例 VHDL注释语法 前言 VH ...
- (26)FPGA计数器设计(VHDL代码实现)
(26)FPGA计数器设计(VHDL代码实现) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA计数器设计(VHDL代码实现) 5)结语 1.2 FPGA简介 F ...
- FPGA之道(84)功能仿真之Verilog Test Fixture
文章目录 前言 Verilog Test Fixture "Hello world"之Verilog Test Fixture 待仿真设计 仿真示例 示例详解 仿真结果 继承描述语 ...
最新文章
- python3 通过 pybind11 使用Eigen加速
- 测试面试题集锦(五)| 自动化测试与性能测试篇(附答案)
- js-比较两个日期的大小
- Mac OS 看机起动JIRA
- 在线邮箱订阅反馈html5模板
- es6 Babel 转码器对修饰器的支持
- 解决windows预览体验计划页面空白问题
- PostgreSQL数据库 OLTP高并发请求性能优化
- 自动驾驶如何处理突发状况?
- 程序员你知道被迫参与一个两亿的项目,想跑还逃不掉吗?
- 小米入局区块链,究竟是为了什么?
- MyEclipse或Eclipse导出JavaDoc中文乱码问题解决
- 详测 Generics Collections: TObjectList、TObjectQueue、TObjectStack
- centos8干净卸载mysql
- 有些软件,听着听着就没了...
- ps ctrl+shift+j 切割瓶子
- 有源晶振引脚接法是什么样的?
- SpringBoot成长笔记(一)环境搭建
- vue 数据传输加密、加签、数字信封应用
- arm电子相册项目——项目要求篇(描述功能)
热门文章
- Linux下简单的邮件服务器搭建
- Symfony2Book16:Symfony2内部02-内核
- VS2010数据库项目不能正常工作解决方案
- c语言链表程序框图,C语言课程设计————写下流程图! 谢谢
- 查看ngnix使用的php.ini位置_修改Nginx php.ini文件的经典教程
- countif函数比较两列不同_COUNT函数家族的使用(下篇)
- python比较excel表格内容并提取_python 实现excel数据的提取和整理
- python制作ios游戏_python自动化生成IOS的图标
- js中计算中文长度方法
- linux 安装redis2.8.3,centos7下安装Redis2.8版本步骤