디코더 설계
Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 85번째.
챌린지
디코더(decoder)는 이진수를 입력받아 해당 숫자에 기반하여 정확히 하나의 출력만 활성화합니다. 하나의 비트만 핫(1) 상태이고 다른 모든 비트는 쿨(0) 상태이므로, 활성화되는 출력을 "원핫(one-hot)"이라고 부릅니다.
진리표 (2-to-4 디코더)
| Input (in) | out0 | out1 | out2 | out3 |
|---|---|---|---|---|
| 00 | 1 | 0 | 0 | 0 |
| 01 | 0 | 1 | 0 | 0 |
| 10 | 0 | 0 | 1 | 0 |
| 11 | 0 | 0 | 0 | 1 |
모듈 인터페이스
| Port | Direction | Width | Description |
|---|---|---|---|
in | input | 2 bits | 이진 입력 (0 ~ 3) |
out0 | output | 1 bit | in = 00일 때 활성화 |
out1 | output | 1 bit | in = 01일 때 활성화 |
out2 | output | 1 bit | in = 10일 때 활성화 |
out3 | output | 1 bit | in = 11일 때 활성화 |
구현할 과제는 case 문을 사용하여 아래 모듈을 완성하는 것입니다.
작업 내용:
in = 2'b00일 때,out0 = 1, 나머지 모두 0in = 2'b01일 때,out1 = 1, 나머지 모두 0in = 2'b10일 때,out2 = 1, 나머지 모두 0in = 2'b11일 때,out3 = 1, 나머지 모두 0
직접 해보기
module decoder (
input [1:0] in,
output reg out0,
output reg out1,
output reg out2,
output reg out3
);
// TODO: always @(*) 블록과 case (in) 추가
// 2'b00: out0=1, 나머지는 0
// 2'b01: out1=1, 나머지는 0
// 2'b10: out2=1, 나머지는 0
// 2'b11: out3=1, 나머지는 0
endmodule