4数据类型数据对象
更新时间:2023-08-14 22:16:01 阅读量: 人文社科 文档下载
ξ4 VHDL语言的数据类型及运算操作符
常量 数据对象 变量 信号 标准数据类型
数据类型
自定义数据类型算术
运算操作符
逻辑 关系 并置
4.1 数据对象(Data Object)及其分类凡是可以赋予一个值的对象称为数据对象。类(CLASS) 数据对象 数据类型(DATA TYPES)、 名字(NAME)。 类(CLASS):信号( signal ),变量( variable ),常量 ( constant ) 类型(DATA TYPES):位、位矢量、std、整数、实数等
例: 类 对象 数据类型 signal a: bit;
数据对象的分类:信号、变量、常数。 常数:表示物理设计中那些不变的量 信号:表示物理设计中的某一条硬件连接线,也可 以表示寄存器。 变量:电路暂存某些值的载体
数据对象的特征:允许被赋值、具有一定的数据类型 对象仅在其说明区域可见,区域外不可见
例:作用域为整个构造体的客体的定义ARCHITECTURE rtl Of name IS SIGNAL a:BIT; BEGIN …………………………. END rtl;
在构造体中的任何位置,都可以使用这个信号a。
4.1.1 常数:在设计描述之中不会变化的值 物理含义:可以代表数字电路中的电源、接地、计数 器模值等
CONSTANT 常数名:数据类型:=表达式; 常数所赋的值应和所定义的数据类型一致 例:CONSTANT Vcc:real:=“0101”;
错误,因为所赋的值与所定义的数据类型不一致, 一个为实数,一个为位矢量。例:CONSTANT Vcc:real:=5.0;
4.1.2 变量(variable)
变量仅仅用于进程和子程序,是一个局部量,作用范 围仅限于定义该变量的模块。 说明格式如下: VARIABLE 变量名:数据类型:=表达式; 变量的赋值采用“:=”,赋值后立即生效。 变量可以在定义时被赋初值;也可以在进程中被赋值 例:变量在定义时赋值 VARIABLE B:INTEGER:=1;
例:变量在进程中被赋值PROCESS(……) variable A:BIT_VECTOR; BEGIN …………. A:=”01010”; …………. END PROCESS;
对于综合来说,变量通常用于计算的目的,但
它的综合比较难于定义,或者综合后占用大量的资源。因此,在设计中尽量避免采用变量。除非 在那些我们有信心可预言结果的场合。
4.1.3 信号(signal) 信号能够代表连线,是电子电路内硬件连接的抽象 声明内部信号 没有数据流动方向 SIGNAL 信号名:数据类型 :=表达式; 例:SIGNAL COUNT:BIT:= 0 ; 信号在定义时赋初值,用“:=”代入符 在程序中,信号的赋值采用“<=”代入 符
例:SIGNAL S1,S2:STD_LOGIC; …… S2<= 1 ; S1<=S2; 信号的代入可以附加延时 例如:signal count:bit:= 0 after 10ns; 信号可以在程序中被重新赋值
4.2 运算操作符 按优先级的顺序依次(低到高)为:
逻辑运算符(Logical) 关系运算符(Relational)
并置运算符(Concatenation) 算术运算符(Arithmetic)。
要求操作数的类型必须和操作符所要求的类型一致。
4.2.1 逻辑运算符(Logical)
1、逻辑运算符(Logical)取反 NOT 与 AND 或 OR 与非 NAND 或非 NOR 异或 XOR
2、逻辑运算符的操作对象“STD_LOGIC”; “BIT”; “STD_LOGIC_VECTOR”; “布尔量”(Boolean)
没有优先级差别,按自左至右的优先级顺序运算。例:下式去掉括号就会产生错误: X<=(A AND B) OR (NOT C AND D); 去掉括号: X<=A AND B OR NOT C AND D;
以上两式的运算次序是完全不同的。
逻辑运算符常用于书写逻辑表达式
例:entity and2 is port(a,b,c,d:in bit; q:out bit); end and2;architecture rtl of and2 is begin q<=(a and b) or (c nand d); end rtl;
4.2.2 关系运算符(Relational)
1、关系运算符( Relational )等于 = 不等于 /= 小于 < 小于等 于 <= 大于 > 大于等 于 >=
2、操作对象 1)“=”和“/=”适用于所有类型的数 据。 2)其它关系运算符则适用于 “STD_LOGIC”; “INTEGER”; “REAL”; “STD_LOGIC_VECTOR”
比较时,按自左至右的比较结果作为运算结果。 例:下式比较就会产生错误 X<=“1010”;——10 Y<=“111”;——7 IF (X>Y) THEN… 上式比较结果为Y>X。显然错误。
关系运算符常用于条件的判断 例:最大值选取,输入a(4),b(4),输出q(4) library ieee; use ieee.std_logic_1164.all;entity max is port(a,b:in std_logic_vector(3 downto 0); q:out std_logic_vector(3 downto 0)); end max;
architecture rtl of max is begin q<=a when (a>b) else b; end rtl;
4.2.3 并置运算符(Concatenation)
并置运算符&:用于位的连接 操作对象 “STD_LOGIC”;“BIT”; “STD_LOGIC_VECTOR”; “BIT_VECTOR”; “STD_ULOGIC_VECTOR”;
例:a<=”1010”; b<=”1001”; c<=a & b 结果为:c=”10101001”。
4.2.4 算术运算符(Arithmetic)加 + 减 — 低 高 乘 * 除 / 求模 求余 正 MO D RE M + 负 — 指数 绝 对 值 ** ABS
(优先级顺序)
对std_logic_vector类型的对象进行算术运算时,要 用“use ieee.std_logic_unsigned”提前声明包集合。 该类型只适用于“*”操作,整数型integer适用于所 有。
例:利用算术运算符设计一个矢量乘法器,输入 a(4),b(4),输出q(4) library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity mult is port(a,b:in std_logic_vector(3 downto 0); q:out std_logic_vector(7 downto 0)); end mult; architecture rtl of mult is begin q<=a * b; end rtl;
正在阅读:
4数据类型数据对象08-14
学做一道菜作文450字07-13
南开大学微生物专业历年生物化学试题04-05
上甘岭 - 中国人在此01-27
2019届七年级上册:3.1《字母表示数》优秀导学案(含03-11
《八识规矩颂》讲记 - 于凌波居士01-18
2014新产品推广宣传策划书05-15
- 粮油储藏基础知识
- 论文范文(包括统一封面和内容的格式)
- 经典解题方法
- 综合部后勤办公用品管理办法+领用表
- 学生宿舍突发事件应急预案
- 16秋浙大《生理学及病理生理学》在线作业
- 四分比丘尼戒本(诵戒专用)
- 浙江财经大学高财题库第一章习题
- 九大员岗位职责(项目经理、技术负责人、施工员、安全员、质检员、资料员、材料员、造价员、机管员)
- 旅游财务管理习题(学生版)
- 德阳外国语高二秋期入学考试题
- 投资学 精要版 第九版 第11章 期权市场
- 控制性详细规划城市设计认识
- bl03海运提单3国际贸易答案
- 2010-2011学年湖北省武汉市武珞路中学七年级(上)期中数学试卷
- VB程序填空改错设计题库全
- 教师心理健康案例分析 - 年轻班主任的心理困惑
- 民间借贷司法解释溯及力是否适用?
- 三联书店推荐的100本好书
- 《化工原理》(第三版)复习思考题及解答
- 数据
- 对象
- 类型
- 职业生涯规划人物访谈
- 2014政法干警申论热点必读:解析中央全面深化改革关键内容(1)
- 开展创先争优活动推进大会讲话稿
- {人力资源工作分析}综采工作面瓦斯易积聚原因分析讲义(一)
- 中考复习之三角函数的综合运用
- 中国玉雕大师名单
- 2010西方经济学导学 综合练习
- 评语小学优秀生评语
- XXXXXX公司蜡烛泡(7W220V)不良品分析报告
- 中考英语短语大全
- 国际真菌毒素大会
- 河海大学听力原文7
- 国画展宣传文案
- 13年春 北航《航空航天概论》在线作业一、二、三
- 硫化氢ppm和mgm3单位转换
- 第六单元第二节 昆虫的生殖和发育
- 技师职业资格申请表(安徽省)
- 2017中国传媒大学艺术与科学考研辅导班有哪些
- 深圳经济特区企业员工社会养老保险条例(2006年修正本)
- 经济社会用水情况调查及工作要求