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값이 적용된다 불필요한 래치 발생을 막는다.

 

 

반응형