第2章_VHDL设计初步_第1页
第2章_VHDL设计初步_第2页
第2章_VHDL设计初步_第3页
第2章_VHDL设计初步_第4页
第2章_VHDL设计初步_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本章重点将本章重点将介绍介绍VHDL基本的语法基本的语法结构结构 什么是什么是VHDL?Very high speed integrated Hardware Description Language (VHDL) 是IEEE、工业标准硬件描述语言 用语言的方式而非图形等方式描述硬件电路 容易修改 容易保存 特别适合于设计的电路有: 复杂组合逻辑电路,如: 译码器、编码器、加减法器、多路选择器、地址译码器. 状态机 等等.- VHDL is what you write is what functional you get “ tell me how your circuit should b

2、ehave and the VHDL compiler will give you the hardware that does the job” but the designer can not control how the circuit implement 原理图输入与原理图输入与 VHDL文本输入设计的区别文本输入设计的区别- Graphic is what you draw is what you get“ tell me what hardware you want and I will give it to you” VHDL的功能和标准的功能和标准 VHDL 描述 输入端口

3、输出端口 电路的行为和功能 VHDL有过两个标准: IEEE Std 1076-1987 (called VHDL 1987) IEEE Std 1076-1993 (called VHDL 1993) Why using VHDL instead of Graphic Easy to Modify It is more powerful than Graphic VHDL is a portable language because is device independent the same code can be applied to Device manufactured by Com

4、pany A or Company B 【例2-1】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;实体结构体2.1 多路选择器多路选择器VHDL描述描述图图2-1 mux21a实体实体图图2-2 mux21a结构体结构体2.

5、1.1 2选选1多路选择器的多路选择器的VHDL描述描述IEEE库使用说明2.1.1 2选选1多路选择器的多路选择器的VHDL描述描述【例例2-2】 ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGINd = a AND (NOT S) ;e = b AND s ;y = d OR e ; END ARCHITECTURE one ;【例【例2-3】 . . . ARCHIT

6、ECTURE one OF mux21a IS BEGIN y = (a AND (NOT s) OR (b AND s) ; END ARCHITECTURE one;2.1.1 2选选1多路选择器的多路选择器的VHDL描述描述【例【例2-4】ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b ;END IF; END

7、PROCESS;END ARCHITECTURE one ;2.1.1 2选选1多路选择器的多路选择器的VHDL描述描述图图2-3 mux21a功能时序波形功能时序波形2.1.2 VHDL设计的基本概念和相关语句说明设计的基本概念和相关语句说明数据类型信号赋值符条件比较符实体结构体端口定义端口模式逻辑操作符IF条件语句进程语句VHDL库程序包1 . VHDL1 . VHDL库库库的种类库的种类1. 1. IEEEIEEE库库2. 2. STDSTD库库3. 3. WORKWORK库库4. 4. VITALVITAL库库库的用法库的用法USE语句的使用有两种常用格式: USE 库名库名.程序包名

8、程序包名.项目名项目名 ; USE 库名库名.程序包名程序包名.ALL ; LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.STD_ULOGIC ; USE IEEE.STD_LOGIC_1164.RISING_EDGE ; 2. VHDL2. VHDL程序包程序包程序包程序包常数说明常数说明VHDL数据类型说明数据类型说明元件定义元件定义子程序子程序定义程序包的一般语句结构如下: PACKAGE PACKAGE 程序包名程序包名 IS - IS - 程序包首程序包首 程序包首说明部分程序包首说明部分 END END 程序包名程序包名; ; PACKAGE BOD

9、Y PACKAGE BODY 程序包名程序包名 IS - IS - 程序包体程序包体 程序包体说明部分以及包体内程序包体说明部分以及包体内 END END 程序包名程序包名; ;常用的预定常用的预定义的程序包义的程序包STD_LOGIC_1164程序包程序包STD_LOGIC_ARITH程序包程序包STD_LOGIC_UNSIGNED和和STD_LOGIC_SIGNED程序包程序包STANDARD和和TEXTIO程序包程序包3 3 实体语句结构实体语句结构实体说明单元的一般语句结构:实体说明单元的一般语句结构: ENTITY ENTITY 实体名实体名 ISIS GENERIC ( GENER

10、IC ( 类属表类属表 ); ); PORT ( PORT ( 端口表端口表 ); ); END ENTITY END ENTITY 实体名实体名; ;4. PORT4. PORT(端口)说明端口)说明PORT ( PORT ( 端口名端口名 : : 端口模式端口模式 数据类型数据类型 ; ; 端口名端口名 : : 端口模式端口模式 数据类型数据类型 ) ; ) ; 其中的端口名是设计者为实体的每一个对外通道所取的名字,端口模式是指这些通道上的数据流动方式。数据类型是指端口上流动的数据的表达格式或取值类型,VHDL要求只有相同数据类型的端口信号和操作数才能相互作用。 由于由于PORTPORT说

