实验 编码器
1.实验目的
设计并实现一个16-4优先编码器
2.实验原理
常用的编码器有:4-2编码器、8-3编码器、16-4编码器,下面我们用一个8-3编码器的设计来介绍编码器的设计方法。
8-3编码器如图2-1所示,其真值表如表2-1。
图2-1 8-3编码器
表2-1 8-3优先编码器
真值表 输入 1 0 0 0 0 0 0 0 0 0 X 1 X X X X X X X 0 X 1 X X X X X X 0 1 X 1 X X X X X 0 1 1 X 1 X X X X 0 1 1 1 X 1 X X X 0 1 1 1 1 X 1 X X 0 1 1 1 1 1 X 1 X 0 1 1 1 1 1 1 整个编码器的VHDL语言描述如下: LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL; ENTITY ENCODE IS PORT(D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); EIN: IN STD_LOGIC; A0N,A1N,A2N,GSN,EON: OUT STD_LOGIC); END ENCODE;
ARCHITECTURE A OF ENCODE IS
SIGNAL Q: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN
A0N <=Q(0); A1N<=Q(1); A2N<=Q(2); PROCESS(D) BEGIN IF EIN =’1’ THEN Q<=”111”;
X 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 输出 1 1 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 EIN 0N 1N 2N 3N 4N 5N 6N 7N A2N A1N A0N GSN EON GSN<=’1’; EON<=’1’; ELSIF D(0)=’0’ THEN Q<=”111”; GSN<=’0’; EON<=’1’; ELSIF D(1)=’0’ THEN Q<=”110”; GSN<=’0’; EON<=’1’; ELSIF D(2)=’0’ THEN Q<=”101”; GSN<=’0’; EON<=’1’; ELSIF D(3)=’0’ THEN Q<=”100”; GSN<=’0’; EON<=’1’; ELSIF D(4)=’0’ THEN Q<=”011”; GSN<=’0’; EON<=’1’; ELSIF D(5)=’0’ THEN Q<=”010”; GSN<=’0’; EON<=’1’; ELSIF D(6)=’0’ THEN Q<=”001”; GSN<=’0’; EON<=’1’; ELSIF D(7)=’0’ THEN Q<=”000”; GSN<=’0’; EON<=’1’; ELSIF D=”11111111” THEN Q<=”111”; GSN<=’1’; EON<=’0’; END IF; END PROCESS; END A;
实验源程序名是encode.vhd。
请参考以上程序设计一16-4编码器。 3.实验连线
输入信号D0~D15(代表16路输入数据)、EIN(代表输入允许控制端)、EON、GSN(代表2个输出允许控制端),都接拨码开关;输出信号A0N~A3N(代表四路编码结果输出)接发光二极管。改变拨码开关的状态,对照表2-1 8-3优先编码器真值表,观察实验结果。
4.实验记录
对编码器造表,得到其真值表,并分析其运算结果的正确性。