반응형
디코더
디코더(decoder)란 n비트의 2진 코드(code) 값을 입력으로 받아들여 최대 2^n개의 서로 다른 정보로 바꿔 주는 조합 회로를 말한다. 일반적으로 디코더는 n개의 입력선과 최대 2^n개의 출력선을 가지며, 입력 값에 따라 선택된 하나의 출력선이 나머지 출력선들과 반대값을 갖는다.
3x8디코더 : 3개의 입력선과 최대 2^3개의 출력선을 가지며 입력 값에 따라 선택된 하나의 출력선이 나머지 7개의 출력선들과 반대값을 갖는다.
2.소스코드 및 코드설명
library ieee;
use ieee.std_logic_1164.all;
entity Decoder_38 is -- Decoder_38에 대한 entity
port ( A : in std_logic_vector (2 downto 0); --A 입력 로직벡터 (3부터0 내림차순), A2A1A0 3비트 선언
Y :out std_logic_vector (7 downto 0)); --Y 출력 로직벡터(7부터 0내림차순) , 8비트 선언
end Decoder_38;
architecture Behavioral of Decoder_38 is --Decoder_38에 대한 동작적모델링
begin
process(A) -- A의 입력신호 변화에의한 순차적 처리begin
case A is
when "000" => Y <= "00000001";
when "001" => Y <= "00000010";
when "010" => Y <= "00000100";
when "011" => Y <= "00001000";
when "100" => Y <= "00010000";
when "101" => Y <= "00100000";
when "110" => Y <= "01000000";
when "111" => Y <= "10000000";
end case; --CASE문 종료
end process; -- 순차처리문 종료
end Behavioral; --동작적모델링 종료
3.시뮬레이션 결과 및 설명
(1) 입력신호 A의 값이 001이 나올 경우 디코더의 출력 Y의 값은 00000010이 나왔다.
설계한 디코더의 진리표에서 A가 001일시 Y의 출력은 Y(1), Y의 1비트에 1을 선택하였으므로 나머지 비트의 출력은 Y 1비트의 출력값과 반대이다.
(2) 입력신호 A의 값이 000이 나올 경우 디코더의 출력 Y의 값은 00000001이 나왔다.
설계한 디코더의 진리표에서 A가 000일시 Y의 출력은 Y(0), Y의 0비트에 1을 선택하였으므로 나머지 비트의 출력은 Y 0비트의 출력값과 반대이다.
(3) 입력신호 A의 값이 111이 나올 경우 디코더의 출력 Y의 값은 10000000이 나왔다.
설계한 디코더의 진리표에서 A가 1일시 Y의 출력은 Y(7), Y의 7비트에 1을 선택하였으므로 나머지 비트의 출력은 Y 7비트의 출력값과 반대이다.
★디코더의 진리표는 설계자에 의해 입출력이 달라 질 수있다.
반응형
'VHDL' 카테고리의 다른 글
FND DECODER ( DE2보드) (0) | 2021.06.08 |
---|---|
8x3 Encoder , 8x3 엔코더 VHDL (0) | 2021.06.08 |
조합회로 - Multiplexer(Mux) 4x1,8x1 (0) | 2021.06.08 |
ALU dataflow (0) | 2021.06.08 |
Demultiplexer(Demux) 1x4,1x8 (0) | 2021.06.08 |