디코더 설계
Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 85번째.
챌린지
디코더(decoder)는 이진수를 입력으로 받아 그 숫자에 해당하는 단 하나의 출력만을 켭니다. 오직 하나의 비트만 활성화(1)되고 나머지는 비활성화(0)되기 때문에, 켜지는 출력을 "원-핫(one-hot)"이라고 부릅니다.
진리표 (2-to-4 디코더)
| 입력 (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 |
모듈 인터페이스
| 포트 | 방향 | 너비 | 설명 |
|---|---|---|---|
in | input | 2 비트 | 이진 입력 (0 ~ 3) |
out0 | output | 1 비트 | in = 00일 때 활성화 |
out1 | output | 1 비트 | in = 01일 때 활성화 |
out2 | output | 1 비트 | in = 10일 때 활성화 |
out3 | output | 1 비트 | 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: case (in)을 포함한 always @(*) 블록 추가
// 2'b00: out0=1, 나머지는 0
// 2'b01: out1=1, 나머지는 0
// 2'b10: out2=1, 나머지는 0
// 2'b11: out3=1, 나머지는 0
endmodule