2VHDL设计初步1

上传人:ni****g 文档编号:590541732 上传时间:2024-09-14 格式:PPT 页数:75 大小:2.39MB
返回 下载 相关 举报
2VHDL设计初步1_第1页
第1页 / 共75页
2VHDL设计初步1_第2页
第2页 / 共75页
2VHDL设计初步1_第3页
第3页 / 共75页
2VHDL设计初步1_第4页
第4页 / 共75页
2VHDL设计初步1_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《2VHDL设计初步1》由会员分享,可在线阅读,更多相关《2VHDL设计初步1(75页珍藏版)》请在金锄头文库上搜索。

1、第二章 VHDL设计初步 硬件描述语言概述 4选1数据选择器VHDL描述 VHDL设计基本语法结构 寄存器描述及其VHDL语言现象 全加器VHDL设计 VHDL文本设计方法初步 QuartusII工具软件使用l原理图输入与原理图输入与 HDL 文本输入设计的区别文本输入设计的区别 1. Graphic is what you draw is what you get1. Graphic is what you draw is what you get“ tell me what hardware you want and I will give it to you”2. HDL is what

2、 you write is what functional you get“ tell me how your circuit should behave and the HDL compiler will give you the hardware that does the job” but the designer can not control how the circuit implement2.1 2.1 硬件描述语言硬件描述语言(HHardware ardware D Description escription L Languageanguage)lHDL的种类的种类VHDL的

3、含义的含义VHSIC (Very High Speed Integrated Circuit)HardwareDescriptionLanguageVHDL发展历史发展历史l1981年年, 诞生于美国国防部赞助的研究计划,目的诞生于美国国防部赞助的研究计划,目的是为了把电子电路的设计以电子文档的方式保存下是为了把电子电路的设计以电子文档的方式保存下来;来;l19831985年年, IBM、TI等公司对其进行了细致开等公司对其进行了细致开发;发; l1987年底年底,VHDL被被IEEE和美国国防部确认为标准和美国国防部确认为标准硬件描述语言硬件描述语言 ,即,即IEEE-1076(简称(简称8

4、7版版) l1993年年,IEEE对对VHDL进行了修订,公布了新版本进行了修订,公布了新版本的的VHDL,即,即IEEE标准的标准的1076-1993(1164)版本)版本 l1996年年,IEEE又推出又推出IEEE-1076.3和和IEEE-1076.4,以解决可综合以解决可综合VHDL描述在描述在 不同不同EDA厂商之间的移厂商之间的移植问题,以及植问题,以及ASIC/FPGA的门级库描述问题。的门级库描述问题。VHDL特点特点l与其他的硬件描述语言相比,与其他的硬件描述语言相比,VHDL具有更强的行为具有更强的行为描述能力描述能力 lVHDL丰富的仿真语句和库函数,使得在设计的早期丰

5、富的仿真语句和库函数,使得在设计的早期就能查验设计系统的功能可行性,随时可对设计进行就能查验设计系统的功能可行性,随时可对设计进行仿真模拟仿真模拟 lVHDL语句的行为描述能力和程序结构决定了他具有语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能支持大规模设计的分解和已有设计的再利用功能l对于用对于用VHDL完成的一个确定的设计,可以利用完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把工具进行逻辑综合和优化,并自动的把VHDL描述设描述设计转变成门级网表计转变成门级网表lVHDL对设计的描述具有相对独立性,设计者可以不对设计的描述具有相对

6、独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计是什么,而进行独立的设计 2.2 42.2 4选选1 1数据选择器数据选择器VHDLVHDL描述描述一、一、4选选选选1 1数据选择器的数据选择器的数据选择器的数据选择器的VHDLVHDL描述描述描述描述library IEEE;library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_

7、arith.all;use IEEE.std_logic_unsigned.all;use IEEE.std_logic_unsigned.all;d d0 0y ymux4_mux4_1 1d d2 2d d1 1d d3 3selsel2 2entity mux4_1 isentity mux4_1 isport(sel: in STD_LOGIC_VECTOR(1 downto 0);port(sel: in STD_LOGIC_VECTOR(1 downto 0); d0,d1, d0,d1, d2,d2, d3:in STD_LOGIC;d3:in STD_LOGIC; y: out

8、 STD_LOGIC); y: out STD_LOGIC);end mux4_1;end mux4_1;architecture example of mux4_1 isarchitecture example of mux4_1 isbeginbegin process (sel, d0, d1, d2, d3) process (sel, d0, d1, d2, d3) begin begin case sel is case sel is when 00 = y y y y y y y y y y = X; end case; end case; end process; end pr

9、ocess;end example; end example; 二、不同描述方式的二、不同描述方式的二、不同描述方式的二、不同描述方式的4 4选选选选1 1数据选择器数据选择器数据选择器数据选择器例例例例1 1library IEEE;library IEEE;use IEEE.std_logic_1164.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_unsi

10、gned.all;entity mux4_1 isentity mux4_1 isport(sel: in STD_LOGIC_VECTOR(1 downto 0);port(sel: in STD_LOGIC_VECTOR(1 downto 0); d0,d1, d0,d1, d2,d2, d3:in STD_LOGIC;d3:in STD_LOGIC; y: out STD_LOGIC); y: out STD_LOGIC);end mux4_1;end mux4_1;Architecture aaa of mux4_1 is Architecture aaa of mux4_1 is B

