版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第第4 4章章第第4章章 VHDL基础基础 【学习目标学习目标】 通过本章学习应掌握通过本章学习应掌握VHDL体系结构、库与体系结构、库与程序包、实体部分结构、结构体部分结构;了解程序包、实体部分结构、结构体部分结构;了解VHDL的顺序语句和并行语句的基本语法规则及的顺序语句和并行语句的基本语法规则及应用;应用;4. 1 VHDL4. 1 VHDL概述概述 HDL VHDLVerilog HDLABELAHDLSystemVerilogSystemC。 英文全名是英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Descriptio
2、n Language, 现在公布的最新现在公布的最新VHDL标标准版本是准版本是IEEE 1076-2002 4.2 VHDL程序基本结构程序基本结构 4.2.1 VHDL体系结构体系结构 p相对完整的VHDL设计由以下几个部分组成:p(1)库、程序包;p(2)实体;p(3)结构体;p(4)配置。pVHDL程序基本结构如图3.1所示,图中显示了其各自的作用 图3.1 VHDL程序基本结构 4.2 VHDL程序基本结构程序基本结构4.2 VHDL程序基本结构程序基本结构 从图从图4.1中可以看出中可以看出VHDL程序结构由程序结构由4个部分组成,这个部分组成,这4个部分并不是每一个个部分并不是每
3、一个VHDL程序都必须具备的程序都必须具备的,其中只有,其中只有实体和与之对应实体和与之对应的结构体是必须的的结构体是必须的,其余两部分根据实际情况,其余两部分根据实际情况可选择。可选择。4.2 VHDL程序基本结构程序基本结构【例例3-1】ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type ); END ENTITY e_name; 1. 1. 实体表达实体表达 关键词关键词输入输入输出输出端口端口一、一、 实体实体4.2 VHDL程序基本结构程序基本结构2. 2. 实体名实体名 3
4、. 3. 端口语句和端口信号名端口语句和端口信号名 4. 4. 端口模式端口模式 “IN”、“ “OUT”、“ “INOUT”、“ “BUFFER” 5. 5. 数据类型数据类型 4.2 VHDL程序基本结构程序基本结构 端口信号名:端口信号名:端口信号名在实体中必须是端口信号名在实体中必须是唯一的唯一的,信号,信号 名应是合法的标识符。名应是合法的标识符。 端口模式:端口模式:端门模式有以下几种类型:端门模式有以下几种类型: IN: 规定数据只能通过此端口被读入实体中。规定数据只能通过此端口被读入实体中。 OUT: 规定数据只能通过此端口从实体向外流规定数据只能通过此端口从实体向外流 出,或
5、者说可以将实体中的数据向此端口出,或者说可以将实体中的数据向此端口 赋值。赋值。4.2 VHDL程序基本结构程序基本结构 INOUT:输入输出双向端口。可以通过此端口读输入输出双向端口。可以通过此端口读 入外部的数据信息,也可以向此端口输入信入外部的数据信息,也可以向此端口输入信 号。如号。如RAM的数据端口、单片机的的数据端口、单片机的I/O口。口。 BUFFER:缓冲端口,与缓冲端口,与INOUT区别在于当需要输入区别在于当需要输入数据时,只允许内部回读输出的信号,即允许反馈。如数据时,只允许内部回读输出的信号,即允许反馈。如计数器设计,可将计数器输出的计数信号回读,以作下计数器设计,可将
6、计数器输出的计数信号回读,以作下一计数值的初值。与一计数值的初值。与INOUT模式相比,模式相比,BUFFER回读回读的信号不是由外部输入的信号不是由外部输入的,而是由内部产生、向外输出的,而是由内部产生、向外输出的信号。的信号。4.2 VHDL程序基本结构程序基本结构各种端口模式可用图各种端口模式可用图3.4 表示。表示。 端口类型:端口类型:定义端口的数据类型。定义端口的数据类型。 常用的有常用的有integer、std_logic和和 std_logic_vector等。等。1 1、结构体基本结构、结构体基本结构二、二、 结构体结构体4.2 VHDL程序基本结构程序基本结构2. 2. 结
7、构体表达结构体表达 【例例3-23-2】ARCHITECTURE arch_name OF e_name IS 说说明明语语句句BEGIN (功能描述功能描述语语句句)END ARCHITECTURE arch_name ; 4.2 VHDL程序基本结构程序基本结构(1)库()库(Library) 在在VHDL设计中,为了提高设计效率以及使设计设计中,为了提高设计效率以及使设计遵循某些统一的语言标准或数据格式,有必要将有用遵循某些统一的语言标准或数据格式,有必要将有用的信息汇集在一个或几个库中以供调用。主要包括,的信息汇集在一个或几个库中以供调用。主要包括,预先定义好的数据类型,子程序设计单元
8、的集合体预先定义好的数据类型,子程序设计单元的集合体(程序包),或预先设计好的各种设计实体等(程序包),或预先设计好的各种设计实体等,库的库的说明总是放在设计单元的最前面。说明总是放在设计单元的最前面。4.2.2 库、程序包库、程序包3.2 VHDL程序基本结构程序基本结构库的格式如下:库的格式如下: LIBRARY设计库名设计库名; USE 设计库名设计库名程序包名程序包名 ALL;-打开某库打开某库 USE语句的使用有两种常用格式:语句的使用有两种常用格式: 1)Use库名库名程序包名程序包名项目名;项目名; 这种方式使用库中某个程序包中某个具体的项目。这种方式使用库中某个程序包中某个具体
9、的项目。 2)Use库名库名.程序包名程序包名.ALL; 使用库中某个程序包中所有的项目使用库中某个程序包中所有的项目3.2 VHDL程序基本结构程序基本结构(2)程序包()程序包(Package) 在设计实体中定义的数据类型,子程序或数据在设计实体中定义的数据类型,子程序或数据对象对于其他的设计实体是不同的,对象对于其他的设计实体是不同的,为了使已定义为了使已定义的常数,数据类型,元件调用说明以及子程序能被的常数,数据类型,元件调用说明以及子程序能被多个多个VHDL设计实体方便地访问和共享,可以将它设计实体方便地访问和共享,可以将它们收集在一个们收集在一个VHDL程序包中。程序包中。3.2
10、VHDL程序基本结构程序基本结构3.2.3 配置部分配置部分 配置配置可以把特定的可以把特定的结构体关联到(指定给)一个确结构体关联到(指定给)一个确定的实体。定的实体。配置语句用来为较大的系统设计提供管理配置语句用来为较大的系统设计提供管理和工程组织的。通常在和工程组织的。通常在大而复杂的大而复杂的VHDL工程设计中,工程设计中,配置语句可以为实体指定或配属一个结构体配置语句可以为实体指定或配属一个结构体 。 CONFIGURATION 配置名配置名 OF 实体名实体名 IS 配置说明配置说明 END 配置名;配置名; 3.3 VHDL3.3 VHDL组合电路描述组合电路描述 3.3.1 3
11、.3.1 组合电路组合电路二选一二选一图图3-1 mux21a实体实体 图图3-2 mux21a结构体结构体 3.3 VHDL3.3 VHDL组合电路描述组合电路描述3.3.1 3.3.1 组合电路组合电路二选一二选一描述描述【例例3-3】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 ; 3.3 VHDL3.3 V
12、HDL组合电路描述组合电路描述3.3.1 组合电路组合电路二选一二选一描述描述【例例3-4】 ENTITY mux21a IS PORT ( a, b, 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 ; 3.3 VHDL3.3 VHDL组合电路描述组合电路描述【例例3-5】 ENTITY mux21a IS POR
13、T ( 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 PROCESS;END ARCHITECTURE one ; 3.3.1 组合电路组合电路二选一二选一描述描述3.3 VHDL3.3 VHDL组合电路描述组合电路描述图图3-3 mux21a功能时序波形功能时序波形 3.3.2 组合电路组合电路二选一二选一仿真仿真3.4 3.4 全加器
14、的全加器的VHDLVHDL描述描述 3.4.1 3.4.1 半加器描述半加器描述图图3-9 半加器半加器h_adder电路图及其真值表电路图及其真值表 I113coasob1001010110001100cosobanotxnor2and23.4 3.4 全加器的全加器的VHDLVHDL描述描述3.4.1 3.4.1 半加器描述半加器描述图图3-10 3-10 全加器全加器f_adderf_adder电路图及其实体模块电路图及其实体模块I113aincoutcoutainbinsumcinbinsumcinf_adderor2afedu3u2u1baccosoBcosoBh_adderAh_a
15、dderA3.4 3.4 全加器的全加器的VHDLVHDL描述描述3.4.1 VHDL3.4.1 VHDL描述半加器描述半加器1 1【例例3-15】LIBRARY IEEE; -半加器描述半加器描述(1):布尔方程描述方法:布尔方程描述方法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so = NOT(a XOR (NOT b) ;
16、 co = a AND b ; END ARCHITECTURE fh1; 3.4 3.4 全加器的全加器的VHDLVHDL描述描述【例例3-16】LIBRARY IEEE; -半加器描述半加器描述(2):真值表描述方法:真值表描述方法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL abc : STD_LOGIC_VECTOR(1
17、DOWNTO 0) ; -定义标准逻辑位矢量数据类型定义标准逻辑位矢量数据类型BEGIN abc so=0; co so=1; co so=1; co so=0; co NULL ; END CASE; END PROCESS; END ARCHITECTURE fh1 ; 3.4 3.4 全加器的全加器的VHDLVHDL描述描述3.4.1 3.4.1 半加器描述半加器描述2 2【例例3-17】 LIBRARY IEEE ; -或门逻辑描述或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c
18、 : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c ain,b=bin,co=d,so=e); -例化语句例化语句 u2 : h_adder PORT MAP(a=e, b=cin, co=f,so=sum); u3 : or2a PORT MAP(a=d, b=f, c=cout); END ARCHITECTURE fd1; 3.4 3.4 全加器的全加器的VHDLVHDL描述描述3.4.2 CASE3.4.2 CASE语句语句 1. CASE语句语句 CASE ISWhen = ; . ; ;W
19、hen = ; . ; ;.WHEN OTHERS = ;END CASE ; 3.4 3.4 全加器的全加器的VHDLVHDL描述描述2. 标准逻辑矢量数据类型标准逻辑矢量数据类型 B = 01100010 ; - B(7)为为 0 B(4 DOWNTO 1) = 1101 ; - B(4)为为 1 B(7 DOWNTO 4) = A ; - B(6)等于等于 A(2) SIGNAL C :BIT_VECTOR(3 DOWNTO 0); B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4) 3
20、.4 3.4 全加器的全加器的VHDLVHDL描述描述3. 并置操作符并置操作符 SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ;.a 连接端口名连接端口名,.); 3.5 常用组合逻辑电路VHDL描述组合逻辑电路是一种在任何时刻的输出仅取决于当时输入信号的逻辑电路。常用的组合逻辑电路主要有编码器、译码器、数据选择器、运算电路和数值比较器等。1 1、基本门电路的设计、基本门电路的设计 LIBRARY IEEE; -USE IEEE.STD_LOGIC_1164.ALL; EN
21、TITY GATE IS - PORT(A:IN STD_LOGIC; - B:IN STD_LOGIC;YAND:OUT STD_LOGIC; -YOR:OUT STD_LOGIC;YNAND:OUT STD_LOGIC;YNOR:OUT STD_LOGIC;YNOT:OUT STD_LOGIC;YXOR:OUT STD_LOGIC);END GATE; -ARCHITECTURE example OF GATE IS -BEGINYAND=A AND B; -YOR=A OR B; -YNAND= A NAND B; -YNOR=A NOR B; -YNOT=NOT A; -YXOR=A
22、XOR B; -END example;基本逻辑门的逻辑结果三态门及三态门总线的表示方法 2、三态门及总线缓冲器的设计、三态门及总线缓冲器的设计LIBRARY IEEE; -USE IEEE.STD_LOGIC_1164.ALL; ENTITY A_BUS IS - PORT(EN:IN STD_LOGIC; -DIN:IN STD_LOGIC; - A_BUS:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); B_BUS:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); C_BUS:BUFFER STD_LOGIC_VECTOR(7 DOWNT
23、O 0); DOUT:OUT STD_LOGIC - );END A_BUS; -三态门及总线缓冲器三态门及总线缓冲器VHDL描述描述ARCHITECTURE example OF A_BUS IS -BEGINPROCESS(EN) ISBEGINIF EN=1 THENDOUT=DIN;ELSEDOUT=Z;END IF;END PROCESS;PROCESS(EN) ISBEGINIF EN=1 THENA_BUS=00001111; -B_BUS=11110000; -C_BUS=11111111; -ELSEA_BUS=ZZZZZZZZ; -B_BUS=ZZZZZZZZ; -C_BU
24、S=ZZZZZZZZ; -END IF;END PROCESS;END example;三态门及三态门总线的仿真结果优先编码器和普通编码器的符号表示 3、优先编码器的设计、优先编码器的设计LIBRARY IEEE; -USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ENCODER IS - PORT(DATAIN1:IN STD_LOGIC_VECTOR(9 DOWNTO 0); DATAIN2:IN STD_LOGIC_VECTOR(9 DOWN
25、TO 0); DATAOUT1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); DATAOUT2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END ENCODER; -优先编码器优先编码器VHDL描述描述ARCHITECTURE example OF ENCODER IS -BEGINPROCESS(DATAIN1) ISBEGINIF DATAIN1(0)=1 THENDATAOUT1=0000;ELSIF DATAIN1(1)=1 THENDATAOUT1=0001;ELSIF DATAIN1(2)=1 THENDATAOUT1=0010;E
26、LSIF DATAIN1(3)=1 THENDATAOUT1=0011;ELSIF DATAIN1(4)=1 THENDATAOUT1=0100;ELSIF DATAIN1(5)=1 THENDATAOUT1=0101;ELSIF DATAIN1(6)=1 THENDATAOUT1=0110;ELSIF DATAIN1(7)=1 THENDATAOUT1=0111;ELSIF DATAIN1(8)=1 THENDATAOUT1=1000;ELSIF DATAIN1(9)=1 THENDATAOUT1=1001;ELSEDATAOUT1=ZZZZ;END IF;END PROCESS;PROCE
27、SS(DATAIN2) ISBEGINIF DATAIN2=0000000001 THENDATAOUT2=0000;ELSIF DATAIN2=0000000010 THENDATAOUT2=0001;ELSIF DATAIN2=0000000100 THENDATAOUT2=0010;ELSIF DATAIN2=0000001000 THENDATAOUT2=0011;ELSIF DATAIN2=0000010000 THENDATAOUT2=0100;ELSIF DATAIN2=0000100000 THENDATAOUT2=0101;ELSIF DATAIN2=0001000000 T
28、HENDATAOUT2=0110;ELSIF DATAIN2=0010000000 THENDATAOUT2=0111;ELSIF DATAIN2=0100000000 THENDATAOUT2=1000;ELSIF DATAIN2=1000000000 THENDATAOUT2=1001;ELSEDATAOUT2=ZZZZ;END IF;END PROCESS;普通10-4编码器和优先10-4编码器的仿真波形 4、译码器的设计、译码器的设计普通4-10译码器和优先4-10译码器的仿真波形LIBRARY IEEE; -LIBRARY IEEE; -USE IEEE.STD_LOGIC_1164
29、.ALL;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DECODER IS - ENTITY DECODER IS - PORT(PORT(DATAIN1:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -DATAIN1:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -DATAIN2
30、:IN STD_LOGIC_VECTOR(3 DOWNTO 0);DATAIN2:IN STD_LOGIC_VECTOR(3 DOWNTO 0);DATAOUT1:OUT STD_LOGIC_VECTOR(9 DOWNTO 0); -DATAOUT1:OUT STD_LOGIC_VECTOR(9 DOWNTO 0); -DATAOUT2:OUT STD_LOGIC_VECTOR(9 DOWNTO 0)DATAOUT2:OUT STD_LOGIC_VECTOR(9 DOWNTO 0););END DECODER; -END DECODER; -译码器译码器VHDL描述描述ARCHITECTURE
31、 example OF DECODER IS -BEGINPROCESS(DATAIN1) ISBEGINIF DATAIN1(0)=1 THENDATAOUT1=0000000001;ELSIF DATAIN1(1)=1 THENDATAOUT1=0000000010;ELSIF DATAIN1(2)=1 THENDATAOUT1=0000000100;ELSIF DATAIN1(3)=1 THENDATAOUT1=0000001000;ELSEDATAOUT1=ZZZZZZZZZZ;END IF;END PROCESS;PROCESS(DATAIN2) ISPROCESS(DATAIN2)
32、 ISBEGINBEGINIF DATAIN2=0000 THENIF DATAIN2=0000 THENDATAOUT2=0000000001;DATAOUT2=0000000001;ELSIF DATAIN2=0001 THENELSIF DATAIN2=0001 THENDATAOUT2=0000000010;DATAOUT2=0000000010;ELSIF DATAIN2=0010 THENELSIF DATAIN2=0010 THENDATAOUT2=0000000100;DATAOUT2=0000000100;ELSIF DATAIN2=0011 THENELSIF DATAIN
33、2=0011 THENDATAOUT2=0000001000;DATAOUT2=0000001000;ELSIF DATAIN2=0100 THENELSIF DATAIN2=0100 THENDATAOUT2=0000010000;DATAOUT2=0000010000;ELSIF DATAIN2=0101 THENELSIF DATAIN2=0101 THENDATAOUT2=0000100000;DATAOUT2=0000100000;ELSIF DATAIN2=0110 THENELSIF DATAIN2=0110 THENDATAOUT2=0001000000;DATAOUT2=00
34、01000000;ELSIF DATAIN2=0111 THENELSIF DATAIN2=0111 THENDATAOUT2=0010000000;DATAOUT2=0010000000;ELSIF DATAIN2=1000 THENELSIF DATAIN2=1000 THENDATAOUT2=0100000000;DATAOUT2=0100000000;ELSIF DATAIN2=1001 THENELSIF DATAIN2=1001 THENDATAOUT2=1000000000;DATAOUT2=1000000000;ELSEELSEDATAOUT2=ZZZZZZZZZZ;DATAO
35、UT2=ZZZZZZZZZZ;END IF;END IF;END PROCESS;END PROCESS;普通4-10译码器和优先4-10译码器的仿真波形多路数据选择器的符号表示 5、多路选择器的设计、多路选择器的设计LIBRARY IEEE; -USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MUX IS - PORT(EN:IN STD_LOGIC; - S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);D:IN STD_LOGIC_VECTOR(15 DOWNTO 0); Y:OUT STD_LOGIC);END MUX; -多路选择器多路选择器VHDL描
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粘土小农场课件制作指南
- 入场教育标准化实施体系
- 2026届黑龙江省黑河市通北一中高一生物第一学期期末经典模拟试题含解析
- 山西省浑源县2026届高一数学第一学期期末学业水平测试试题含解析
- 生命教育危机应对
- 消化内科胃溃疡合并幽门螺杆菌感染根除治疗培训共识
- 《GBT 23945-2009无机化工产品中氯化物含量测定的通 用方法 目视比浊法》专题研究报告
- 《GBT 23990-2009涂料中苯、甲苯、乙苯和二甲苯含量的测定 气相色谱法》专题研究报告
- 儿童肝移植术后感染诊治指南2026
- 《GBT 23700-2009人-系统交互人类工效学 以人为中心的生命周期过程描述》专题研究报告深度
- 中原银行笔试题及答案
- 兽医心脏超声培训课件
- 学堂在线 雨课堂 学堂云 中国传统艺术-篆刻、书法、水墨画体验与欣赏 章节测试答案
- 输液导管相关静脉血栓形成防治中国专家共识解读
- 医院新员工培训课件
- 城镇作战基础知识培训课件
- 医院优先使用集采药品培训
- 2025-2030中国NTP服务行业市场现状供需分析及投资评估规划分析研究报告
- 高考数学一轮复习椭圆省公开课金奖全国赛课一等奖微课获奖课件
- 企业年度经营计划书
- 浙江省丽水市2024-2025学年高一上学期期末考试 化学 含答案
评论
0/150
提交评论