资源描述
VHDL语言,HDL,Hardware Description Language,硬件,描述,语言,产生:,1962年,发展:,最初,个别厂家个别使用,70年代末,美国国防部提出VHSIC (Very High Speed IC)计划。,80年代初,产生VHDL(Very high speed IC HDL)语言。,1987.12 ,作为IEEE标准(87版)。,1993 ,经修改的VHDL再次被IEEE标准认证(93版)。,1995 ,中国国家技术监督局推荐为国家标准。,VHDL语言的优点,支持自上而下的设计方法(整体描述),半加器描述事例: WHEN “00” = so so so so=0; co=1 ;,节省资源,丰富的仿真语句和库函数,对设计的描述具有相对独立性,Max+plus2下的VHDL语言的格式,加入库,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_arith.ALL; USE IEEE.STD_LOGIC_unsigned.ALL;,LIBRARY ; USE .ALL ; USE .ALL ;,P.42 表3-3,VHDL语言的基本结构,实体,构造体,实体结构,用以描述外部端口,用以描述内部结构及行为,ENTITY 实体名 IS PORT ( 端口名1,端口名2,端口名n :方向 数据类型名; 端口名a,端口名b,端口名m :方向 数据类型名); END 实体名;,半加器实体说明举例 ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co,so : OUT STD_LOGIC); END h_adder;,VHDL语言的基本结构,ENTITY 实体名 IS PORT ( 端口名1,端口名2,端口名n :方向 数据类型名; 端口名a,端口名b,端口名m :方向 数据类型名); END 实体名;,实体结构,端口名是设计者为实体的每一个对外通道所取的名字。,数据类型是指端口上流动的数据的表达格式或取值类型。,P.13 表2-1,方向 是指这些通道上的数据流动方式。,STD_LOGIC:位,STD_LOGIC_Vector(n downto 0):位总线,Library Ieee; Use ieee.std_logic_1164.all; Entity d38 Is Port ( c,b,a,g1,g2a,g2b : In std_logic; y : Out std_logic_vector(7 downto 0); End d38;,138译码器举例,VHDL语言的基本结构,VHDL语言的基本结构,构造体结构,ARCHITECTURE 结构体名 OF 实体名 IS 定义语句 BEGIN 功能描述语句 END ARCHITECTURE 结构体名;,注:,工程名(project)、文件名(*.vhd)、实体名必须一致。,定义语句:用于对构造体内使用的信号signal 、变量variable等定义。,Architecture func of d38 is signal indata : std_logic_vector(2 downto 0); begin,VHDL语言的基本结构,VHDL操作符列表,优先级:P.45 表3-4,VHDL语言的基本结构,构造体结构,ARCHITECTURE 结构体名 OF 实体名 IS 定义语句 BEGIN 功能描述语句 END ARCHITECTURE 结构体名;,功能描述语句,并行语句,顺序语句,并行语句,1. 简单信号赋值语句,赋值目标 = 表达式,注:,赋值语句“=”与小于等于“=”位置不同,2. 条件信号赋值语句,赋值目标 = 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE . 表达式 ;,例:二选一电路,例:半加器电路,顺序语句,1. 进程(PROCESS)语句,进程语句实际是并行语句,但却是顺序语句不可缺少的。实际上所有的顺序语句都包含在进程语句之内。,格式,PROCESS (敏感信号1,敏感信号2,敏感信号n) Begin 顺序语句; END PROCESS;,顺序语句,2. IF 语句,格式,IF 条件 THEN 处理语句; ELSIF 条件 THEN 处理语句; ELSIF 条件 THEN 处理语句; ELSE 处理语句; END IF;,例:D触发器,顺序语句,3 CASE语句,格式,CASE 表达式 IS When 选择值 = 顺序语句; When 选择值 = 顺序语句; . END CASE ;,例:138译码器,VHDL文字规则,整数:整数都是十进制的数,如:5, 678, 0, 156E2(=15600)。,实数:实数也都是十进制的数,但必须带有小数点,如: 1.335, 1.0,44.99E-2(=0.4499),数制表示: 10#170# ; - (十进制表示,等于 170) 16#FE# ; - (十六进制表示,等于 254) 2#1111_1110#; - (二进制表示,等于 254) 8#376# ; - (八进制表示,等于 254),字符串: ERROR , Both S and Q equal to 1 , X , BB$CC,VHDL文字规则,标识符,规则: l有效的字符:包括26个大小写英文字母,数字包括09 以及下划线“_”。 l任何标识符必须以英文字母开头。 l必须是单一下划线“_”,且其前后都必须有英文字母或数字。 l标识符中的英语字母不分大小写。 l允许包含图形符号(如回车符、换行符等),也允许包含空格符。,下标名,SIGNAL a,b : STD_LOGIC_VECTOR (0 TO 3) ; SIGNAL m : INTEGER RANGE 0 TO 3 ; SIGNAL y,z : STD_LOGIC ; y = a(m) ; z = b(3) ;,VHDL数据类型,1. 布尔(BOOLEAN)数据类型,2. 位(BIT)数据类型,现为std_logic。,3. 位矢量(BIT_VECTOR)数据类型,现为std_logic_vector。,4. 字符(CHARACTER)数据类型,5. 整数(INTEGER)数据类型,6. 实数(REAL)数据类型,7. 字符串(STRING)数据类型,其它并行语句,1. 变量赋值语句,变量目标 := 表达式,Variable x,y:integer := 10; Constant Vcc:real := 5.0; Temp3:=temp1+temp2;,WITH 条件表达式 SELECT 赋值目标信号 =表达式 WHEN 条件1, 表达式 WHEN 条件2, . 表达式 WHEN 条件n;,2. 选择信号赋值语句,其它并行语句,例:decoder、四选一电路,其它并行语句,3.元件调用语句,COMPONENT 元件名 IS GENERIC (类属表); PORT (端口名表); END COMPONENT 文件名; 元件名 PORT MAP(端口名 = 连接端口名,.) ;,例:交通灯,其它顺序语句,1. LOOP语句,(1)单个LOOP语句,其语法格式如下: LOOP标号: LOOP 顺序语句 END LOOP LOOP标号 ;,用法示例如下: . L2 :LOOP a := a+1; EXIT L2 WHEN a 10 ; - 当a大于10时跳出循环 END LOOP L2; .,其它顺序语句,1. LOOP语句,(2)FOR_LOOP语句,语法格式如下: LOOP标号: FOR 循环变量,IN 循环次数范围 LOOP 顺序语句 END LOOP LOOP标号;,【例9-5】 SIGNAL a, b, c : STD_LOGIC_VECTOR (1 TO 3); . FOR n IN 1 To 3 LOOP a(n) = b(n) AND c(n); END LOOP;,例:parity_check,
展开阅读全文