实验三--8-3优先编码器和3-8线译码器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 8-3优先编码器和3-8线译码器
一、实验目的
1、熟悉常用编码器,译码器的功能逻辑。
2、熟悉VHDL的代码编写方法。
3、掌握复杂译码器的设计方法。
二、实验原理
2、逻辑表达式:
Y2=X4&X5&X6&X7
Y1=~(~(X2)&X4&X5|~(X3)&X4&X5|~(X6)|~(X7));
Y0=~(~(X1)&x2&X4&X6|~(X3)&X4&X6|~(X5)&X6|~(X7));
2、3-8线码器
总体思路以EP2C5中的三个拨位开关,SW3,SW2,SW1为三个输入信号,可以代表8种不同的状态,该译码器对这8种状态译码,并把所译码的结果在七段LED数码管上显示出来。
三、实验连线
1、将EP2C5适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG 口连
接起来,万用下载区右下角的电源开关拨到 SOPC下载的一边
2、请将JPLED1短路帽右插,JPLED的短路帽全部上插。
3、请将JP103的短路帽全部插上。
四、实验步骤及波形
按照步骤三正确连线,参考实验二步骤,完成项目的建立,文件的命名,文件的编辑,语法检查,引脚分配,编译,下载。
8-3优先编码器参考代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY encode IS
PORT(XINA :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
Y0,Y1,Y2: OUT STD_LOGIC;
OUTA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
LEDW: OUT STD_LOGIC_VECTOR(2 DOWNTO 0)
);
END encode;
ARCHITECTURE ADO OF encode IS
SIGNAL LED: STD_LOGIC_VECTOR(2 DOWNTO 0);
SIGNAL XIN: STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
XIN<=XINA;
LEDW<="000";
PROCESS (XIN)
BEGIN
CASE XIN IS
WHEN x"00" => OUTA<=x"3F";
WHEN x"01" => OUTA<=x"06";
WHEN x"02" => OUTA<=x"5B";
WHEN x"04" => OUTA<=x"4F";
WHEN x"08" => OUTA<=x"66";
WHEN x"10" => OUTA<=x"6D";
WHEN x"20" => OUTA<=x"7D";
WHEN x"40" => OUTA<=x"07";
WHEN x"80" => OUTA<=x"3F";
WHEN OTHERS => OUTA<=x"3F";
END CASE;
END PROCESS;
PROCESS (XIN)
BEGIN
CASE XIN IS
WHEN x"01" => LED<="001";
WHEN x"02" => LED<="010";
WHEN x"04" => LED<="011";
WHEN x"08" => LED<="100";
WHEN x"10" => LED<="101";
WHEN x"20" => LED<="110";
WHEN x"40" => LED<="111";
WHEN x"80" => LED<="000";
WHEN OTHERS => LED<="000";
END CASE;
END PROCESS;
Y2<=LED(2);
Y1<=LED(1);
Y0<=LED(0);
END ADO;
3-8译码器参考代码:
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;
五、实验仿真
8-3编码器引脚锁定如图:
图5-1