版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在系统可编程技术第10讲 VHDL语言的数据类型VHDL数据对象(Data Objects)Constant width: integer := 7;Constant Vcc: REAL:=5.0; Constant D2:Std_Logic_Vector(width Downto 0):= ”0000”;不能在程序中改变;增强程序的可读性,便于修改程序;常量的使用范围取决于其定义位置,可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定。1、常数(Constant)定义格式为:Constant 常数名:数据类型 :=表达式; 2、信号 信
2、号数据对象,代表电路内部线路,其在元件之间起互连作用,没有方向性,可给它赋值,也可当作输入。定义格式为: Signal 信号名:数据类型:=设定值; 如: Signal A : Std_logic_vector(3 Down to 0) := “0000”; 注意:设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。信号赋值语句的语法格式为: 目标信号名=表达式(设定值);A = “1010”VHDL数据对象(Data Objects)3、 变量 变量是一个局部量,用于对中间数据的临时存储,并不一定代表电路的某一硬件,没有物理意义。定义格式为:Variable 变量名:数据类型:=设
3、定值; 如:Variable a: integer := 0;变量赋值语句的语法格式为:目标变量名 := 表达式(设定值); 如: a := b and c;VHDL数据对象(Data Objects)信号、变量、常数对比一、定义Signal clk: std_logic; Variable data: std_logic_vector(7 downto 0);Constant width: integer :=7 ;二、赋值方式clk = 1; (非立即)data := “1010”; (立即)三、定义区域信号:实体、结构体、程序包变量:进程、子程序常数:实体、结构体、程序包、块、进程、子程
4、序四、适用范围信号:实体、结构体、程序包变量:定义了变量的进程、子程序的顺序语句中常数:视其定义的位置而定若常数定义在实体中,适用范围是实体所对应的所有结构体。若常数定义在结构体中,适用范围就是本结构体。信号、变量、常数对比信号赋值(非立即)信号和变量赋值区别举例Architecture abc of example is signal tmp:std_logic;Begin process(a,b,c) begin tmp=a; x=c and tmp; tmp=b; y=c and tmp; end process;End abc;变量赋值(立即)Architecture abc of e
5、xample isBegin process(a,b,c) variable tmp:std_logic; begin tmp:=a; x=c and tmp; tmp:=b; y=c and tmp; end process;End abc;执行结果:x=c and b y=c and b 执行结果:x=c and a y=c and b VHDL数据类型 1、逻辑数据类型 (1)布尔代数(Boolean)型 定义位置:在std库的standard程序包中进行定义。 取值:FALSE,TRUE (2)位(Bit) 定义位置:在std库的standard程序包中进行定义。 取值:0,1 (低电
6、平,高电平 )(3)位矢量(Bit_Vector) 定义位置:在std库的standard程序包中进行定义。 Signal A: bit_vector(0 to 7);Signal B: bit_vector(7 downto 0); A=“00001010”;B=“00001010”;VHDL数据类型 位矢量是基于“位”数据类型的数组A(7)=0 A(6)=1 A(5)=0 A(4)=1 A(3)=0 A(2)=0 A(1)=0 A(0)=0B(7)=0 B(6)=0 B(5)=0 B(4)=0 B(3)=1 B(2)=0 B(1)=1 B(0)=0(4)标准逻辑型(Std_Logic )
7、定义位置:在IEEE库的std_logic_1164程序包中进行定义 VHDL数据类型 使用这类数据信号,必须包含下面两条声明语句: Library IEEE;Use IEEE.std_logic_1164.all; “U”初始值“X”不定“0”0“1”1Z高阻“W”弱不定“L”弱0“H”弱1“-”忽略VHDL数据类型 该类型能比较全面地包括数字电路中信号的几种状态,比位“bit”信号对于数字逻辑电路的逻辑特性描述更完整、更真实。所以在VHDL的程序里,对于逻辑信号的定义,通常都是采用这个“标准逻辑”信号形式,不再使用“BIT”。(5)标准逻辑数组类型(Std_Logic_vector) 定义
8、位置:在ieee库的std_logic_1164程序包中进行定义。 Bit_Vector与Std_Logic_vector的区别在于数组的每一位前者为BIT型(0,1)后者为Std_Logic型Signal A: STD_LOGIC_VECTOR(0 to 7);Signal B: STD_LOGIC_VECTOR (7 downto 0); A=“10100000”;B=“00001010”;A(7)=? B(7)=?VHDL数据类型 逻辑数据类型赋值举例Variable a , b : std_logic;Signal data : std_logic_vector(0 to 3);a:
9、= 1;b: = 0;data=“1100”;一位值用单引号多位值用双引号1、直接整体赋值2. 段赋值Signal data : std_logic_vector(0 to 3);data(1 to 2) =“10”;data(0) =1;3. 块赋值Signal a,b,c,d : std_logic;Signal data : std_logic_vector(3 downto 0);data= “0100” ;(a,b,c,d) = bus ;位置关联逻辑数据类型赋值举例数值数据类型(1)整数(Integer) 定义位置:在std库的standard程序包中进行定义。即数值范围为-231
10、231。 整数不能用于逻辑运算,只能用于算术运算。 VHDL数据类型 Signal day: integer range 0 to 31;Variable a,b,c: interger;C=a+b;有符号类型数据代表有符号数值,即可以是正数,0,负数;编 译器将有符号数类型作为一个补码的二进制数,最左边的位为 符号位。无符号类型数据代表无符号数值,即代表0或正数;最左边的位为最高位。如:Unsigned(“0110”)代表 ;+6+ 10Unsigned(“1010”)代表如:signed(“0110”)代表+6;signed(“1010”)代表-2。VHDL数据类型 (2)无符号(Unsi
11、gned)和有符号(Signed)类型定义位置:有符号(Signed)和无符号(Unsigned)逻辑信号定义在库IEEE的程序包std_logic_arith中。字符串(STRING)数据类型双引号引起来字符串数组,一般用于程序的提示和结果说明,VARIABLE string_yin : STRING (1 TO 7 ) ;string_yin := a b c d ;字符(CHARACTER)数据类型单引号引起来,如:A a字符分大小写。A不等于aVHDL数据类型 时间(TIME)数据类型(仿真使用,不能综合)TYPE time IS RANGE 2147483647 TO 2147483
12、647 units fs ; - 飞秒,VHDL中的最小时间单位 ps = 1000 fs ; - 皮秒 ns = 1000 ps ; - 纳秒 us = 1000 ns ; - 微秒 ms = 1000 us ; - 毫秒 sec = 1000 ms ; - 秒 min = 60 sec ; - 分 hr = 60 min ; - 时end units ;VHDL数据类型 Q=a and b or c AFTER 10ns;用户定义的数据类型格式:TYPE 数据类型名 数据类型定义1、枚举类型格式:TYPE 数据类型名 IS(元素1,元素2,);例:TYPE week IS (sun,mon
13、,tue,wed,thu,fri,sat);2、数组类型格式: TYPE 数据类型名 IS ARRAY 范围 OF 原数据类型例:TYPE word IS ARRAY (0 TO 7) OF STD_LOGIC;3、记录Record Types相同或不同类型的元素组成,类似C中的结构描述总线或功能块 Type iocell is record Enable :bit; Data :bit_vector(7 downto 0); end record; singal bus : iocell; bus.Enable = 1; bus.Data = “00110110”;用户定义的数据类型用户定义
14、的子类型用户对已定义的数据类型,作一些范围限制而形成新的数据类型格式: SUBTYPE 子类型名 IS 数据类型名 范围例:SUBTYPE data IS STD_LOGIC_VECTOR(7 DOWNTO 0); SUBTYPE digit IS INTEGER RANGE 0 TO 9;能进行逻辑运算的数据类型:bit、bit_vector、boolean、 std_logic、std_logic_vectorVHDL语言的操作符(operator)一、逻辑操作符 signal d1,d2,s : integer; SIGNAL a ,b,c : STD_LOGIC_VECTOR (3 D
15、OWNTO 0) ; SIGNAL d,e,f,g : STD_LOGIC_VECTOR (1 DOWNTO 0) ; SIGNAL h,I,j,k : STD_LOGIC ; SIGNAL l,m,n,o,p : BOOLEAN ; . s=a and b; - integer 不能进行逻辑运算 a=b AND c; - a、b、c的数据类型同属4位长的位矢量 d=e OR f OR g ; - 两个操作符OR相同,不需括号 h=(i NAND j)NAND k ; - NAND必须加括号 l=(m XOR n)AND(o XOR p); - 操作符不同,必须加括号 h=i AND j AND k ; - 两个操作符都是AND,不必加括号 h=i AND j OR k ; - 两个操作符不同,未加括号,表达错误 a=b AND e ; - 操作数b与e的位矢长度不一致,表达错误 h=i OR l ; - 数据类型不同,表达错误。数据类型必须一致表达式中有多个运算符时一般要加括号,但and、or、xnor除外VHDL语言的操作符(operator)二、关系运算符 和/的操作对象可以是任何数据类型构成的操作数。 其它关系运算符对数据类型有一定的限制。(整数、实数、枚举型、位矢量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司股权激励方案模版
- 公司科技对外担保管理制度
- 锅炉专业考试知识复习题库
- 学前儿童发展心理学(学前教育专业)全套教学课件
- 高等教育心理学试题及答案(高校教师资格考试)
- 2024年浙江省宁波市鄞州区八年级(下)期末数学试卷含答案
- 保险理赔管理系统全球前10强生产商排名及市场份额(by QYResearch)
- FZ∕T 95006-2012 普通轧车行业标准
- 主题押题12:成长篇(十篇)-备战2024年中考语文作文考前抢分模板与素材范文
- 山东省郓城县联考2024届中考模拟考试联考物理试题含解析
- 小学语文阅读提速策略的教学 论文
- 2024年江西文化演艺发展集团有限责任公司招聘笔试参考题库含答案解析
- 2024年浙江杭州市综合交通中心招考工作人员高频考题难、易错点模拟试题(共500题)附带答案详解
- 安全员岗前培训
- 歌尔社招人才测评试卷
- 家具现代化智能制造工厂项目经济效益和社会效益分析报告
- 依法信访工作培训课件
- 《自动化仪表与过程控制》课件2.1 压力的检测及仪表
- 2024年北京中考记叙文阅读专题03 小说阅读(含答案解析)
- 展厅方案汇总
- 人民银行征信报告样本
评论
0/150
提交评论