VHDL硬件描述语言作业
VHDL硬件描述语言作业 一. 设计硬件介绍 38译码器是最常用的一种小规模集成电路,它有3个二进制输入端a, b, c和8个译码输出端yOy7o对输入端a, b, c的值进行译码,就可以确定输出 端y0-y7的哪一个输出端变为有效(低电平),从而达到译码的目的。3-8译 码器的用途非常广泛,如在单片机外扩多个程序存贮器或多个数据存贮器时都会 用到38译码器选片。 38译码器的真值表如下表。38译码器还有3个选通输入端gl, g2a和 g2bo只有在gl L glbO, g2b0时,38译码器才能正常译码,否则yOy7 输出将均为高电平。 选通输入 二进制输入 译码输出端 gl g2a g2b c b a yo yi y2 y3 y4 y5 y6 y7 X 1 X X X X i i i i i i i i X X 1 X X X i i i i i i i i 0 X X X X X i i i i i i i i 1 0 0 0 0 0 0 i i i i i i i 1 0 0 0 0 1 i 0 i i i i i i 1 0 0 0 1 0 i i 0 i i i i i 1 0 0 0 1 1 i i i 0 i i i i 1 0 0 1 0 0 i i i i 0 i i i 1 0 0 1 0 1 i i i i i 0 i i 1 0 0 1 1 0 i i i i i i 0 i 1 0 0 1 1 1 i i i i i i i 0 二. 程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY decoder_3_to_8 IS P0RTa,b,c,g1 ,g2a,g2bIN STD_LOGIC; yOUT STD_L0GIC_VECT0R7 DOWNTO 0; END decoder_3_to_8; ARCHITECTURE rtl OF decoder_3_to_8 IS SIGNAL indataSTD_L0GIC_VECT0R2 DOWNTO 0; BEGIN indatacba; PR0CESSindata,g1 ,g2a,g2b BEGIN IFg11 AND g2aO AND g2bO THEN CASE indata IS WHEN 000y11111110; WHEN 001y11111101; WHEN 010y11111011; WHEN 011y11110111; WHEN 100y11101111; WHEN 101 y11011111; WHEN 110y10111111; WHEN 111y01111111; WHEN OTHERSyXXXXXXXX; END CASE; ELSE y11111111; END IF; END PROCESS; END rtl; 三. 仿真结果 MAXplus II - d\max2work\vhdl\decoder_3_to_8 - [decoder_3_to_8.scf - Wave Editor] -|g|x| -1钊 x| | Ref |O.CIns|・[寸 Time |Q.CInsInterval |O.Ons Ala00ns- NameValue500.0ns 1.0us 1.5us 2.Ous 2.5us 3.Ous 3.5us 4.Ous 4.5us 5.0us 5.5us 6.Ous 6.5us 7.Ous 7.5us 8.C 谶 MAXplus II File Edit View Node Assign Utilities Options Window Help D修I El阊匿必您电思 国函慕 阐,倒,畿套M 睡萱邕 仿真结果如下图。 在仿真中可以看到,当g2a和g2b同时为低电平并且gl为高电平时3-8译 码器工作,输出相应的值。如 当c.a.b为110时对应Y输出为10111111,用16进制表示为BF。 当c.a.b为001时对应Y输出为11111101,用16进制表示为FD。 当c.a.b为011时对应Y输出为11110111,用16进制表示为F7。 堂c.a.b为101时对应Y输出为11011111,用16进制表示为BF。 在38译码器不工作的状态下y的8个管脚都输出为1, 16进制为FFo 026030055 安斌 2003.12.10