第五章VHDL语言的对象和数据类型及运算操作符

上传人:公**** 文档编号:587358247 上传时间:2024-09-05 格式:PPT 页数:29 大小:307.53KB
返回 下载 相关 举报
第五章VHDL语言的对象和数据类型及运算操作符_第1页
第1页 / 共29页
第五章VHDL语言的对象和数据类型及运算操作符_第2页
第2页 / 共29页
第五章VHDL语言的对象和数据类型及运算操作符_第3页
第3页 / 共29页
第五章VHDL语言的对象和数据类型及运算操作符_第4页
第4页 / 共29页
第五章VHDL语言的对象和数据类型及运算操作符_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《第五章VHDL语言的对象和数据类型及运算操作符》由会员分享,可在线阅读,更多相关《第五章VHDL语言的对象和数据类型及运算操作符(29页珍藏版)》请在金锄头文库上搜索。

1、第第5章章 VHDL语言的对象和数据类语言的对象和数据类型及运算操作符型及运算操作符EDAEDA技术讲义技术讲义5.1 VHDL文字规则文字规则5.1.1 数字数字 整数:整数:整数都是十进制的数,如:5, 678, 0, 156E2(=15600), 45_234_287 (=45234287) 实数:实数:实数也都是十进制的数,但必须带有小数点,如:1.335, 88_670_551.453_909(=88670551.453909),1.0,44.99E-2(=0.4499) 以数制基数表示的文字:以数制基数表示的文字:用这种方式表示的数由五个部分组成。SIGNAL d1,d2,d3,d

2、4,d5 : INTEGER RANGE 0 TO 255;d1 = 10#170# ; - (十进制表示,等于十进制表示,等于 十进制十进制 170)d2 = 16#FE# ; - (十六进制表示,等于十六进制表示,等于 十进制十进制 254)d3 = 2#1111_1110#; - (二进制表示,等于二进制表示,等于 十进制十进制 254)d4 = 8#376# ; - (八进制表示,等于八进制表示,等于 十进制十进制 254)d5 = 16#E#E1 ; - (十六进制表示,等于十六进制表示,等于 十进制十进制 224) 物理量文字物理量文字(VHDL综合器不接受此类文字)。如:60s

3、(60秒秒), 100m (100米米), k (千欧姆千欧姆), 177A (177安培安培)EDAEDA技术讲义技术讲义5.1 VHDL文字规则文字规则5.1.2 字符串字符串(2)文字字符串)文字字符串(3)数位字符串)数位字符串用单引号括起来的ASCII字符,如:R,a,1,-B:二进制基数符号,表示二进制位二进制基数符号,表示二进制位0或或1,在字符串中的每位表示一个,在字符串中的每位表示一个Bit。O:八进制基数符号,在字符串中的每一个数代表一个八进制数,即代表一个八进制基数符号,在字符串中的每一个数代表一个八进制数,即代表一个3 位位(BIT)的二进制数。的二进制数。X:十六进制

4、基数符号十六进制基数符号(0F),代表一个十六进制数,即一个代表一个十六进制数,即一个4位的二进制数。位的二进制数。data1 = B1_1101_1110 - 二进制数数组,位矢数组长度是二进制数数组,位矢数组长度是9data2 = O15 - 八进制数数组,位矢数组长度是八进制数数组,位矢数组长度是6data3 = XAD0 - 十六进制数数组,位矢数组长度是十六进制数数组,位矢数组长度是12data4 = B101_010_101_010 - 二进制数数组,位矢数组长度是二进制数数组,位矢数组长度是12data5 = 101_010_101_010 -表达错误,缺表达错误,缺B。data

5、6 = 0AD0 -表达错误,缺表达错误,缺X。(1)字符)字符ERROR , Both S and Q equal to 1 , X , BB$CCEDAEDA技术讲义技术讲义5.1 VHDL文字规则文字规则5.1.3 标识符标识符 标标识识符符是是最最常常用用的的操操作作符符,可可以以是是常常数数、变变量量、信信号号、端端口口、子子程程序序或参数的名字。或参数的名字。VHDL基本标识符的书写需遵循如下基本标识符的书写需遵循如下规则:规则:l有有效效的的字字符符:包包括括26个个大大小小写写英英文文字字母母,数数字字包包括括09 以以及及下下划划线线“_”。l l任何标识符必须以英文字母开头

6、。任何标识符必须以英文字母开头。l l必须是单一下划线必须是单一下划线“_”,且其,且其前后前后都必须有英文字母或数字。都必须有英文字母或数字。l l标识符中的英语字母不分大小写。标识符中的英语字母不分大小写。l l允许包含图形符号允许包含图形符号(如回车符、换行符等如回车符、换行符等),也允许包含空格符。,也允许包含空格符。合法的标识符:合法的标识符: A, fft,and_4, max2uc非法的标识符:非法的标识符: 21A, _fft,and_ _4, max#2uc,a-b,returnEDAEDA技术讲义技术讲义5.1 VHDL文字规则文字规则5.1.4 下标名下标名下标名用于指示

