VHDL
8x3 Encoder , 8x3 엔코더 VHDL
전자자연인
2021. 6. 8. 22:13
반응형
인코더 : 인코더(Encoder)란 2^n비트의 2진 코드(code) 값을 입력으로 받아들여 최대 n개의 서로 다른 정보로 바꿔 주는 조합 회로를 말한다. 일반적으로 인코더는 2^n개의 입력선과 최대 n개의 출력선을 가지며, 입력 값에 따라 선택된 하나의 출력선이 나머지 출력선들과 반대값을 갖는다.
8x3 Encoder : 2^3비트의 입력선과 3개의 출력선을 가지며 입력 값에 따라 선택된 하나의 출력선이 나머지 출력선들과 반대값을 갖는다.
<설계한 엔코더 진리표 ->설계자에 의해 진리표가 마음대로 바뀔 수 있다. >
2.소스코드 및 코드 설명
library ieee;
use ieee.std_logic_1164.all;
entity Encoder_83 is --Encoder_83에 대한 entity문
port ( A : in std_logic_vector (7 downto 0); --A는 7부터0까지 내림차순의 8비트 입력 로직벡터 선언
Y :out std_logic_vector (2 downto 0)); --Y는 2부터0까지 내림차순의 3비트 출력로직벡터 선언
end Encoder_83;
architecture Behavioral of Encoder_83 is
begin
process (A) --A입력신호에 대한 순차문
begin <!--[endif]-->
case A is --A의 입력신호 경우의수에 관한 출력문
when "00000001" => Y <= "000" ;
when "00000010" => Y <= "001" ;
when "00000100" => Y <= "010" ;
when "00001000" => Y <= "011" ;
when "00010000" => Y <= "100" ;
when "00100000" => Y <= "101" ;
when "01000000" => Y <= "110" ;
when "10000000" => Y <= "111" ;
when others => null; --A의 입력신호가 사용되지 않는 다른경우에 대해서 null처리를 하여 논리합성시 배제한다. 불필요한 래치 발생안함
end case; --CASE문 종료
end process; -- PROCESS문 종료
end Behavioral; --
동작적모델링 종료
3. 시뮬레이션 결과 및 설명
1. A(0) 이 1일시 Y출력 값은 000이다. A의 0비트가 1이므로 00000001 이 입력되고 그때 출력 3비트 값은 000
2. A(2) 이 1일시 Y출력 값은 010이다. A의 2비트가 1이므로 00000100 이 입력되고 그때 출력 3비트 값은 010
3. A(5) 이 1일시 Y출력 값은 101이다. A의 5비트가 1이므로 00100000 이 입력되고 그때 출력 3비트 값은 101
불필요한 값 11011011에 대해선 null값이 적용된다 불필요한 래치 발생을 막는다.
반응형