《组合逻辑电路设计 (2)幻灯片.ppt》由会员分享,可在线阅读,更多相关《组合逻辑电路设计 (2)幻灯片.ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、组合逻辑电路设计第1页,共60页,编辑于2022年,星期一 有关VHDL电路设计语言的语法知识及电路设计的重要概念,都已在前面几章给了说明。本章将重心放在VHDL电路设计语言的实际运用上。本章中将有一些实际电路设计范例,如:译码器与编码器、数据选择器与解数据选择器、数码转换、比较器、只读存储器等,说明如何使用VHDL电路设计语言,来设计一些经常会使用到的组合逻辑电路。第2页,共60页,编辑于2022年,星期一4-1 译码器与编码器译码器与编码器 译码器与编码器的功能类似,它们都是用来做码和码之间的转换器,只是功能恰好相反。译码器是把输入的数码解出其对应的数码,如果有N个二进制选择线,则最多可以
2、码转换成2N个数据。当一个译码器有N条输入线及M条输出线时,这时为NM的译码器,如38译码器。译码器也经常被应用在地址总线或用作电路的控制线。像只读存储器(ROM)中便利用译码器进行地址选址的工作。第3页,共60页,编辑于2022年,星期一4-1-1 译码器的设计译码器的设计 对于译码器,第一个想到的当然是输入数码和输出数码之间的对应关系,也就是说,“输入码和输出码之间的对应表”这应该算是设计译码器的必须条件。例如下面常见的38译码器的真值表:A0 A1 A2Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y70 0 0100000000 0 1010000000 1 0001000000 1 10
3、00100001 0 0000010001 0 1000001001 1 0000000101 1 100000001第4页,共60页,编辑于2022年,星期一38译码器的VHDL设计。38译码器,就表示它有3条输入线及8条输出线。另外为了方便译码器的控制或便于扩充之用,在设计时常会增加一个EN输入端。译码器的外部配置如图4-1所示。Y0A0A1A2ENY1Y2Y4Y3Y5Y7Y6图4-1 38译码器第5页,共60页,编辑于2022年,星期一 有了真值表,就可以直接用查表法(look up table)来设计,在VHDL的语法中,“WITHSELECT”、“CASEWHEN”及“WHENELS
4、E”这类指令都是执行查表或对应动作的能手,使用前应确定需要的是顺序性语句还是并行同时性命令,否则程序在进行编译时,会发生错误。第6页,共60页,编辑于2022年,星期一程序范例程序范例(程序文件(程序文件EDAch4_1_1.vhd)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ch4_1_1 ISPORT(A :INSTD_LOGIC_VECTOR(2 DOWNTO 0);EN:IN STD_LOGIC;Y :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ch4_1_1;接下页接下页第7页,共60页,编辑于2022
5、年,星期一ARCHITECTURE a OF ch4_1_1 IS SIGNAL SEL:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINSEL(0)=EN;SEL(1)=A(0);SEL(2)=A(1);SEL(3)=A(2);WITH SEL SELECTY=00000001WHEN0001,00000010WHEN0011,00000100WHEN0101,00001000WHEN0111,00010000WHEN1001,00100000WHEN1011,01000000WHEN1101,10000000WHEN1111,11111111 WHEN OTHERS;E
6、ND a;只要将真值表内的数据,依次填入语法中,便完成编码的动作。最后一个位是EN 将EN、A2、A1、A0合并成序列,目的是将“EN”脚的功能,融入程序及电路中。当EN=1时,译码器工作正常,当EN=0时,译码器不动作。第8页,共60页,编辑于2022年,星期一程序说明:程序说明:(1)将EN、A2、A1、A0合并成序列的另一种写法是:“SEL=A&EN”。(2)withselect是一种非常好用的并行同时语法,和 其它功能相同,属于顺序语法的是caseselect,两者都是执行这种查表动作的利器。第9页,共60页,编辑于2022年,星期一仿真结果:仿真结果:当EN=1时,译码器工作正常,当
7、EN=0时,译码器不动作。延时第10页,共60页,编辑于2022年,星期一Page 1of 2Page 2 of 2综合后的综合后的RTL图:图:第11页,共60页,编辑于2022年,星期一时序分析:时序分析:右图为 tpd(Pin to Pin Delay)的纪录,其中红色表示“Cant achieve timing requirement”。可以在优化设计中进行优化,使Required P2P Time与Actual P2P Time相符合。设定值实际值第12页,共60页,编辑于2022年,星期一4-1-2 编码器编码器 编码器是将2N个分离的信息代码以N个二进制码来表示。如果一个编码器有
8、N条输入线及M条输出线,则称之为MN编码器;它的动作和译码器恰好相反。编码器常用于影音压缩或通信方面,以达到精简传输量的目的。其实编码器也可以看成压缩电路,译码器也可以看成解压缩电路。传输数据前先用编码器压缩数据后再传送出去,接收端则由译码器将数据解压缩,还原原来的内容。第13页,共60页,编辑于2022年,星期一编码器将8位码编成3位码译码器将3位码解成8位码传输线或网络压缩解压缩本来需要传本来需要传2N个数个数码的数据量,现在码的数据量,现在只需传只需传N个数码。个数码。图4-2 编码器、译码器的压缩、解压缩功能 第14页,共60页,编辑于2022年,星期一83编码器的VHDL设计 和前面
9、一样,有了编码器的外部管脚图,如图4-3所示,就能够做 Entity 的定义,再根据编码器的真值表,和译码器一样使用查表法,Architecture 内的描述便轻松地完成。图4-3 83编码器83解码器A7A6A5A4A3A2A1A0Y2Y1Y0第15页,共60页,编辑于2022年,星期一LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ch4_1_2 ISPORT(A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);EN:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END ch4
10、_1_2;程序范例程序范例 (程序(程序文件文件EDAch4_1_2.vhd)A0 A1 A2 A3 A4 A5 A6 A7Y0 Y1 Y2100000000 0 0010000000 0 1001000000 1 0000100000 1 1000010001 0 0000001001 0 1000000101 1 0000000011 1 1接下页接下页真值表第16页,共60页,编辑于2022年,星期一ARCHITECTURE a OF ch4_1_2 IS SIGNAL SEL:STD_LOGIC_VECTOR(8 DOWNTO 0);BEGINSEL=EN&A;WITH SEL SEL
11、ECTY=000 WHEN100000001,001WHEN100000010,010WHEN100000100,011WHEN100001000,100WHEN100010000,101WHEN100100000,110WHEN101000000,111WHEN110000000,000 WHEN OTHERS;END a;只要将真值表内的数据,依次填入语法中,便完成编码的动作。第一个位是EN第17页,共60页,编辑于2022年,星期一仿真结果:仿真结果:EN=1时,编码器正常工作,EN=0时,编码器不动作。第18页,共60页,编辑于2022年,星期一综合后的综合后的RTL图:图:第19页,
12、共60页,编辑于2022年,星期一 电路设计的方法众多,上例也可以利用卡诺图来化简,求得布尔代数式为:Y2=A7+A6+A5+A4,Y1=A7+A6+A3+A2,Y0=A7+A5+A3+A1。第20页,共60页,编辑于2022年,星期一4-2 数据选择器数据选择器 数据选择器可以从多组数据来源中选择一组送入目的地,因此又称为数据选择器,其本质上是一个电子开关。数据选择器的结构是2N个输入线,会有N个地址选择线及1个输出线配合。本范例为41数据选择器。图4-4为数据选择器的电路符号。ABCDS1S0Z图4-4 数据选择器第21页,共60页,编辑于2022年,星期一4线至线至1线数据选择器(线数据
13、选择器(MUX4)(程序(程序文件文件EDAch4_2_1.vhd)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ch4_2_1 IS PORT(A,B,C,D:INSTD_LOGIC_VECTOR(3 DOWNTO 0);-输入信号输入信号S:INSTD_LOGIC_VECTOR(1 DOWNTO 0);-地址选择信号地址选择信号Z:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)-输出信号输出信号);EN
14、D ch4_2_1;固定标题栏,用来宣告使用零件盒接口引脚定义接下页接下页第22页,共60页,编辑于2022年,星期一ARCHITECTURE a OF ch4_2_1 ISBEGIN Z=A WHEN S=“00”ELSE-当当S0=0,S1=0时,输入时,输入A被传送到被传送到Y B WHEN S=01ELSE-当当S0=0,S1=1时,输入时,输入B被传送到被传送到Y C WHEN S=10ELSE-当当S0=1,S1=0时,输入时,输入C被传送到被传送到Y D WHEN S=11ELSE-当当S0=1,S1=1时,输入时,输入D被传送到被传送到Y 0000;END a;地址选择线地址选
15、择线输出输出S0S1Z00A01B10C11D第23页,共60页,编辑于2022年,星期一仿真结果:仿真结果:输出A输出B输出D输出C第24页,共60页,编辑于2022年,星期一4-2-1 解数据选择器的解数据选择器的VHDL设计设计 数据选择器能从多组输入信号之中选取一组作为输出信号,解数据选择器的功能恰巧相反,它是用来将一组输入按照地址选择线制定的方式,传送到被选定的一组输出上(输出有很多组),见图4-5。INABCD数据输入数据输出图4-5 解数据选择器第25页,共60页,编辑于2022年,星期一14 解数据选择器VHDL设计程序范例程序范例(程序文件(程序文件EDAch4_2_2)LI
16、BRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ch4_2_2 ISPORT(Z:IN STD_LOGIC_VECTOR(3 DOWNTO 0);-输入信号输入信号 S:INSTD_LOGIC_VECTOR(1 DOWNTO 0);-信号地址选择信号地址选择 A,B,C,D:OUTSTD_LOGIC_VECTOR(3 DOWNTO 0)-输出信号输出信号);END ch4_2_2;接下页接下页第26页,共60页,编辑于2022年,
17、星期一ARCHITECTURE a OF ch4_2_2 ISBEGINPROCESS(Z,S)BEGINA=“0000”;B=“0000”;C=“0000”;DABCD=Z;END CASE;END PROCESS;END a;地址选择线地址选择线输出输出S0S100A01B10C11D第27页,共60页,编辑于2022年,星期一仿真结果:仿真结果:从仿真结果得知,解数据选择器的运作功能完全符合当初的规划。在程序中对A、B、C、D赋初值是必要的,没有它,电路可能出现错误的结果。第28页,共60页,编辑于2022年,星期一读者可以将程序的读者可以将程序的architecturearchitec
18、ture描描述改用并行同时语法述改用并行同时语法when.elsewhen.else来来描述电路,与上例结果进行比较。描述电路,与上例结果进行比较。第29页,共60页,编辑于2022年,星期一4-3 数码转换数码转换 在数字逻辑电路的内部,大多数采用二进制或十六进在数字逻辑电路的内部,大多数采用二进制或十六进制的数字类型,在日常生活当中则几乎采用的都是十进制,制的数字类型,在日常生活当中则几乎采用的都是十进制,所以经常会遇到数字类型之间相互转换的问题。所以经常会遇到数字类型之间相互转换的问题。本节将重点放在最常用的两种数码转换电路,第一种是二进制本节将重点放在最常用的两种数码转换电路,第一种是
19、二进制转换成十进制,第二种是转换成十进制,第二种是BCD码转换成七段显示器码。码转换成七段显示器码。第30页,共60页,编辑于2022年,星期一4-3-1 二进制转换成十进制二进制转换成十进制 现在的重点则是用现在的重点则是用VHDL来设计一个执行数码转换电路,来设计一个执行数码转换电路,将二进制的输入转换成十进制的输出。将二进制的输入转换成十进制的输出。下表示一个四位的二进制数码和其对应的十进制数码的下表示一个四位的二进制数码和其对应的十进制数码的对照表,其中这里所用的七段显示器是共阴型七段显示器。对照表,其中这里所用的七段显示器是共阴型七段显示器。第31页,共60页,编辑于2022年,星期
20、一输入信号输入信号输出输出1:BCD输出输出2:七段显示码:七段显示码二进制二进制对应的十进制对应的十进制十位数十位数个位数个位数十位数十位数个位数个位数0000000000000011111101111110001100000001011111100001100010200000010011111110110110011300000011011111110011110100400000100011111111001100101500000101011111111011010110600000110011111111111000111700000111011111100001111000800
21、00100001111111111111100190000100101111111100111101010000100000000110011111110111100010001000011000001101100120001001000001101011011110113000100110000110100111111101400010100000011011001101111150001010100001101101101转转换换表表第32页,共60页,编辑于2022年,星期一数码转换(一):二进制十进制(BCD码)(二):BCD码七段显示器码重点提示:重点提示:逻辑概念:当输入为09的数
22、,其十位数字为0,个位数=输入。当输入为1015的数,十位数为1,个位数=输入-10。数据类型:输入为UNSIGNED(3 DOWNTO 0),因为有减法运算。输出有两个,分别为十位数(BCD1)、个位数(BCD0),都是BCD码,故定义成STD_LOGIC_VECTOR。第33页,共60页,编辑于2022年,星期一程序范例程序范例(程序文件程序文件EDAch4_3_1.vhd)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY
23、ch4_3_1 ISPORT (A:INUNSIGNED(3 DOWNTO 0);BCD0,BCD1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);SEV0,SEV1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ch4_3_1;接下页接下页第34页,共60页,编辑于2022年,星期一ARCHITECTURE a OF ch4_3_1 IS SIGNAL XC:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(A)BEGIN IF A10 THENBCD1=0000;BCD0=STD_LOGIC_VECTOR(
24、A);SEV1=0111111;XC=STD_LOGIC_VECTOR(A);ELSEBCD1=0001;BCD0=A-10;SEV1=0000110;XC10,则十位数部分直接填入1;个位数部分直接等于A-10A声明为UNSIGNED,故兼具逻辑信号与数值信号的特性。此语法的作用是将A以逻辑信号类型传送至XC第35页,共60页,编辑于2022年,星期一-将将BCD码解成七段显示器用码码解成七段显示器用码SEV_SEGMENT:BLOCKBEGIN SEV0B、A=B、或是、或是AB时,其值为时,其值为1,否则为,否则为0。AEQB:当:当A=B时,其值为时,其值为1,否则为,否则为0。ALT
25、B:当:当AB时,其值为时,其值为1,否则为,否则为0。图4-6 比较器第39页,共60页,编辑于2022年,星期一程序范例程序范例(程序文件(程序文件EDAch4_4_1.vhd)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ch4_4_1 ISPORT(A :INSTD_LOGIC_VECTOR(7 DOWNTO 0);B :IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK:IN STD_LOGIC
26、;RST:IN STD_LOGIC;AGTB:OUT STD_LOGIC;ALTB:OUT STD_LOGIC;AEQB:OUT STD_LOGIC);END ch4_4_1;接下页接下页第40页,共60页,编辑于2022年,星期一ARCHITECTURE a OF ch4_4_1 ISBEGIN PROCESS(RST,CLK)BEGINIF RST=1 THEN AGTB=0;AEQB=0;ALTBB THEN AGTB=1;AEQB=0;ALTB=0;ELSIF A=B THEN AGTB=0;AEQB=1;ALTB=0;ELSE AGTB=0;AEQB=0;ALTBB、A=B、AB三者
27、只能有一个情况的值为真。第42页,共60页,编辑于2022年,星期一4-5 算术运算算术运算使用VHDL语言来执行算术运算时,常会碰到的两个问题:问题一:数据类型问题一:数据类型 基本上,VHDL是硬件电路描述语言,所以处理的信号不外乎是逻辑信号和数值信号两种。逻辑信号是0和1的组合,它所执行的运算是布尔代数运算;数值信号是日常生活中所使用的数字,用来作加、减、乘、除的运算。在VHDL的算术运算中,内定的数据类型为整数或浮点数,需要做运算的是数值信号,但是执行运算的电路,却要求使用STD_LOGIC或STD_LOGIC_VECTOR的数据类型,在程序设计时必须小心。第43页,共60页,编辑于2
28、022年,星期一问题二:进位的处理问题二:进位的处理 VHDL程序中,在执行加法或乘法的运算时,是不会自动产生进位的,这样的安排可以让计数器设计的工作变得更为简单而直接(9数完直接跳回0)。如果要执行相加或相乘的运算,就必须另外处理进位,否则将无法得到正确的结果。第44页,共60页,编辑于2022年,星期一全加法器的全加法器的VHDL设计设计 全加法器电路的外部配置如图4-7 所示全加器ABCinBCDoutCout 图4-7 全加器其中Cin表示低位的进位,Cout表示向高位的进位。第45页,共60页,编辑于2022年,星期一 表4-1为全加器的真值表,根据真值表,可推导出布尔方程式:BCD
29、out=A xor B xor CinCout=(A and B)or(A and Cin)or(B and Cin)加法器输入加法器输入加法器输出加法器输出ABCinBCDoutCout0000000110010100110110010101011100111111表4-1 全加器真值表第46页,共60页,编辑于2022年,星期一程序范例程序范例(程序文件(程序文件EDAch4_5_2.vhd)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.AL
30、L;ENTITY ch4_5_2 ISPORT(A :IN UNSIGNED(3 DOWNTO 0);B :IN UNSIGNED(3 DOWNTO 0);CIN:IN STD_LOGIC;BCDOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END ch4_5_2;被定义成 UNSIGNED 的信号经过语法转换或是运算之后,便可当作逻辑信号处理。从而解决了问题一中的难题。接下页接下页第47页,共60页,编辑于2022年,星期一ARCHITECTURE a OF ch4_5_2 IS SIGNAL Y,C:STD_LOGIC_V
31、ECTOR(3 DOWNTO 0);BEGIN Y(0)=A(0)XOR B(0)XOR CIN;Y(1)=A(1)XOR B(1)XOR C(0);Y(2)=A(2)XOR B(2)XOR C(1);Y(3)=A(3)XOR B(3)XOR C(2);C(0)=(A(0)AND CIN)XOR(CIN AND B(0)XOR(A(0)AND B(0);C(1)=(A(1)AND C(0)XOR(C(0)AND B(1)XOR(A(1)AND B(1);C(2)=(A(2)AND C(1)XOR(C(1)AND B(2)XOR(A(2)AND B(2);C(3)=(A(3)AND C(2)XO
32、R(C(2)AND B(3)XOR(A(3)AND B(3);BCDOUT=Y(3)&Y(2)&Y(1)&Y(0);COUT=C(3);END a;和平常做加法器一样,和平常做加法器一样,从最低位往后计算至最从最低位往后计算至最高位。高位。第48页,共60页,编辑于2022年,星期一仿真结果:仿真结果:1100+1000+0000=1 01001011+0110+0001=1 0010第49页,共60页,编辑于2022年,星期一4-5-1 减法器减法器 至于减法器的 architecture 应该如何描述,同样可从减法器的真值表(表4-2)中推导出布尔方程式:BCDout=A xor B xo
33、r CinCout=(not A and B)or(not A and Cin)or(B and Cin)加法器输入加法器输入加法器输出加法器输出ABCinBCDoutCout0000000111010110110110010101001100011111表4-2 减法器的真值表第50页,共60页,编辑于2022年,星期一减法器的VHDL设计 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ch4_5_4 ISPORT(A :
34、IN UNSIGNED(3 DOWNTO 0);B :IN UNSIGNED(3 DOWNTO 0);CIN:IN STD_LOGIC;BCDOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END ch4_5_4;接下页接下页范例程序范例程序(程序文件(程序文件EDAch4_5_4.vhd)第51页,共60页,编辑于2022年,星期一ARCHITECTURE a OF ch4_5_4 IS SIGNAL Y,C:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN Y(0)=A(0)XOR B(0)XOR CIN
35、;C(0)=(NOT A(0)AND CIN)OR(CIN AND B(0)OR(NOT A(0)AND B(0);GEN:FOR I IN 1 TO 3 GENERATE Y(I)=A(I)XOR B(I)XOR C(I-1);C(I)=(NOT A(I)AND C(I-1)OR(C(I-1)AND B(I)OR(NOT A(I)AND B(I);END GENERATE;BCDOUT=Y(3)&Y(2)&Y(1)&Y(0);COUT=C(3);END a;与前面的全加器进行比较,使用“forgenerate”指令可简化程序的设计。第52页,共60页,编辑于2022年,星期一仿真结果:仿真结
36、果:A-B-Cin=5,正确。Cout=0代表没有借位A-B-Cin=8,Cout=1,代表结果是负数,所以需要借位。第53页,共60页,编辑于2022年,星期一4-6 只读存储器只读存储器 常见的记忆芯片有两种:常见的记忆芯片有两种:RAM(Random-Access Memory)及)及ROM(Read-Only Memory)。例如图)。例如图4-8所表示所表示的是一个可以存储的是一个可以存储16组数据,且每组数据为组数据,且每组数据为8位的位的ROM方框图。方框图。ROM4位源地址选择线使能8位数据总线输出图4-8 ROM方块图第54页,共60页,编辑于2022年,星期一ROM电路的电
37、路的VHDL设计设计重点说明:重点说明:当使能管脚(CE)的值为1时,ROM芯片不工作,此时8位数据总线输出“00000000”;若CE的值为0时,ROM芯片将按照输入地址选择线的内容,将存储与该地址的数据经由8位数据总线输出。第55页,共60页,编辑于2022年,星期一程序范例程序范例(程序文件(程序文件EDAch4_6_1.vhd)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ch4_6_1 ISPORT(ADDR:IN
38、 STD_LOGIC_VECTOR(3 DOWNTO 0);CE :IN STD_LOGIC;DATAOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ch4_6_1;ARCHITECTURE a OF ch4_6_1 ISBEGIN DATAOUT=00001001WHENADDR=0000 AND CE=0 ELSE00011010WHENADDR=0001 AND CE=0 ELSE00011011WHENADDR=0010 AND CE=0 ELSE00101100WHENADDR=0011 AND CE=0 ELSE01110000WHENADDR=0
39、100 AND CE=0 ELSE10001000WHENADDR=0101 AND CE=0 ELSE11000000WHENADDR=0110 AND CE=0 ELSE10000001WHENADDR=0111 AND CE=0 ELSE00000000;END a;第56页,共60页,编辑于2022年,星期一仿真结果:仿真结果:CE信号为Low时,ROM便会按照地址选择输出8位数据CE信号为High时,ROM直接在8位数据总线输出“00000000”第57页,共60页,编辑于2022年,星期一4-7 三态总线电路设计三态总线电路设计library ieee;use ieee.std_l
40、ogic_1164.all;entity tri isport(ctl:in std_logic_vector(1 downto 0);datain1,datain2,datain3,datain4:in std_logic_vector(7 downto 0);q :out std_logic_vector(7 downto 0);end tri;architecture body_tri of tri isbegin q Z);q Z);q Z);q Z);end body_tri;第58页,共60页,编辑于2022年,星期一综合后的RTL图第59页,共60页,编辑于2022年,星期一1、译码器、解码器的设计、译码器、解码器的设计2、数据选择器的设计、数据选择器的设计3、数码转换器的设计、数码转换器的设计4、比较器的设计、比较器的设计5、算术运算、算术运算6、只读存储器的设计、只读存储器的设计小结:第60页,共60页,编辑于2022年,星期一