7、数组型变量或信号的某一元素。下标名用于指示数组型变量或信号的某一元素。格式:格式: 标识符标识符(表达式表达式)标标识识符符必必须须是是数数组组型型的的变变量量或或信信号号的的名名字字,表表达达式式所所代代表表的的值值必必须须是是数数组组下下标标范范围围中中的的一一个个值值,这这个个值值将将对对应应数数组组中中的的一一个个元元素素。如如果果这这个个表表达达式式是是一一个个可可计计算算的的值值,则则此此操操作作数数可可很很容容易易地地进进行行综综合合。如如果果是是不不可可计计算算的,则只能在特定的情况下综合。的,则只能在特定的情况下综合。下例的两个下标名中一个是下例的两个下标名中一个是m,属不可

8、计算,另一个是属不可计算,另一个是3,属可计算的。,属可计算的。SIGNAL a,b : BIT_VECTOR (0 TO 3) ;SIGNAL m : INTEGER RANGE 0 TO 3 ;SIGNAL y,z : BIT ;y = a(m) ; - 不可计算型下标表示不可计算型下标表示z = b(3) ; - 可计算型下标表示可计算型下标表示EDAEDA技术讲义技术讲义5.2 数据类型数据类型标量型标量型(Scalar Type)复合类型复合类型( (Composite Type)Composite Type)存取类型存取类型(Access Type)文件类型文件类型(Files T

9、ype)EDAEDA技术讲义技术讲义5.2.1 VHDL的预定义数据类型的预定义数据类型1. 布尔布尔(BOOLEAN)数据类型数据类型2. 位位(BIT)数据类型数据类型 如:如:constant a: bit :=1; variable q: bit :=0; signal a,b: bit;3. 位矢量位矢量(BIT_VECTOR)数据类型数据类型 如:如:signal s: bit_vector (15 downto 0); constant q: bit_vector (3 downto 0) :=“0110”;EDAEDA技术讲义技术讲义5.2.1 VHDL的预定义数据类型的预定义

10、数据类型4. 字符字符(CHARACTER)数据类型数据类型 通常用单引号括起来,区分大小写。通常用单引号括起来,区分大小写。6. 实数实数(REAL)数据类型数据类型 如:如:variable q: real range 0.0 to 255.0; constant a: real :=1.0; 1.0 十进制浮点数十进制浮点数 0.0 十进制浮点数十进制浮点数 65971.333333 十进制浮点数十进制浮点数 65_971.333_3333 与上一行等价与上一行等价 8#43.6#e+4 八进制浮点数八进制浮点数 43.6E4 十进制浮点数十进制浮点数5. 字符串字符串(STRING)数

11、据类型数据类型如:如:VARIABLE string_var : STRING (0 TO 3 ) ;string_var := a b c d ;EDAEDA技术讲义技术讲义8. 8. 时间时间( (TIME)TIME)数据类型数据类型TYPE time IS RANGE 2147483647 TO 2147483647 units fs ; - 飞秒,飞秒,VHDL中的最小时间单位中的最小时间单位 ps = 1000 fs ; - 皮秒皮秒 ns = 1000 ps ; - 纳秒纳秒 us = 1000 ns ; - 微秒微秒 ms = 1000 us ; - 毫秒毫秒 sec = 100

12、0 ms ; - 秒秒 min = 60 sec ; - 分分 hr = 60 min ; - 时时end units ;5.2.1 VHDL的预定义数据类型的预定义数据类型7. 整数整数(INTEGER)数据类型数据类型 如:如:signal b: integer range 7 to 7; variable a : integer :=5;EDAEDA技术讲义技术讲义5.2.2 IEEE预定义标准逻辑位与矢量预定义标准逻辑位与矢量1. 1. 标准逻辑位标准逻辑位STD_LOGICSTD_LOGIC数据类型数据类型2. 2. 标准逻辑矢量标准逻辑矢量( (STD_LOGIC_VECTOR)S

13、TD_LOGIC_VECTOR)数据类型数据类型5.2 数据类型数据类型EDAEDA技术讲义技术讲义5.2.3 其他预定义数据类型其他预定义数据类型1. 无符号数据类型无符号数据类型(UNSIGNED TYPE)2. 有符号数据类型有符号数据类型(SIGNED TYPE)5.2 数据类型数据类型十进制的8可以作如下表示:UNSIGNED(1000)两则无符号数据定义的示例:VARIABLE var : UNSIGNED(0 TO 10) ;SIGNAL sig : UNSIGNED(5 TO 0) ;例如:SIGNED(0101) 代表代表 +5,5SIGNED(1011) 代表代表 5EDA

