3-8线译码器实验内容

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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"

相关文档
最新文档