11、eginBeginy = (d0 AND NOT(sel(1) AND NOT(sel(0) ORy = (d0 AND NOT(sel(1) AND NOT(sel(0) OR(d1 AND NOT(sel(1) AND sel(0) OR(d1 AND NOT(sel(1) AND sel(0) OR(d2 AND sel(1) AND NOT(sel(0) OR (d2 AND sel(1) AND NOT(sel(0) OR (d3 AND sel(1) AND sel(0) ;(d3 AND sel(1) AND sel(0) ;End aaa;End aaa;例例例例2 2libr

12、ary IEEE;library IEEE;use IEEE.std_logic_1164.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 mux4_1 isentity mux4_1 isport(port(S S: in STD_LOGIC_VECTOR(1 downto 0);: in STD_LOGIC_VECTOR

13、(1 downto 0); A,B,A,B, C,C, D D:in STD_LOGIC;:in STD_LOGIC; X X: out STD_LOGIC);: out STD_LOGIC);end mux4_1;end mux4_1;A AX Xmuxmux4-14-1C CB BD DS S2 2ARCHITECTURE ARCHITECTURE logiclogic OF mux4_1 IS OF mux4_1 ISBEGIN BEGIN WITH WITH S S SELECT SELECT X X = MUX_OUT MUX_OUT MUX_OUT MUX_OUT MUX_OUT

14、= Z; end case; end process;end example0; 结论:结论:1.VHDL程序有结构的,由三部分组成。程序有结构的,由三部分组成。2.同一种功能模块可以由不同的语句来描述,同一种功能模块可以由不同的语句来描述,而且描述的模块功能可大可小(可编程期间而且描述的模块功能可大可小(可编程期间的优势所在)。的优势所在)。3.程序中有些字词可以自行修改,有些是固定程序中有些字词可以自行修改,有些是固定不变的。不变的。2.3 VHDL2.3 VHDL设计的基本语法结构设计的基本语法结构 用用一一个个VHDL程程序序来来描描述一个模块电路。述一个模块电路。电路电路模型模型IN

15、1INmOUTnOUT11. VHDL程序的基本结构程序的基本结构lUse Library(库)(库) 用来说明电路模型需要使用的标准库用来说明电路模型需要使用的标准库lEntity(实体实体)用来说明电路模型的端口构成和信号属性用来说明电路模型的端口构成和信号属性lArchitecture(构造体构造体)用一些语句来描述电路模型的功能用一些语句来描述电路模型的功能librarylibrary IEEE; IEEE;useuse IEEE.std_logic_1164.all; IEEE.std_logic_1164.all;useuse IEEE.std_logic_arith.all; I

16、EEE.std_logic_arith.all;useuse IEEE.std_logic_unsigned.all; IEEE.std_logic_unsigned.all;entityentity mux4_1 is mux4_1 isportport( (S S: in STD_LOGIC_VECTOR(1 downto 0);: in STD_LOGIC_VECTOR(1 downto 0); A,B,A,B, C,C, D D:in STD_LOGIC;:in STD_LOGIC; X X: out STD_LOGIC);: out STD_LOGIC);endend mux4_1;

17、 mux4_1;引用库引用库实体实体结构体结构体ARCHITECTURE logic OF mux4_1 ISBEGIN WITH S SELECT X =A WHEN “00”, B WHEN “01”, C WHEN “10”, D WHEN OTHERS;End logic;1)1)实体实体实体实体l类似一个类似一个“黑盒黑盒”,实,实体描述了体描述了“黑盒黑盒”的输的输入输出口构成和信号属入输出口构成和信号属性性黑盒黑盒黑盒黑盒A AB BC CX XMUX4_1MUX4_1D DS S实体举例实体举例实体举例实体举例entity mux4_1 isport(S: in STD_LOG

18、IC_VECTOR(1 downto 0); A, B, C, D:in STD_LOGIC; X: out STD_LOGIC);end mux4_1;黑盒黑盒黑盒黑盒A AB BC CX XMUX4_1MUX4_1D DS S包含三条语句。包含三条语句。entity mux4_1 is Entity、is是关键字。是关键字。mux4_1为实体名,由设为实体名,由设计者自定,表达电路模计者自定,表达电路模型的名字,型的名字,PORT()端口说明语句端口说明语句port(S: in. ); 描述电路模型端口及端口信号。描述电路模型端口及端口信号。 PORT信信息息一一般般有有 Name(端端口

19、口信信号号名名),Mode(端端口模式)口模式)和和Type(端口信号数据类型)(端口信号数据类型)。entity mux4_1 isport(S: in STD_LOGIC_VECTOR(1 downto 0); A, B, C, D:in STD_LOGIC; X: out STD_LOGIC);end mux4_1;端口说明格式端口说明格式端口说明格式端口说明格式 PORT(Name1:Mode Type ; Name2:Mode Type; ); Mode(端口模式)(端口模式)IN:数据只能从端口流入实体数据只能从端口流入实体OUT:数据只能从端口流出实体数据只能从端口流出实体INO

20、UT:数据从端口流入或流出实体数据从端口流入或流出实体BUFFER:数据从端口流出实体,同时可被内部反馈数据从端口流出实体,同时可被内部反馈Entity端口说明格式端口说明格式端口说明格式端口说明格式 PORT(Name1:Mode Type ; Name2:Mode Type; );Type(端口信号数据类型)(端口信号数据类型)lVHDL规定:任何数据对象必须严格限定其取值范围。即规定:任何数据对象必须严格限定其取值范围。即对其传输的信号或存储的数据的类型做明确界定。对其传输的信号或存储的数据的类型做明确界定。l有有BIT :位类型;:位类型; BOOLEAN:布尔类型;:布尔类型; IN

21、TEGER:整型;整型; STD_LOGIC:标准逻辑位,:标准逻辑位,STD_LOGIC_VECTOR:标准逻辑矢量等。:标准逻辑矢量等。端口说明格式端口说明格式端口说明格式端口说明格式 PORT(Name1:Mode Type ; Name2:Mode Type; );实体结束语句:实体结束语句: end mux4_1;entity mux4_1 isport(S: in STD_LOGIC_VECTOR(1 downto 0); A, B, C, D:in STD_LOGIC; X: out STD_LOGIC);end mux4_1;my_designd11:0oeclkad11:0a

22、11:0intas练习:练习:练习:练习:编写编写 包含以下内容的实体代码包含以下内容的实体代码端口端口 d 为为12位输入总线位输入总线 端口端口 oe 和和 clk 都是都是1位输入位输入端口端口 ad 为为 12位双向总线位双向总线端口端口 a 为为12位输出总线位输出总线端口端口 int 是是1位输出位输出端口端口 as 是一位输出同时被用作内部是一位输出同时被用作内部反馈反馈ENTITY my_design IS PORT (d: IN std_logic_vector(11 DOWNTO 0);oe,clk:IN std_logic;ad: INOUT std_logic_vect

23、or(11 DOWNTO 0);a: OUT std_logic_vector(11 DOWNTO 0);int: OUT std_logic;as: BUFFER std_logic);END my_design;my_designd11:0oeclkad11:0a11:0intas2)2)构造体(结构体构造体(结构体 Architecture)l用来描述实体的内部结构和逻辑功能用来描述实体的内部结构和逻辑功能l每一个构造体必须有一个实体(每一个构造体必须有一个实体(ENTITY)与它相)与它相对应,所以两者一般成对出现对应,所以两者一般成对出现l一个实体(一个实体(ENTITY)可以有多个

24、构造体)可以有多个构造体l构造体的运行是并发的构造体的运行是并发的ARCHITECTURE logic OF mux4_1 ISBEGIN WITH S SELECT X =A WHEN “00”, B WHEN “01”, C WHEN “10”, D WHEN OTHERS;End logic;结构体语句格式结构体语句格式结构体语句格式结构体语句格式 ArchitectureArchitecture 结构体名结构体名 OfOf 实体名实体名 IsIs 说明语句说明语句 BeginBegin 功能描述语句功能描述语句 EndEnd 结构体名结构体名;ARCHITECTURE logic OF

25、 mux4_1 ISBEGIN WITH S SELECT X =A WHEN “00”, B WHEN “01”, C WHEN “10”, D WHEN OTHERS;End logic;3)3)库(库(Library)v 用来存储预先完成的程序包和数据集合体的仓库用来存储预先完成的程序包和数据集合体的仓库 v 在在VHDL设计中若使用库中内容,必须在该设计的设计中若使用库中内容,必须在该设计的实体前使用库语句和实体前使用库语句和USE语句语句v 语句格式语句格式语句格式语句格式: Library 库名;库名; Use 库名库名.程序包名程序包名. All; Use 库名库名.程序包名程序

26、包名. 项目名项目名;librarylibrary IEEE; IEEE;useuse IEEE.std_logic_1164.all; IEEE.std_logic_1164.all;useuse IEEE.std_logic_arith.all; IEEE.std_logic_arith.all;useuse IEEE.std_logic_unsigned.all; IEEE.std_logic_unsigned.all;l IEEE库是库是VHDL设计中最常见的库,设计中最常见的库,包含包含IEEE标准程序标准程序包和一些支持工业包和一些支持工业标准的程序包标准的程序包例例1:LIBRA

27、RY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY test isPORT( A,B,C : IN Bit; D,E: OUT Bit );END test;ABCDE2. 2.VHDLVHDL相关语法说明相关语法说明相关语法说明相关语法说明1 1)数据类型)数据类型)数据类型)数据类型ARCHITECTURE a OF test ISBEGIND = A and B;E = not C;END a;ABCDE BIT :位类型,其值只能为

28、:位类型,其值只能为 0或或 1例:例:Signal a: BIT;(;( a = 1 ) BIT_VECTOR :位矢量类型,包含一组位类型:位矢量类型,包含一组位类型例:例:Signal a: BIT_VECTOR (7 DOWNTO 0) ( a = “00000001” 、 a = a + 1)STD_LOGIC:标准逻辑:标准逻辑STD_LOGIC_VECTOR:标准逻辑矢量:标准逻辑矢量他们是数字电路设计的工业标准逻辑类型,有他们是数字电路设计的工业标准逻辑类型,有9种取值。种取值。取值取值取值取值含义含义含义含义 U U 未初始化未初始化未初始化未初始化 0 0 强强强强0 0

29、1 1 强强强强1 1 Z Z 高阻高阻高阻高阻 WW 弱未知弱未知弱未知弱未知 L L 弱弱弱弱0 0 HH 弱弱弱弱1 1 - - 忽略忽略忽略忽略若电路中有三态逻辑若电路中有三态逻辑(Z) 必须用必须用STD_LOGIC 和和 STD_LOGIC _VECTOR。要使用这种类型代码中必须申要使用这种类型代码中必须申明库和程序包说明语句明库和程序包说明语句LIBRARY IEEE; USE IEEE.std_logic_1164.ALL;2 2)信号传输(赋值)符号和数据比较符号)信号传输(赋值)符号和数据比较符号)信号传输(赋值)符号和数据比较符号)信号传输(赋值)符号和数据比较符号x

30、= d0 when (s = “00”) else d1 when (s = “01”) else d2 when (s = “10”) else d3 ;x = d0表示输入端口表示输入端口d0的数据向输出端口的数据向输出端口x传输,传输,也叫也叫d0向向 x赋值。表示电路内部连线或端口,有传赋值。表示电路内部连线或端口,有传输延迟。输延迟。when (s = “00”)判断的条件,通过测定判断的条件,通过测定s = “00”的比的比较结果确定信号的流向较结果确定信号的流向 ,“ =”为数据比较符号。为数据比较符号。比较运算符还有比较运算符还有“/=”、“=”、“”。 3 3)逻辑操作符号)

31、逻辑操作符号)逻辑操作符号)逻辑操作符号ARCHITECTURE a OF test ISBEGIND = A and B;E = not C;END a;ABCDEAnd、 not是逻辑是逻辑操作符号。操作符号。VHDL提供提供7种逻种逻辑操作符。辑操作符。运算符运算符运算符运算符功能功能功能功能ANDAND与与与与OROR或或或或NANDNAND与非与非与非与非NORNOR或非或非或非或非XORXOR异或异或异或异或XNORXNOR异或非异或非异或非异或非NOTNOT非非非非4 4)信号赋值语句)信号赋值语句)信号赋值语句)信号赋值语句例例1 :ARCHITECTURE a OF test