14、EDA技术讲义技术讲义5.2.4 用户自定义数据类型用户自定义数据类型1. 枚举类型枚举类型2. 物理类型物理类型5.2 数据类型数据类型如:Type year is(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec); Signal thismoth :year; result= sep else 0;如:Type voltage is range 0 to 1000000000Units uv; (基本单位基本单位) mv=1000uv; v=1000mv;End units;EDAEDA技术讲义技术讲义5.2.5 数组类型数组类型5.2 数据

15、类型数据类型限定性数组限定性数组限定性数组定义语句格式如下:TYPE TYPE 数组名数组名IS ARRAY (IS ARRAY (数组范围数组范围) )OF OF 数据类型数据类型 ;如:如:type word is array(0 to 7)of std_logic;type word is array(0 to 7)of std_logic;非限定性数组非限定性数组非限制性数组的定义语句格式如下:TYPE TYPE 数组名数组名IS ARRAY (IS ARRAY (数组下标名数组下标名RANGE RANGE )OF )OF 数据类型数据类型; ;如:如:type word is arr

16、ay (natural range)of bit;type word is array (natural range)of bit;EDAEDA技术讲义技术讲义5.2.5 数组类型数组类型5.2 数据类型数据类型 数数组组的的元元素素可可以以是是任任何何一一种种数数据据类类型型,用用以以定定义义数数组组元元素素的的下下标标范范围围子子句句决决定定了了数数组组中中元元素素的的个个数数,以以及及元元素素的的排排序序方方向向,既既下下标标数数是是由由高高到到低低,或或是是由由低低到高。到高。 如子句如子句“0 “0 TO 7”TO 7”是是由低到高由低到高排序的排序的8 8个元素;个元素; 即:即:

17、a(0)a(1)a(2)a(7)a(0)a(1)a(2)a(7)。“15 “15 DOWNTO 0”DOWNTO 0”是是由高到低由高到低排序的排序的1616个元素个元素; ; 即:即:a(15)a(14)a(13) a(0) a(15)a(14)a(13) a(0) 。EDAEDA技术讲义技术讲义5.3 VHDL操作符操作符5.3.1 逻辑操作符逻辑操作符表表5-1 VHDL操作符列表操作符列表EDAEDA技术讲义技术讲义表表5-1 VHDL操作符列表操作符列表接上页接上页EDAEDA技术讲义技术讲义表表5-2 VHDL操作符优先级操作符优先级5.3.1 逻辑操作符逻辑操作符EDAEDA技术

