EDA与VHDL作业(2)
来源:互联网 发布:淘宝店铺认证复核2017 编辑:程序博客网 时间:2024/05/01 20:18
(唉呀,这样的记录,好无聊啊,以后多记录点代码吧)
1.VHDL中有哪三种数据对象,详细说明它们的功能特点以及使用方法,举例说明数据对象与数据类型的关系
数据对象有常数,变量,信号三种。具体描述如下:
1、常数
常数的定义就是为了使程序更容易阅读和修改。在程序中,常数是一个恒定不变的值,一旦进行数据类型和赋值定义后,在程序中就不能再改变,因而具有全局性意义。一般表述如下:
CONSTANT 常数名:数据类型 := 表达式;例如:CONSTANT FBT : STD_LOGIC_VECTOR := "010110"; --定义常数为标准位矢类型CONSTANT DATAIN : INTEGER :=15;--定义常数位整数类型
注意:常数使用范围是有规定的,要看定义在哪个位置。这一点跟一般的程序语言类似,例如C语言。
2、变量
在VHDL中,变量是局部变量,只能在进程和子程序中使用。类似于一般程序语言中的顺序执行的赋值操作。主要作用是在进程中作为临时的数据存储单元。一般描述如下:
VARIABLE 变量名 : 数据类型 := 初始值;
实例:
VARIABLE a : INTEGER RANGE 0 TO 15; --变量a定义为整型,取值范围是0~15VARIABLE d : STD_LOGIC := '1'; --变量d定义为标准逻辑位数据类型,初始值是1
由于硬件电路上电后的随机性,综合器并不支持设置初始值。定义的初始值仅对仿真器是有效的。变量赋值的一般描述如下:
目标变量名 := 表达式;
示例:
VARIABLE x,y : INTEGER RANGE 15 DOWNTO 0;--分别定义变量x和y为整型VARIABLE a,b : STD_LOGIC_VECTOR(7 DOWNTO 0);x := 11; --整数直接赋值,这是因为x的类型是整数类型y := 2 + x; --运算表达式赋值,y也是整数变量a := b; --b向a赋值a(5 DOWNTO 0) := b(7 DOWNTO 2); --位矢量类型赋值
3、信号
信号是描述硬件系统的基本数据对象。信号可以作为设计实体中并行语句模块间的信息交流通道。信号的定义:
SIGNAL 信号名: 数据类型 := 初始值;
信号的语句形式与变量相似,不过与变量相比,信号具有全局性特征。例如:在实体中定义的信号(如端口),在其对应的结构体中都是可见的,即在整个结构体中的任何位置、任何语句结构中都能获得同一信号的赋值。(具体还有一些细节不做过多描述,可以在编写代码过程中体会)
在当信号定义好之后,设计过程中就可以对其赋值了。格式如下:
目标信号名 <= 表达式 AFTER 时间量; --AFTER是关键字,延时一定时间后才进行赋值,“时间量”就是具体的演示时间,如 AFTER 3 ns
注意:AFTER x ns 只对仿真有效。
在进程中可以允许同一信号有多个驱动源,即在同一进程中存在多个同名的信号被赋值,其结果只有最后的赋值语句被有效赋值。例如:
PROCESS (a,b,c) BEGIN y <= a + b; z <= c - a; y <= b;END PROCESS;
上例中,a,b,c 被列入进程敏感表,当进程被启动后,程序将自上而下的顺序执行,而y最终被赋值为b。
在并行语句对同一信号进行多次赋值时,表现在电路上就意味着“线与”。因此在并行语句中不允许对同一信号进行赋值,而结构体中的进程与进程之间都是并行执行的,因此两进程间不能对同一信号进行赋值,例如下面的语句是错误的:
PROCESS (a,b) BEGIN y <= a + b;END PROCESS;PROCESS (c,d) BEGIN z <= c - d; y <= d;END PROCESS;
数据类型与数据对象的关系:
VHDL的数据类型有(主要指预定义数据类型)有多种,它们各自为数据对象定义了一组取值的集合;
VHDL作为一种强类型语言主要表现在以下两方面:
(1)VHDL程序中任何数据对象都必须定义一个确定的数据类型,并由此限定此数据类型的取值范围。
(2)VHDL要求在信号赋值、算术运算、逻辑操作和数据比较等操作中数据对象的数据类型是相同的。
ps:还是老话,具体细节多多编程就明白了,也算时刻提醒我吧。
- EDA与VHDL作业(2)
- EDA与VHDL作业(5)- 2
- EDA与VHDL作业(1)
- EDA与VHDL作业(3)
- EDA与VHDL作业(4)
- EDA与VHDL作业(5)- 1
- EDA与VHDL作业(6)
- EDA(VHDL)数字钟
- EDA/VHDL基本概念
- EDA课程设计论文(VHDL语言)--数字钟
- EDA 第五章 VHDL设计进阶
- EDA第一次作业
- EDA第二次作业
- 高速EDA电路设计-作业一
- 高速EDA电路设计-作业二
- 高速EDA电路设计-作业三
- 2017秋-EDA-研-作业
- EDA课设-基于VHDL的简易出租车计价器设计
- 01 Hibernate测试
- linux中class_create和class_register说明
- Kaggle竞赛:泰坦尼克号灾难数据分析简单案例
- LeetCode
- 虚拟机文件共享
- EDA与VHDL作业(2)
- 火星车开发板”SDR Receiver分析说明
- 黑客丛林之旅
- Linux 下 C/C++ 静态库、动态库的区别
- poj2135-费用流&费用流模板-Farm Tour
- 392. Is Subsequence 双指针 简单
- VS2013 光标编程方块解决方法
- 软件工程:RUP
- 转圈游戏