32、 ISBEGIND = A and B;E = not(C and A);END a;vv直接信号赋值语句直接信号赋值语句直接信号赋值语句直接信号赋值语句语法格式:语法格式:语法格式:语法格式: vvVHDLVHDL支持所有的标准逻辑运算:支持所有的标准逻辑运算:支持所有的标准逻辑运算:支持所有的标准逻辑运算: AND, OR, NOT, XOR, XNOR, NANDsignal_name = signal_name = signal_name = signal_name = 逻辑表达式逻辑表达式逻辑表达式逻辑表达式signal_namesignal_namesignal_namesigna

33、l_name = = = = value_1value_1value_1value_1 WHEN WHEN WHEN WHEN condition1condition1condition1condition1 ELSE ELSE ELSE ELSE value_2value_2value_2value_2 WHEN WHEN WHEN WHEN condition2condition2condition2condition2 ELSE ELSE ELSE ELSE . . . . value_nvalue_nvalue_nvalue_n WHEN WHEN WHEN WHEN conditio

34、nnconditionnconditionnconditionn ELSE ELSE ELSE ELSE value_x;value_x;value_x;value_x;vv条件信号赋值语句条件信号赋值语句条件信号赋值语句条件信号赋值语句( When_Else )( When_Else )语法格式:语法格式:语法格式:语法格式:例例2:ARCHITECTURE a OF test ISBEGIN x = d0 when (s =“00”) else d1 when (s =“01”) else d2 when (s =“10”) else d3 ;END a; x = d0 when (s =

35、“00”) else d1 when (s =“01”) else d2 when (s =“10”) else d3 ;v根据指定条件对信号赋值,条件可以为任意逻根据指定条件对信号赋值,条件可以为任意逻辑表达式。辑表达式。v根据条件出现的先后次序,根据条件出现的先后次序,ELSE子句有优先子句有优先权权(按优先顺序逐条测试条件按优先顺序逐条测试条件)v最后一个最后一个 ELSE子句隐含了所有未列出的条件子句隐含了所有未列出的条件v每一子句结尾没有标点,只有最后一句有每一子句结尾没有标点,只有最后一句有“;”例例3:ARCHITECTURE logic OF mux4_1 ISBEGIN WI

36、TH S SELECT X = A WHEN “00”, B WHEN “01”, C WHEN “10”, D WHEN OTHERS;End logic;vv选择信号赋值语句选择信号赋值语句选择信号赋值语句选择信号赋值语句( With_Select_When )( With_Select_When )语法格式:语法格式:语法格式:语法格式:WITH WITH selection_signalselection_signal SELECT SELECT signal_namesignal_name = = value_1value_1 WHEN WHEN value_avalue_a , ,

37、 value_2value_2 WHEN WHEN value_bvalue_b , , . value_nvalue_n WHEN WHEN value_nvalue_n , , value_xvalue_x WHEN OTHERS WHEN OTHERS ; ;WITHWITH S S SELECTSELECT X X = A A WHENWHEN “00”, “00”, B B WHENWHEN “01”, “01”, C C WHENWHEN “10”, “10”, D D WHENWHEN OTHERSOTHERS; ;v 所有的所有的“WHEN”子句必须是互斥的子句必须是互斥的v

38、一般用一般用“When Others”来处理未考虑到的情况来处理未考虑到的情况v 每一子句结尾是逗号,最后一句是分号每一子句结尾是逗号,最后一句是分号WITHWITH s s SELECTSELECT x = a x = a WHENWHEN ”000000” | | | | “001001” | | | | “010010”, , b b WHENWHEN “101101” | | | | “111111”, , c c WHEN OTHERSWHEN OTHERS; ;表示或逻辑表示或逻辑表示或逻辑表示或逻辑3. 3.真值表的真值表的真值表的真值表的VHDLVHDL描述描述描述描述EN A

