实验报告MSI组合电路的HDL设计.doc
实验五 MSI组合电路的HDL设计一、 实验目的:继续熟悉实验箱的使用;掌握用HDL语言设计MSI组合电路的方法。二、 实验设备与元器件:1、数字电路与系统实验箱 1台2、计算机1台3、Quartus II 软件1套三、 实验任务:用HDL设计:3-8译码器、显示译码器、数据选择器。四、 实验要求:13-8译码器 a)8个输出在实验箱上用8个LED发光二极管表示; b)3个输入连接实验箱上的3个按钮; c)附加一个片选使能端。2显示译码器 a)输入为四位BCD码; b)输出驱动一个七段共阴极数码管; c)附加一个片选使能端。3四选一数据选择器 a)四个数据输入端(D3,D2,D1,D0)和两个数据选择输入端(A1,A0),一个数据输出端(Y); b)附加一个片选使能端。五、实验设计说明:1、38译码器1) 真值表如下: ENA2A1A0 Y7Y6Y5Y4Y3Y2Y1Y00XXX1111111110001111111000111111101010111110110111111011110011101111101110111111101011111101101111111 2) 在Quartus II 软件上编写VHDL语言如下: LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY fab5_1 ISPORT(A2,A1,A0,en : IN bit;Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0: OUT bit);END fab5_1;ARCHITECTURE a OF fab5_1 ISsignal tin:bit_vector(2 downto 0);signal tout:bit_vector(7 downto 0);BEGINtin<=A2&A1&A0;PROCESS (tin,en)BEGINIF en = '0' THENtout<="11111111"ELSEIF tin="000" then tout<="11111110"elsif tin="001" then tout<="11111101"elsif tin="010" then tout<="11111011"elsif tin="011" thentout<="11110111"elsif tin="100" then tout<="11101111"elsif tin="101" thentout<="11011111"elsif tin="110" thentout<="10111111"elsif tin="111" thentout<="01111111"END IF;END IF;Y0<=tout(0);Y1<=tout(1);Y2<=tout(2);Y3<=tout(3);Y4<=tout(4);Y5<=tout(5);Y6<=tout(6);Y7<=tout(7);END PROCESS;END a;3) 仿真图如下:4) 设置引脚如下:5) 再编译一遍。6) 然后点击“Programmer”进行下载到芯片检验。(选模式一)2、 显示器译码器1) 真值表如下:ENABCDgfedcba 1X X X X1111111 0000001111110001000011000101011011001110011110100110011001011101101011011111000111000011110001111111100111001112) VHDL语言: LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY fab5_2 ISPORT(A1,B1,C1,D1 : IN bit;g,f,e,d,c,b,a: OUT bit);END fab5_2;ARCHITECTURE ab OF fab5_2 ISsignal tin:bit_vector(3 downto 0);signal tout:bit_vector(6 downto 0);BEGINtin<=A1&B1&C1&D1;PROCESS (tin)BEGINCASE tin ISWHEN "0000" =>tout<="0111111"WHEN "0001" =>tout<="0000110"WHEN "0010" =>tout<="1011011"WHEN "0011" =>tout<="1001111"WhEN "0100" =>tout<="1100110"WHEN "0101" =>tout<="1101101"WHEN "0110" =>tout<="1111100"WHEN "0111" =>tout<="0000111"WHEN "1000" =>tout<="1111111"WHEN "1001" =>tout<="1100111"WHEN OTHERS =>tout<="0000000"END CASE;a<=tout(0);b<=tout(1);c<=tout(2);d<=tout(3);e<=tout(4);f<=tout(5);g<=tout(6);END PROCESS;END ab;3) 设置引脚如下: 4) 再编译一遍。5) 然后点击“Programmer”进行下载到芯片上进行验证。(选模式二)3、 数据选择器1) 真值表如下: ENA1A0Y1XX0001D0001D1010D2011D32) VHDL语言如下: LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY fab5_3 ISPORT(en,A1,A0,D3,D2,D1,D0: IN bit;Y: OUT bit);END fab5_3;ARCHITECTURE a OF fab5_3 ISsignal tin:bit_vector(1 downto 0);BEGINtin<=A1&A0;PROCESS (en,tin)BEGINIF en='0' THEN CASE tin ISWHEN "00" =>y<=D0;WHEN "01" =>y<=D1;WHEN "10" =>y<=D2;WHEN "11" =>y<=D3;END CASE;ELSE y<='0'END IF;END PROCESS;END a;2) 仿真图如下: 4) 设置引脚如下; 5) 再编译一遍。6)然后点击“Programmer”进行下载到芯片检验进行验证(模式一)六、实验总结:1、要注意VHDL语言中输出端要设置。2、注意没有用到的组合要输出指定的组合。3、注意VHDL语言的格式。4、注意用到数码管时电路模式的选择。5、注意文件名应与实体名相同。