11、明语句是对一个设计实体界面的说明及对设计说明语句是对一个设计实体界面的说明及对设计实体与外部电路的接口通道的说明,其中包括对每一接口的实体与外部电路的接口通道的说明,其中包括对每一接口的输入输出模式和数据类型的定义。其格式如下:输入输出模式和数据类型的定义。其格式如下:5. 5. 端口模式端口模式INOUTINOUTBUFFER1. 1. 布尔布尔( (BOOLEAN)BOOLEAN)数据类型数据类型2. 2. 位位( (BIT)BIT)数据类型数据类型3. 3. 位矢量位矢量( (BIT_VECTOR)BIT_VECTOR)数据类型数据类型4. 4. 字符字符( (CHARACTER)CHA

12、RACTER)数据类型数据类型5. 5. 整数整数( (INTEGER)INTEGER)数据类型数据类型6. 6. 实数实数( (REAL)REAL)数据类型数据类型6. 6. 数据类型数据类型 VHDL的预定的预定义数据义数据类型类型7. 7. 字符串字符串( (STRING)STRING)数据类型数据类型8. 8. 时间时间( (TIME)TIME)数据类型数据类型IEEE预定义标准逻辑位与矢量预定义标准逻辑位与矢量1. 1. 标准逻辑位标准逻辑位STD_LOGICSTD_LOGIC数据类型数据类型2. 2. 标准逻辑矢量标准逻辑矢量( (STD_LOGIC_VECTOR)STD_LOGI

13、C_VECTOR)数据类型数据类型STD_LOGIC_VECTOR类型定义如下:TYPE STD_LOGIC_VECTOR IS ARRAY ( NATURAL RANGE ) OF STD_LOGIC ;7. 7. 结构体结构体结构体的组成部分是:结构体的组成部分是: 对数据类型、常数、信号、子程序和元件等元素的说明对数据类型、常数、信号、子程序和元件等元素的说明部分。部分。 描述实体逻辑行为的、以各种不同的描述风格表达的功描述实体逻辑行为的、以各种不同的描述风格表达的功能描述语句。能描述语句。 以元件例化语句为特征的外部元件(设计实体)端口间以元件例化语句为特征的外部元件(设计实体)端口间

14、的连接的连接。1. 1. 结构体的一般语言格式结构体的一般语言格式ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 说明语句说明语句BEGIN 功能描述语句功能描述语句END ARCHITECTURE 结构体名结构体名;9. 9. 逻辑操作符逻辑操作符ANDAND、OROR、NOTNOT10. IF_THEN10. IF_THEN条件语句条件语句11. WHEN_ELSE11. WHEN_ELSE条件信号赋值语句条件信号赋值语句赋值目标赋值目标 = 表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式表达式 WHEN 赋值条件赋值条件 ELSE . 表达式表达式 ;1

15、2. PROCESS12. PROCESS进程语句和顺序语句进程语句和顺序语句8. 8. 信号传输信号传输( (赋值赋值) )符号和数据比较符号符号和数据比较符号2.2 寄存器描述及其寄存器描述及其VHDL语言现象语言现象2.2.1 D触发器的触发器的VHDL描述描述【例【例2-5】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 I

16、S SIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定类似于在芯片内部定-义一个数据的暂存节点义一个数据的暂存节点 BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -将内部的暂存数据向端口输出将内部的暂存数据向端口输出 END PROCESS ; END bhv;比较用5种不同语句的D触发器VHDL程序Entity test1 isport (clk, d : in bit; q : out bit);end test1;architecture body of

17、test1 issignal q1 : bit ;beginprocess (clk)begin if clk=1 AND clklast_value=0 then q1 = d; end if; q = q1 ;end process;end test1_body; LIBRARY IEEE;USE IEEE.std_logic_1164.all;Entity test1 isport (clk, d : in bit; q : out bit);end test1;architecture body of test1 isbeginprocess (clk,d)begin if risin