39、2 A1 A0Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y00 X X X 0 0 0 0 0 0 0 01 0 0 00 0 0 0 0 0 0 11 0 0 10 0 0 0 0 0 1 01 0 1 00 0 0 0 0 1 0 01 0 1 10 0 0 0 1 0 0 01 1 0 00 0 0 1 0 0 0 01 1 0 10 0 1 0 0 0 0 01 1 1 00 1 0 0 0 0 0 01 1 1 11 0 0 0 0 0 0 01 1)三线)三线)三线)三线八线译码器的八线译码器的八线译码器的八线译码器的VHDLVHDL程序:程序:程序:程序:LIBRARYLIBRA

40、RY IEEE ; IEEE ;USEUSE IEEE.STD_LOGIC_1164.ALL ; IEEE.STD_LOGIC_1164.ALL ;USEUSE IEEE.STD_LOGIC_ARITH.ALL; IEEE.STD_LOGIC_ARITH.ALL;USEUSE IEEE.STD_LOGIC_UNSIGNED.ALL;IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYENTITY encoder encoder ISIS PORT (PORT ( A : IN STD_LOGIC_VECTOR( 2 DOWNTO 0) ; A : IN STD_LOGIC_VE

41、CTOR( 2 DOWNTO 0) ; EN : IN STD_LOGIC ; EN : IN STD_LOGIC ; Y : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0) ; Y : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0) ;END END encoder;encoder;ARCHITECTURE ARCHITECTURE a a OFOF encoder encoder ISISSIGNALSIGNAL sel: STD_LOGIC_VECTOR( 3 DOWNTO 0) ; sel: STD_LOGIC_VECTOR( 3 DOWNTO

42、0) ;BEGINBEGIN “SIGNAL SIGNAL sel: sel: ”sel为内部连接信号,必须在结为内部连接信号,必须在结构体说明区域先说明后才能在结构体中使用。构体说明区域先说明后才能在结构体中使用。( BEGIN ) sel = EN & A; - -将将将将ENEN、X7X7、X6X6、X0X0合并以简化程序合并以简化程序合并以简化程序合并以简化程序WITH sel SELECT Y= 00000001 WHEN 1000, 00000010 WHEN 1001, 00000100 WHEN 1010, 00001000 WHEN 1011, 00010000 WHEN 1

43、100, 00100000 WHEN 1101, 01000000 WHEN 1110, 10000000 WHEN 1111, “00000000” WHEN OTHERS ; -包含包含EN=0的情况的情况END a ;sel(3) = EN;sel(3) = EN;sel(2) = A(2);sel(2) = A(2);sel(1) = A(1);sel(1) = A(1);sel(0) = A(0);sel(0) = A(0); “&”是是“并置并置”运算符,实现将多个信号合并成总运算符,实现将多个信号合并成总线形式。线形式。 VHDL程序中,每条语句都要以程序中,每条语句都要以“;”

44、结束。结束。2 2)八线)八线)八线)八线三线优先编码器的三线优先编码器的三线优先编码器的三线优先编码器的VHDLVHDL程序:程序:程序:程序:EN X7 X6 X5 X4 X3 X2 X1 X0Y2 Y1 Y00 X X X X X X X X0 0 01 0 0 0 0 0 0 0 10 0 01 0 0 0 0 0 0 1 00 0 11 0 0 0 0 0 1 0 00 1 01 0 0 0 0 1 0 0 00 1 11 0 0 0 1 0 0 0 01 0 01 0 0 1 0 0 0 0 01 0 11 0 1 0 0 0 0 0 01 1 01 1 0 0 0 0 0 0 0