18、讲义技术讲义【例【例5-4】 SIGNAL a ,b,c : STD_LOGIC_VECTOR (3 DOWNTO 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 ; . a=b AND c; -b、c 相与后向相与后向a赋值,赋值,a、b、c的数据类型同属的数据类型同属4位长的位矢量位长的位矢量 d=e OR f OR g ; - 两个操作符两个操作符OR相同,不需括号相同,不需括号 h=(i NAND j)NAND k

19、; - 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 ; - i 的数据类型是位的数据类型是位STD_LOGIC,而而l的数据类型是的

20、数据类型是 . - 布尔量布尔量BOOLEAN,因而不能相互作用,表达错误。因而不能相互作用,表达错误。5.3.1 逻辑操作符逻辑操作符EDAEDA技术讲义技术讲义5.3.2 关系操作符关系操作符【例【例5-5】 ENTITY relational_ops_1 IS PORT ( a,b : IN BITVECTOR (0 TO 3) ; m : OUT BOOLEAN) ; END relational_ops_1 ; ARCHITECTURE example OF relational_ops_1 IS BEGIN output = (a = b) ; END example ; 【例例5

21、-6】 ENTITY relational_ops_2 IS PORT (a,b : IN INTEGER RANGE 0 TO 3 ; m : OUT BOOLEAN) ; END relational_ops_2 ; ARCHITECTURE example OF relational_ops_2 IS BEGIN output = b) ; END example ;六种关系运算操作符:“ = ”(“ = ”(等于等于) )、“/=”(“/=”(不等于不等于) )、“ ”(“ ”(大于大于) )、“ ”(“=”(“=”(大于等大于等于于) )“=”(“=”(小于等小于等于于) )EDAE

22、DA技术讲义技术讲义5.3.3 算术操作符算术操作符表表5-3 算术操作符分类表算术操作符分类表1. 1. 求和操作符求和操作符【例例5-7】VARIABLE a,b ,c ,d ,e ,f : INTEGER RANGE 0 TO 255 ;.a := b + c ; d := e f ; EDAEDA技术讲义技术讲义【例【例5-8】PROCEDURE adding_e (a :IN INTEGER ; b :INOUT INTEGER )IS.b := a + b ; 【例【例5-9】 PACKAGE example_arithmetic IS TYPE small_INt IS RANG

23、E 0 TO 7 ; END example_arithmetic ; USE WORK.example_arithmetic.ALL ; ENTITY arithmetic IS PORT (a,b : IN SMALL_INT ; c : OUT SMALL_INT) ; END arithmetic ; ARCHITECTURE example OF arithmetic IS BEGIN c = a + b ; END example ; EDAEDA技术讲义技术讲义2. 2. 求积操作符求积操作符5.3.3 算术操作符算术操作符3. 3. 符号操作符符号操作符求积操作符包括求积操作符

24、包括 * ( * (乘乘) )、 / ( / (除除) )、MOD(MOD(取模取模) )和和RED(RED(取余取余) )四种操作符。四种操作符。符号操作符符号操作符“+”“+”和和“”的操作数只有的操作数只有一个一个EDAEDA技术讲义技术讲义5.3.3 算术操作符算术操作符4. 4. 混合操作符混合操作符【例【例5-10】SIGNAL a,b : INTEGER RANGE 8 to 7 ;SIGNAL c : INTEGER RANGE 0 to 15 ;SIGNAL d : INTEGER RANGE 0 to 3 ;a = ABS(b) ; c = 2 * d ;混合操作符包括乘方

25、混合操作符包括乘方“*”“*”操作符和取操作符和取绝对值绝对值“ABS”ABS”操作符两种操作符两种EDAEDA技术讲义技术讲义SLLSLL逻辑左移逻辑左移SRLSRL逻辑右移逻辑右移移空的位补零移空的位补零SLASLA算术左移算术左移SRASRA算术右移算术右移移空的位由最初首位补移空的位由最初首位补ROLROL逻辑循环左移逻辑循环左移RORROR逻辑循环右移逻辑循环右移移出的位依次填补移空的位移出的位依次填补移空的位5.3.3 算术操作符算术操作符5. 5. 移位操作符移位操作符移位操作符的语句格式是: 标识符标识符 移位操作符移位操作符 移位位数移位位数 ;例:例:“1 10010010

26、01001” SLL 1=SLL 1=“0010010010010 0”“1001001001001 1” SRL 1=SRL 1=“0 0100100100100”“1 1001001001001” SLA 1=SLA 1=“0010010010011 1”“1001001001001 1” SRA 1=SRA 1=“1 1100100100100”“1 1001001001001” ROL 1=ROL 1=“0010010010011 1”“1001001001001 1” ROR 1=ROR 1=“1 1100100100100”EDAEDA技术讲义技术讲义 5.4 VHDL数据对象(D

27、ata Objects) 常量(常量(Constant) 固定值,不能在程序中被改变 增强程序的可读性,便于修改程序 可在Package、Entity、Architecture、Process、Function、Procedure中进行定义,其有效范围也相应限定 书写格式:书写格式: Constant 常量名,常量名:数据类型:=表达式; 例:例:Constant data_bus_width: integer := 8;EDAEDA技术讲义技术讲义5.4 VHDL数据对象(Data Objects) 信号(信号(Signals) 代表连线,Port也是一种信号 没有方向性,可给它赋值,也可当

28、作输入 在Package、Entity、Architecture中定义 设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。 用 = 进行赋值 用 : = 进行初始化 signal count:bit_vector(3 downto 0):=“0011”;EDAEDA技术讲义技术讲义5.4 VHDL数据对象(Data Objects) 变量(变量(Variable) 临时数据,没有物理意义 只能在Process、Function、 Procedure中定义,并只在其内部有效, 要使其全局有效,先转换为Signal。 用 := 进行赋值 用 := 进行初始化 variable resu

29、lt : std_logic := 0;EDAEDA技术讲义技术讲义信号与变量的区别信号与变量的区别architecture rtl of start is signal count : integer range 0 to 7; begin process(clk) begin if (clkevent and clk=1) then count = count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;architecture rtl of star

30、t is begin process(clk)variable count : integer range 0 to 7;begin if (clkevent and clk=1) then count := count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;EDAEDA技术讲义技术讲义信号与变量的区别信号与变量的区别architecture a of start is signal tmp : std_logic;begin process(a_bus)begin tmp = 1; for i in 3 downto 0 loop tmp = a_bus(i) and tmp; end loop; carryout = tmp; end process;end a; architecture a of start is begin process(a_bus) variable tmp:std_logic; begin tmp := 1; for i in 3 downto 0 loop tmp := a_bus(i) and tmp; end loop; carryout = tmp; end process;end a;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号