18、g_edge(clk) then q = d; end if;end process;end test1_body;Entity test1 isport (clk : in bit; d : in bit; q : out bit);end test1;architecture body of test1 issignal q1 : bit ;beginprocess (clk,d)begin if (clk = 1) then q1 = d; end if; q = q1 ;end process;end body;Entity test1 isport (clk : in bit; d

19、: in bit; q : out bit);end test1;architecture body of test1 issignal q1 : bit ;beginprocess (clk)begin if (clk = 1) then q1 = d; end if; q = q1 ;end process;end body;How Many Registers?LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY test1 IS PORT( CP,D : IN STD_LOGIC; Q

20、: OUT STD_LOGIC );END test1;ARCHITECTURE a OF test1 ISBEGIN PROCESS(CP) BEGIN IF CPEVENT AND CP=1 THEN Q=D; END IF; END PROCESS;END a;范例程序范例程序:(程序文件(程序文件EDAch6_1_1.vhd)综合后的综合后的D触发器的触发器的RTL图图D 触发器的时序图触发器的时序图上升沿有效 仿真结果说明:仿真结果说明:(1) 上述仿真结果在时间上述仿真结果在时间20ns时,输入信号时,输入信号D以是以是1状态,状态,但是由于但是由于“时钟脉冲信号时钟脉冲信号CP”

21、这是不是处于上升沿,所以必这是不是处于上升沿,所以必须等到时间轴须等到时间轴30ns地方,才会输出信号地方,才会输出信号Q变成变成1,不,不过由于芯片的传输延迟效过由于芯片的传输延迟效应,最后是在应,最后是在35ns处才会产生处才会产生1。(2) 在时间轴在时间轴110ns处,输入信号处,输入信号D和时钟脉冲信号同时和时钟脉冲信号同时出现是出现是1状态,但这上升沿的瞬间十分短暂,由仿真结果知状态,但这上升沿的瞬间十分短暂,由仿真结果知道,输出信号道,输出信号Q必须等到下一时钟脉冲上升沿之后,才会出必须等到下一时钟脉冲上升沿之后,才会出现现1状态。状态。(3) 在时间轴在时间轴200ns之后,由

22、于没有时钟脉冲信号之后,由于没有时钟脉冲信号CP,这,这时不论时不论D的输入为何,输出信号的输入为何,输出信号Q状态一直保持不变。状态一直保持不变。数据对象信号属性时钟检测时序电路2.2.2 VHDL设计的基本概念和相关语句说明设计的基本概念和相关语句说明1. SIGNAL1. SIGNAL信号定义和数据对象信号定义和数据对象【例2-6】ARCHITECTURE bhv OF DFF1 IS SIGNAL Q:STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS

23、 ;END ;2. 2. 上升沿检测表达式和信号属性函数上升沿检测表达式和信号属性函数EVENTEVENT 关键词EVENT是信号属性,VHDL通过以下表达式来测定某信号的跳变边沿: EVENTEVENT3. 3. 不完整条件语句与时序电路不完整条件语句与时序电路【例【例2-7】ENTITY COMP_BAD IS PORT( a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSI

24、F a1 b1 THEN q1 = 0 ;- 未提及当未提及当a1=b1时,时,q1作何操作作何操作END IF; END PROCESS ;END ;3. 3. 不完整条件语句与时序电路不完整条件语句与时序电路图图2-7 例例2-7的电路图的电路图2.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例2-9】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF; END PROCESS

25、 ;【例【例2-10】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 THEN Q = D ; END IF; END PROCESS ;2.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例2-11】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SI

26、GNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - CLK的数据类型必须是的数据类型必须是STD_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ;2.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例2-12】 . PROCESS BEGIN wait until CLK = 1 ; -利用利用wait语句语句 Q = D ; END PROCESS;【例2-13】. PROCESS (CLK) BEGIN IF CLK =

27、 1 THEN Q = D ; -利用进程的启动特性产生对利用进程的启动特性产生对CLK的边沿检测的边沿检测 END IF; END PROCESS ;【例2-14】. PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ;2.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式图图5-7 边沿型触发器时序波形边沿型触发器时序波形图图5-8 电平触发型寄存器的时序波形电平触发型寄存器的时序波形数据对象数据对象信号信号Signal 和变量和变量 Variable S

28、ignal Assignment receive the assign value after a period of time Variable Assignment happens immediately when the statement is executed, no delaySignals vs. Variables1、 Variables赋值是直接的、立即生效的、没有延迟的;而Signals赋值则是有一定延迟的。2、 Variables只有当前值;而Signals除当前值外还有许多相关的信息,如历史信息(保存在预定义属性中)和波形值。3、进程对Signals敏感而对Variables不敏感。4、 Variables只在定义它的进程、过程和函数中可见;而Signals则可以使多个进程的全局信号。5、 Variables在硬件中没有一定的对应关系,主要用于硬件特性的高层次建模所需要的计算中;而Signals是硬件中连线的抽象描述,功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。【例2-14】(程序文件(程序文件/EDA/ch2_2_2.vhd)LIBRARY IEEE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论