45、1 1 1LIBRARYLIBRARY IEEE ; IEEE ;USEUSE IEEE.STD_LOGIC_1164.ALL ; IEEE.STD_LOGIC_1164.ALL ;USEUSE IEEE.STD_LOGIC_ARITH.ALL; IEEE.STD_LOGIC_ARITH.ALL;USEUSE IEEE.STD_LOGIC_UNSIGNED.ALL;IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYENTITY Coder Coder ISIS PORT (PORT ( X : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ;X : IN S

46、TD_LOGIC_VECTOR(7 DOWNTO 0) ; EN : IN STD_LOGIC ;EN : IN STD_LOGIC ; Y Y : OUT STD_LOGIC_VECTOR( 2 DOWNTO 0) ;: OUT STD_LOGIC_VECTOR( 2 DOWNTO 0) ;ENDEND Coder ; Coder ;ARCHITECTUREARCHITECTURE a a OFOF Coder Coder ISISSIGNAL SIGNAL Sel: STD_LOGIC_VECTOR(8Sel: STD_LOGIC_VECTOR(8 DOWNTO 0);DOWNTO 0);

47、BEGINBEGIN Sel = EN Sel = EN & X ;- X ;-将将将将ENEN、X7X7、X6X6、X0X0合并以简化程序合并以简化程序合并以简化程序合并以简化程序 Y = “111” Y = “111” WHENWHEN (Sel =(Sel =“110000000”“110000000”) ) ELSEELSE 110 110 WHENWHEN (Sel = (Sel = 101000000 101000000 ) ) ELSEELSE 101 101 WHENWHEN (Sel = (Sel = 100100000 100100000 ) ) ELSEELSE 100

48、100 WHENWHEN (Sel = (Sel = 100010000 100010000 ) ) ELSEELSE 011 011 WHENWHEN (Sel = (Sel = 100001000 100001000 ) ) ELSEELSE “010 “010 WHENWHEN (Sel = (Sel = 100000100 100000100 ) ) ELSEELSE 001 001 WHENWHEN (Sel = (Sel = 100000010 100000010 ) ) ELSEELSE 000 000 WHENWHEN (Sel = (Sel = 100000001 10000

49、0001 ) ) ELSEELSE 000 ; 000 ; -包含包含EN=0的情况的情况ENDEND a ; a ;vv利用利用WithWithSelectSelectWhenWhen语句、语句、WhenWhenElseElse语句或语句或CaseCaseWhenWhen语句来实现真值表语句来实现真值表LIBRARYLIBRARY ieee; ieee;USEUSE ieee.std_logic_1164.all; ieee.std_logic_1164.all;ENTITY simp ENTITY simp ISISPORTPORT(a, b, c, d : IN Std_Logic;(a

50、, b, c, d : IN Std_Logic;g : OUT Std_Logic);g : OUT Std_Logic);ENDEND simp; simp;ARCHITECTUREARCHITECTURE logic logic OFOF simp simp ISISSIGNAL SIGNAL e e,f : Std_Logic;f : Std_Logic;BEGINBEGIN e = a or b; e = a or b; f = not(c or d); f = not(c or d); g = e and f; g = e and f;ENDEND logic; logic;a a

51、b bc cd dg ge ef fvv 例:端口信号和内部连接信号的说明例:端口信号和内部连接信号的说明例:端口信号和内部连接信号的说明例:端口信号和内部连接信号的说明端口信号端口信号端口信号端口信号在构造体内声明的内部连接信号在构造体内声明的内部连接信号在构造体内声明的内部连接信号在构造体内声明的内部连接信号v 信号赋值信号赋值l lSIGNALSIGNAL temp : Std_Logic_Vector (7 downto 0); temp : Std_Logic_Vector (7 downto 0);l l整体赋值整体赋值整体赋值整体赋值: :temp = “10101010”;te

52、mp = “10101010”;temp = x”AA” ;temp = x”AA” ; l l逐位赋值逐位赋值逐位赋值逐位赋值: :temp(7) = 1;temp(7) = 1;l l多位赋值多位赋值多位赋值多位赋值: :l ltemp (7 downto 4) = “1010”temp (7 downto 4) = “1010”;多位赋值多位赋值多位赋值多位赋值用双引号用双引号用双引号用双引号逐位赋值逐位赋值逐位赋值逐位赋值用单引号用单引号用单引号用单引号赋值标志赋值标志赋值标志赋值标志2.4 2.4 寄存器描述及其寄存器描述及其VHDLVHDL语言现象语言现象一、D D触发器的触发器的

53、VHDLVHDL描述描述DclkQdq上升沿触发的上升沿触发的上升沿触发的上升沿触发的DFFDFFLIBRARYLIBRARY IEEE ; IEEE ; USEUSE IEEE.STD_LOGIC_1164.ALL ; IEEE.STD_LOGIC_1164.ALL ;ENTITYENTITY ddf_logic ddf_logic ISIS PORTPORT (d ,clk: (d ,clk:IN STD_LOGIC; IN STD_LOGIC; q: OUT STD_LOGIC) ; q: OUT STD_LOGIC) ; ENDEND ddf_logic ; ddf_logic ;AR

54、CHITECTUREARCHITECTURE example example OFOF ddf_logic ddf_logic ISISBEGINBEGIN PROCESSPROCESS (clk) (clk) BEGINBEGIN IF IF clkevent and clk=1 clkevent and clk=1 thenthenq = d; q = d; END IF;END IF;END PROCESSEND PROCESS; ;ENDEND example; example;eventevent: :信号属性函数关键字,信号属性函数关键字,信号属性函数关键字,信号属性函数关键字,检

55、测检测检测检测clkclk电平是否发生变化。电平是否发生变化。电平是否发生变化。电平是否发生变化。clkevent and clk=1clkevent and clk=1检测上升检测上升检测上升检测上升沿。沿。沿。沿。下降沿触发:下降沿触发:下降沿触发:下降沿触发:clkevent clkevent and clk=0and clk=0rising_edge(clk):测定上升沿函数,必须测定上升沿函数,必须定义定义clk为为STD_LOGICSTD_LOGIC,同时要引用,同时要引用,同时要引用,同时要引用IEEE.STD_LOGIC_1164.ALL IEEE.STD_LOGIC_1164

56、.ALL 程序程序程序程序包包包包二、二、D D触发器触发器VHDLVHDL描述的语言现象说明描述的语言现象说明 进程语句和顺序语句进程语句和顺序语句PROCESSPROCESS (clk) (clk) BEGINBEGIN IF clkevent and clk=1 thenIF clkevent and clk=1 thenq = d; q = d; END IF;END IF;END PROCESSEND PROCESS; ; 进程名称进程名称进程名称进程名称: PROCESS PROCESS PROCESS PROCESS( ( ( (敏感信号敏感信号敏感信号敏感信号1,1,1,1,敏

57、感信号敏感信号敏感信号敏感信号2,2,2,2,) ) ) ) 说明区说明区说明区说明区 BEGINBEGINBEGINBEGIN 顺序语句顺序语句顺序语句顺序语句 END PROCESS END PROCESS END PROCESS END PROCESS 进程名称进程名称进程名称进程名称 ;进程语句基本格式:进程语句基本格式:进程语句基本格式:进程语句基本格式:LIBRARYLIBRARY ieee; ieee;USEUSE ieee.std_logic_1164.all; ieee.std_logic_1164.all;ENTITYENTITY if_case if_case ISIS

58、PORT PORT ( a, b, c, d, e, f : IN Std_Logic;( a, b, c, d, e, f : IN Std_Logic;sel : IN Std_Logic_Vector(1 downto sel : IN Std_Logic_Vector(1 downto 0);0); x, y, z : OUT Std_Logic); x, y, z : OUT Std_Logic);ENDEND if_case; if_case;ARCHITECTUREARCHITECTURE logic logic OFOF if_case if_case ISISBEGINBEG

59、INif_label:if_label:PROCESSPROCESS (a, b, c, d, sel) (a, b, c, d, sel)BEGINBEGIN IFIF sel=00 sel=00 THENTHEN y = a; y = a; ELSIF ELSIF sel=01 sel=01 THEN THEN y = b; y = b; ELSIF ELSIF sel=10 sel=10 THENTHEN y = c; y = c; ELSEELSE y = d; y z z z z z = 0; END CASE;END PROCESS case_label; x= (e and y)

60、 or (f and z)END logic;一个构造体内可有多个进程语句一个构造体内可有多个进程语句一个构造体内可有多个进程语句一个构造体内可有多个进程语句进程和进程之间是并行关系进程和进程之间是并行关系进程和进程之间是并行关系进程和进程之间是并行关系进进进进程程程程和和和和进进进进程程程程之之之之间间间间的的的的数数数数据据据据交交交交换换换换通通通通过过过过信信信信号完成号完成号完成号完成进进进进程程程程的的的的运运运运行行行行依依依依赖赖赖赖于于于于敏敏敏敏感感感感表表表表内内内内参参参参数数数数的的的的变化变化变化变化进程赖以启动的信号敏感表进程赖以启动的信号敏感表进程赖以启动的信号

61、敏感表进程赖以启动的信号敏感表v进程内部输入信号的改变,都将启动进程,执行进进程内部输入信号的改变,都将启动进程,执行进程内相应顺序语句。程内相应顺序语句。v一些一些VHDLVHDL综合器,综合后,对应进程的硬件系统对综合器,综合后,对应进程的硬件系统对进程中的所有输入的信号都是敏感的,不论在源程进程中的所有输入的信号都是敏感的,不论在源程序的进程中是否把所有的输入信号都列入敏感表。序的进程中是否把所有的输入信号都列入敏感表。v为了使软件仿真与综合后的硬件仿真对应起来,应为了使软件仿真与综合后的硬件仿真对应起来,应当将进程中的所有输人信号都列入敏感表中。当将进程中的所有输人信号都列入敏感表中。

62、 PROCESS (clkPROCESS (clk,d d) ) PROCESSPROCESS (clk) (clk) BEGINBEGIN IF clkevent and clk=1 thenIF clkevent and clk=1 thenq = d; q = d; END IF;END IF; END PROCESSEND PROCESS; ;进程内部是一组连续执行的顺序语句进程内部是一组连续执行的顺序语句进程内部是一组连续执行的顺序语句进程内部是一组连续执行的顺序语句v每一条顺序语句的执行每一条顺序语句的执行( (指仿真执行指仿真执行) )顺序是与它顺序是与它们的书写顺序基本一致的。

63、反映了信号操作的优们的书写顺序基本一致的。反映了信号操作的优先级。先级。v顺序语句包括:顺序赋值语句、顺序语句包括:顺序赋值语句、流程控制语句流程控制语句、等待语句、子程序调用语句、返回语句、空操作等待语句、子程序调用语句、返回语句、空操作语句语句PROCESSPROCESS (clk) (clk) BEGINBEGIN IFIF clkevent and clk=1 clkevent and clk=1 thenthen q = d; q b a b then then q =1;q =1; ELSIFELSIF a b a b then then q =0; q b a b a b a b

64、 then then then then q =q =q =q =1 1 1 1; ; ; ; ELSEELSEELSEELSE q = q = q = q =0 0 0 0; ; ; ; END IFEND IFEND IFEND IF; ; ; ;END PROCESSEND PROCESSEND PROCESSEND PROCESS; ; ; ;a ba bq q0 00 00 00 10 10 01 01 01 11 11 10 0三、电平触发的三、电平触发的三、电平触发的三、电平触发的D D触发器触发器触发器触发器 D D D D锁存器锁存器锁存器锁存器DclkQdq电平触发的电平触

65、发的电平触发的电平触发的DFFDFFLIBRARYLIBRARY IEEE ; IEEE ; USEUSE IEEE.STD_LOGIC_1164.ALL ; IEEE.STD_LOGIC_1164.ALL ;ENTITYENTITY ddf_logic ddf_logic ISIS PORTPORT (d,clk:IN STD_LOGIC; (d,clk:IN STD_LOGIC; q: OUT STD_LOGIC) ; q: OUT STD_LOGIC) ; ENDEND ddf_logic ; ddf_logic ;ARCHITECTUREARCHITECTURE example exa

66、mple OFOF ddf_logic ddf_logic ISISBEGINBEGIN PROCESSPROCESS (clk , d ) - (clk , d ) -把把把把d d加到敏感表中加到敏感表中加到敏感表中加到敏感表中BEGINBEGINIF IF clk=1thenclk=1thenq = d; q = d; END IF;END IF; END PROCESSEND PROCESS; ;ENDEND example; example;高电平敏感的高电平敏感的D锁存器;锁存器;低电平敏感:低电平敏感:clk=0上升沿触发上升沿触发上升沿触发上升沿触发D D触发器触发器触发器触发

67、器高电平有效的高电平有效的高电平有效的高电平有效的D D锁存器锁存器锁存器锁存器四、同步时序逻辑和异步时序逻辑四、同步时序逻辑和异步时序逻辑四、同步时序逻辑和异步时序逻辑四、同步时序逻辑和异步时序逻辑例例例例1 1 :ENTITYENTITY CNT4B CNT4B ISISPORTPORT ( CLK ( CLK, : IN STD_LOGIC; : IN STD_LOGIC; OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); COU

68、T : OUT STD_LOGIC ); ENDEND CNT4B; CNT4B;ARCHITECTUREARCHITECTURE behav behav OFOF CNT4B CNT4B ISIS SIGNALSIGNAL Q : STD_LOGIC_VECTOR(3 DOWNTO 0); Q : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINBEGIN P_REG: P_REG:PROCESSPROCESS(CLK)(CLK) BEGINBEGIN IFIF CLKEVENT AND CLK = 1 CLKEVENT AND CLK = 1 THENTHEN Q =

69、Q + 1; Q = Q + 1; END IF;END IF; OUTY = Q; OUTY = Q; END PROCESS END PROCESS P_REG ;P_REG ;COUT = Q(0) AND Q(1) AND Q(2) AND Q(3); COUT = Q(0) AND Q(1) AND Q(2) AND Q(3); ENDEND behav; behav;4 4位二进制加法计数器。位二进制加法计数器。位二进制加法计数器。位二进制加法计数器。一个单一时钟信号的进程对应产一个单一时钟信号的进程对应产一个单一时钟信号的进程对应产一个单一时钟信号的进程对应产生同步时序逻辑。生同

70、步时序逻辑。生同步时序逻辑。生同步时序逻辑。异步时序逻辑最好用多个进程语异步时序逻辑最好用多个进程语异步时序逻辑最好用多个进程语异步时序逻辑最好用多个进程语句来实现句来实现句来实现句来实现例例例例2 2 :异步时序逻辑:异步时序逻辑:异步时序逻辑:异步时序逻辑 ARCHITECTUREARCHITECTURE behav behav OFOF CNT4B CNT4B ISIS SIGNALSIGNAL Q1,Q2 : STD_LOGIC; Q1,Q2 : STD_LOGIC;BEGINBEGIN PRO1PRO1: :PROCESSPROCESS(CLK)(CLK) BEGINBEGIN IF

71、IF CLKEVENT AND CLK = 1 CLKEVENT AND CLK = 1 THENTHEN Q1 = NOT ( Q2 OR A); Q1 = NOT ( Q2 OR A); END IF;END IF; END PROCESS END PROCESS PRO1PRO1 ; ; - -进程标号,不参加综合进程标号,不参加综合进程标号,不参加综合进程标号,不参加综合 PRO2:PRO2:PROCESSPROCESS(Q1)(Q1) BEGIN BEGIN IF IF Q1EVENT AND Q1 = 1 Q1EVENT AND Q1 = 1 THENTHEN Q2 = D; Q2

72、 = D; END IF;END IF; QQ = Q2;QQ = Q2; END PROCESS END PROCESS PRO2PRO2 ; ; - -两个时钟进程通过两个时钟进程通过两个时钟进程通过两个时钟进程通过Q1Q1进行通信进行通信进行通信进行通信ENDEND behav; behav;2.52.5 全加器全加器VHDLVHDL设计设计一、半加器、半加器 半减器的半减器的VHDLVHDL描述和块语句描述和块语句输入值输入值半加器(半加器(A+BA+B)半减器(半减器(A AB B)A AB BSumSumCarryCarryDifferenceDifferenceBorrowBor

73、row0 00 00 00 00 00 00 01 11 10 01 11 11 10 01 10 01 10 01 11 10 01 10 00 0半加器:半加器:半加器:半加器:Sum = A Sum = A B BCarry = ABCarry = AB半减器:半减器:半减器:半减器:Difference = A Difference = A B BBorrow = ABBorrow = ABENTITY test isPORT(A,B: IN Std_Logic;Carry,Sum : OUT Std_Logic;Borrow :OUT Std_Logic;Difference :OU

74、T Std_Logic);END test;ARCHITECTURE a OF test ISBEGINHalf_Adder : BlockBeginSum = A Xor B; Carry = A and B;End Block Half_Adder;Half_Subtractor: BlockBeginDifference = A Xor B;Borrow = Not A and B;End Block Half_Subtractor;END a;v用于实现用于实现VHDLVHDL中的模块化设计的又一个方式中的模块化设计的又一个方式v可以把多个并行语句打包,形成构造体中的一可以把多个并行语

75、句打包,形成构造体中的一个子模块个子模块1.1.块语句说明块语句说明2. 2.块语句基本格式块语句基本格式块标号块标号: BLOCK BEGIN END BLOCK 块标号块标号 ;块语句描述的模块之间是并行的块语句描述的模块之间是并行的块语句描述的模块之间是并行的块语句描述的模块之间是并行的二、二、CASECASE语句描述的半加器语句描述的半加器ENTITY testtesttesttest isPORT(A,B: IN Std_Logic;(A,B: IN Std_Logic;(A,B: IN Std_Logic;(A,B: IN Std_Logic;Carry,Sum : OUT Std

76、_Logic);Carry,Sum : OUT Std_Logic);Carry,Sum : OUT Std_Logic);Carry,Sum : OUT Std_Logic);END test;test;test;test;ARCHITECTURE a a a a OF test test test test IS SIGNAL X : STD_LOGIC_VECTOR(1 DOWNTO 0);STD_LOGIC_VECTOR(1 DOWNTO 0);STD_LOGIC_VECTOR(1 DOWNTO 0);STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINPROCESS

77、(X)PROCESS (X)PROCESS (X)PROCESS (X) BEGIN BEGIN BEGIN BEGIN CASECASECASECASE X X X X ISISISISWHENWHENWHENWHEN 00 00 00 00“ = Sum Sum Sum Sum=0 0 0 0;Carry=;Carry=;Carry=;Carry Sum Sum Sum Sum=1 1 1 1;Carry=;Carry=;Carry=;Carry Sum Sum Sum Sum=1 1 1 1;Carry=;Carry=;Carry=;Carry Sum Sum Sum Sum=0 0 0

78、 0;Carry=;Carry=;Carry=;Carry NULL; = NULL; = NULL; = NULL; END CASE;END CASE;END CASE;END CASE;END PROCESS;END PROCESS;END PROCESS;END PROCESS;A AB BSumSumCarryCarry0 00 00 00 00 01 11 10 01 10 01 10 01 11 10 01 1选择信号选择信号不同选择值不同选择值不同流向不同流向1. 1.CASE语句的基本格式语句的基本格式CASE CASE CASE CASE 表达式表达式表达式表达式 ISIS

79、ISISWHENWHENWHENWHEN value_1value_1value_1value_1 = = = = 顺序语句顺序语句顺序语句顺序语句1;1;1;1; ; ; ;顺序语句顺序语句顺序语句顺序语句m ;m ;m ;m ;WHENWHENWHENWHEN value_2value_2value_2value_2 = = = = 顺序语句顺序语句顺序语句顺序语句1;1;1;1; ; ; ;顺序语句顺序语句顺序语句顺序语句n ;n ;n ;n ;WHEN OTHERSWHEN OTHERSWHEN OTHERSWHEN OTHERS = = = = ; ; ; ;END CASE;END

80、 CASE;END CASE;END CASE; WHENWHENWHENWHEN条件句中的选择值必在表达式的取值范围内。条件句中的选择值必在表达式的取值范围内。条件句中的选择值必在表达式的取值范围内。条件句中的选择值必在表达式的取值范围内。 除非所有条件句中的选择值能完整覆盖除非所有条件句中的选择值能完整覆盖除非所有条件句中的选择值能完整覆盖除非所有条件句中的选择值能完整覆盖CASECASECASECASE语句中语句中语句中语句中表达式的取值,否则最末一个条件句中的选择必须表达式的取值,否则最末一个条件句中的选择必须表达式的取值,否则最末一个条件句中的选择必须表达式的取值,否则最末一个条件句

81、中的选择必须用用用用“ “OTHERSOTHERSOTHERSOTHERS” ”表示。表示。表示。表示。 CASECASECASECASE语句中每一条件句的选择值只能出现一次,不语句中每一条件句的选择值只能出现一次,不语句中每一条件句的选择值只能出现一次,不语句中每一条件句的选择值只能出现一次,不能有相同选择值的条件语句出现。能有相同选择值的条件语句出现。能有相同选择值的条件语句出现。能有相同选择值的条件语句出现。 2. 2.CASE语句说明语句说明 CASECASECASECASE语句执行中必须选中,且只能选中所列条件语句执行中必须选中,且只能选中所列条件语句执行中必须选中,且只能选中所列条

82、件语句执行中必须选中,且只能选中所列条件语句中的一条。语句中的一条。语句中的一条。语句中的一条。PROCESS (X)PROCESS (X)PROCESS (X)PROCESS (X) BEGIN BEGIN BEGIN BEGIN CASECASECASECASE X X X X ISISISISWHENWHENWHENWHEN 00 00 00 00“ = Sum Sum Sum Sum=0 0 0 0;Carry=;Carry=;Carry=;Carry Sum Sum Sum Sum=1 1 1 1;Carry=;Carry=;Carry=;Carry Sum Sum Sum Sum=

83、1 1 1 1;Carry=;Carry=;Carry=;Carry Sum Sum Sum Sum=0 0 0 0;Carry=;Carry=;Carry=;Carry NULL; = NULL; = NULL; = NULL; END CASE;END CASE;END CASE;END CASE;END PROCESS;END PROCESS;END PROCESS;END PROCESS;二、全加器的二、全加器的VHDLVHDL描述和元件例化语句描述和元件例化语句S = A S = A B B C CCY = AB+AC+BCCY = AB+AC+BCLIBRARYLIBRARYLIB

84、RARYLIBRARY IEEE ; IEEE ; IEEE ; IEEE ;USEUSEUSEUSE IEEE.STD_LOGIC_1164.ALL ; IEEE.STD_LOGIC_1164.ALL ; IEEE.STD_LOGIC_1164.ALL ; IEEE.STD_LOGIC_1164.ALL ;USEUSEUSEUSE IEEE.STD_LOGIC_ARITH.ALL; IEEE.STD_LOGIC_ARITH.ALL; IEEE.STD_LOGIC_ARITH.ALL; IEEE.STD_LOGIC_ARITH.ALL;USEUSEUSEUSE IEEE.STD_LOGIC_U

85、NSIGNED.ALL;IEEE.STD_LOGIC_UNSIGNED.ALL;IEEE.STD_LOGIC_UNSIGNED.ALL;IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYENTITYENTITYENTITY FullAdderFullAdderFullAdderFullAdder isisisisPORTPORTPORTPORT(A,B,C: IN Std_Logic;(A,B,C: IN Std_Logic;(A,B,C: IN Std_Logic;(A,B,C: IN Std_Logic; CY : OUT Std_LogicCY : OUT Std_Lo

86、gicCY : OUT Std_LogicCY : OUT Std_Logic; S : OUT Std_Logic);S : OUT Std_Logic);S : OUT Std_Logic);S : OUT Std_Logic);ENDENDENDEND FullAdderFullAdderFullAdderFullAdder; ; ; ;ARCHITECTUREARCHITECTUREARCHITECTUREARCHITECTURE a a a a OFOFOFOF FullAdderFullAdderFullAdderFullAdder ISISISISBEGINBEGINBEGINB

87、EGIN S = A Xor B Xor C;S = A Xor B Xor C;S = A Xor B Xor C;S = A Xor B Xor C; CY CY CY CY = (A and B) OR (A and C) OR (B and C);= (A and B) OR (A and C) OR (B and C);= (A and B) OR (A and C) OR (B and C);A(0), (A=A(0), (A=A(0), (A=A(0), B=B(0), B=B(0), B=B(0), B=B(0), C=C(0), C=C(0), C=C(0), C=C(0),

88、 Cy Cy Cy Cy =C(1), =C(1), =C(1), =C(1), S S S S = S(0);= S(0);= S(0);= S(0); U1: Fulladder U1: Fulladder U1: Fulladder U1: Fulladder Port Map Port Map Port Map Port Map (A(1),B(1),C(1),C(2),S(1);(A(1),B(1),C(1),C(2),S(1);(A(1),B(1),C(1),C(2),S(1);(A(1),B(1),C(1),C(2),S(1); U2: Fulladder U2: Fulladd

89、er U2: Fulladder U2: Fulladder Port Map Port Map Port Map Port Map (A(2),B(2),C(2),C(3),S(2);(A(2),B(2),C(2),C(3),S(2);(A(2),B(2),C(2),C(3),S(2);(A(2),B(2),C(2),C(3),S(2); U3: Fulladder U3: Fulladder U3: Fulladder U3: Fulladder Port Map Port Map Port Map Port Map (A(3),B(3),C(3),C(4),S(3);(A(3),B(3)

90、,C(3),C(4),S(3);(A(3),B(3),C(3),C(4),S(3);(A(3),B(3),C(3),C(4),S(3); C(0) = 0; C(0) = 0; C(0) = 0; C(0) A(0), (A=A(0), (A=A(0), (A=A(0), B=B(0), B=B(0), B=B(0), B=B(0), C=C(0), C=C(0), C=C(0), C=C(0), Carry =C(1), Sum = S(0);Carry =C(1), Sum = S(0);Carry =C(1), Sum = S(0);Carry =C(1), Sum = S(0); U1

91、: Fulladder U1: Fulladder U1: Fulladder U1: Fulladder Port Map Port Map Port Map Port Map (A(1),B(1),C(1),C(2),S(1);(A(1),B(1),C(1),C(2),S(1);(A(1),B(1),C(1),C(2),S(1);(A(1),B(1),C(1),C(2),S(1); U2: Fulladder U2: Fulladder U2: Fulladder U2: Fulladder Port Map Port Map Port Map Port Map (A(2),B(2),C(

92、2),C(3),S(2);(A(2),B(2),C(2),C(3),S(2);(A(2),B(2),C(2),C(3),S(2);(A(2),B(2),C(2),C(3),S(2); U3: Fulladder U3: Fulladder U3: Fulladder U3: Fulladder Port Map Port Map Port Map Port Map (A(3),B(3),C(3),C(4),S(3);(A(3),B(3),C(3),C(4),S(3);(A(3),B(3),C(3),C(4),S(3);(A(3),B(3),C(3),C(4),S(3); C(0) = 0; C

93、(0) = 0; C(0) = 0; C(0) A(0), (A=A(0), (A=A(0), (A=A(0), B=B(0), B=B(0), B=B(0), B=B(0), C=C(0), C=C(0), C=C(0), C=C(0), Carry Carry Carry Carry =C(1), =C(1), =C(1), =C(1), Sum = S(0);Sum = S(0);Sum = S(0);Sum = S(0); U1: Fulladder Port Map (A(1),B(1),C(1),C(2),S(1); U1: Fulladder Port Map (A(1),B(1

94、),C(1),C(2),S(1); U1: Fulladder Port Map (A(1),B(1),C(1),C(2),S(1); U1: Fulladder Port Map (A(1),B(1),C(1),C(2),S(1); U2: Fulladder Port Map (A(2),B(2),C(2),C(3),S(2); U2: Fulladder Port Map (A(2),B(2),C(2),C(3),S(2); U2: Fulladder Port Map (A(2),B(2),C(2),C(3),S(2); U2: Fulladder Port Map (A(2),B(2

95、),C(2),C(3),S(2); U3: Fulladder Port Map (A(3),B(3),C(3),C(4),S(3); U3: Fulladder Port Map (A(3),B(3),C(3),C(4),S(3); U3: Fulladder Port Map (A(3),B(3),C(3),C(4),S(3); U3: Fulladder Port Map (A(3),B(3),C(3),C(4),S(3); C(0) = 0; C(0) = 0; C(0) = 0; C(0) = 0;END a;END a;END a;END a;v元件例化语句元件例化语句是在是在VH

96、DLVHDL设计设计中实现中实现层次化层次化设计设计的重要途的重要途径。径。v可以在当前的可以在当前的VHDLVHDL模块设计模块设计中将现成的硬中将现成的硬件描述语言设件描述语言设计的实体作为计的实体作为元件引用。元件引用。3.3.3.3.举例:比较举例:比较A A、B B是否相等是否相等NXOR2NXOR2 vv 图中引用的元件:图中引用的元件:ENTITYENTITY eqcomp4 is eqcomp4 is PORTPORT(A, B(A, B :IN:INStd_Logic_Vector(3 Downto 0);Std_Logic_Vector(3 Downto 0); Y: OU

97、T Y: OUT Std_LogicStd_Logic););ENDEND eqcomp4; eqcomp4;ARCHITECTUREARCHITECTURE a a OFOF eqcomp4 eqcomp4 ISIS Component AND4Component AND4 Port (a, b, c, d: INPort (a, b, c, d: INStd_Logic;Std_Logic; y y : OUT: OUT Std_Logic);Std_Logic); End Component; End Component; Component XNOR2Component XNOR2 P

98、ort (M, N :IN Port (M, N :IN Std_Logic;Std_Logic;P :OUTP :OUT Std_Logic );Std_Logic ); End Component; End Component; signal X: Std_Logic_Vector(3 to 0);signal X: Std_Logic_Vector(3 to 0);vv比较相等电路的比较相等电路的VHDLVHDL程序:程序:NXOR2NXOR2 BEGINBEGIN U0: XNOR2 Port Map (A(0),B(0),X(0); U0: XNOR2 Port Map (A(0),

99、B(0),X(0); U1: XNOR2 Port Map (A(1),B(1),X(1); U1: XNOR2 Port Map (A(1),B(1),X(1); U2: XNOR2 Port Map (A(2),B(2),X(2); U2: XNOR2 Port Map (A(2),B(2),X(2); U3: XNOR2 Port Map (A(3),B(3),X(3); U3: XNOR2 Port Map (A(3),B(3),X(3); U4: AND4 Port Map (X(0),X(1),X(2),X(3), Y ); U4: AND4 Port Map (X(0),X(1),X(2),X(3), Y );ENDEND a; a;2.6 VHDL2.6 VHDL文本输入设计方法初步及文本输入设计方法初步及QuartusIIQuartusII工具软件使用工具软件使用 为工程设计建立文件夹(新建工程) 输入设计项目文件和存盘 选定目标器件 启动编译 建立仿真波形文件 仿真测试和波形分析 引脚锁定并编译 编程下载/配置 硬件测试 QuartusII工具软件使用及安装

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

最新文档


当前位置:首页 > 资格认证/考试 > 自考

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