3-8线译码器实验内容
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五 3-8线译码器
一、实验目的:1、熟悉常用译码器的功能逻辑。2、掌握复杂译码器的设计方法。
二、实验原理:1、总体思路以EP2C5中的三个拨位开关,SW3,SW2,SW1为三个输入信号,可以代表8种不同的状态,该译码器对这8种状态译码,并把所译码的结果在七段LED数码管上显示出来。
2、3-8线译码器原理图如下图所示:
三、实验连线:
1、将EP2C5适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG 口连接起来,万用下载区右下角的电源开关拨到 SOPC下载的一边
2、请将JPLED1短路帽右插,JPLED的短路帽全部上插。
3、请将JP103的短路帽全部插上。
四、实验步骤:按照步骤三正确连线,参考实验二步骤,完成项目的建立,文件的命名,文件的编辑,语法检查,引脚分配,编译,下载。
实验参考代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY DECODE IS
PORT(DATA_IN :IN STD_LOGIC_VECTOR(2 DOWNTO 0);
LEDOUT,DATA_OUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
LEDW :OUT STD_LOGIC_VECTOR(2 DOWNTO 0)
);
END DECODE;
ARCHITECTURE ADO OF DECODE IS
SIGNAL OUTA,D_OUT : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
LEDW<="000";
PROCESS (DATA_IN)
VARIABLE DIN: STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
DIN:=DATA_IN;
LEDOUT<=OUTA;
DATA_OUT<=D_OUT;
CASE DIN IS
when "000" => OUTA<="00111111" ; --"0"
when "001" => outa<="00000110" ; --"1"
when "010" => outa<="01011011"; --"2"
when "011" => outa<="01001111"; --"3"
when "100" => outa<="01100110"; --"4"
when "101" => outa<="01101101"; --"5"
when "110" => outa<="01111101"; --"6"
when "111" => outa<="00000111"; --"7"
WHEN OTHERS => OUTA<="XXXXXXXX";
END CASE;
CASE DIN IS
WHEN "000" => D_OUT<="00000000";
WHEN "001" => D_OUT<="00000001";
WHEN "010" => D_OUT<="00000010";
WHEN "011" => D_OUT<="00000100";
WHEN "100" => D_OUT<="00001000";
WHEN "101" => D_OUT<="00010000";
WHEN "110" => D_OUT<="00100000";
WHEN "111" => D_OUT<="01000000";
WHEN OTHERS=> D_OUT<="XXXXXXXX";
END CASE;
END PROCESS;
END ADO;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY shiyan5 IS
PORT(DATA_IN :IN STD_LOGIC_VECTOR(2 DOWNTO 0);
LEDOUT,DATA_OUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
LEDW :OUT STD_LOGIC_VECTOR(2 DOWNTO 0)
);
END shiyan5;
ARCHITECTURE ADO OF shiyan5 IS
SIGNAL OUTA,D_OUT : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
LEDW<="000";
PROCESS (DATA_IN)
VARIABLE DIN: STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
DIN:=DATA_IN;
LEDOUT<=OUTA;
DATA_OUT<=D_OUT;
IF(DIN="000") THEN OUTA<="00111111" ;D_OUT<="00000000"; --"0"
ELSIF(DIN="001") THEN outa<="00000110" ;D_OUT<="00000001"; --"1" ELSIF(DIN="010") THEN outa<="01011011";D_OUT<="00000010"; --"2" ELSIF(DIN="011") THEN outa<="01001111";D_OUT<="00000100"; --"3" ELSIF(DIN="100") THEN outa<="01100110";D_OUT<="00001000"; --"4" ELSIF(DIN="101") THEN outa<="01101101";D_OUT<="00010000"; --"5" ELSIF(DIN="110") THEN outa<="01111101";D_OUT<="00100000"; --"6"