Verilog_RTL 설계

[Verilog_RTL]_2-to-10_DECODER

juniha 2025. 6. 16. 19:11

Symbol

[그림 1] 2-to-10_Decoder_Symbol

 

사용 코드_case 문

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
module decoder (iIN, oOUT);
    input     [3:0] iIN;     // 4비트 입력: 0~9 (디코더 입력)
    output    [9:0] oOUT;    // 10비트 출력: 1-hot 형태의 키패드 출력
 
    reg       [9:0] out;     // always 블록 내부에서 값을 설정할 레지스터형 출력
 
    // 입력 iIN 값이 변할 때마다 out 값을 갱신
    always @(iIN) begin
        case (iIN)
            0       : out = 10'b00_0000_0001;  // 입력 0 -> 출력 0번 비트 high
            1       : out = 10'b00_0000_0010;  // 입력 1 -> 출력 1번 비트 high
            2       : out = 10'b00_0000_0100;  // 입력 2 -> 출력 2번 비트 high
            3       : out = 10'b00_0000_1000;  // 입력 3 -> 출력 3번 비트 high
            4       : out = 10'b00_0001_0000;  // 입력 4 -> 출력 4번 비트 high
            5       : out = 10'b00_0010_0000;  // 입력 5 -> 출력 5번 비트 high
            6       : out = 10'b00_0100_0000;  // 입력 6 -> 출력 6번 비트 high
            7       : out = 10'b00_1000_0000;  // 입력 7 -> 출력 7번 비트 high
            8       : out = 10'b01_0000_0000;  // 입력 8 -> 출력 8번 비트 high
            9       : out = 10'b10_0000_0000;  // 입력 9 -> 출력 9번 비트 high
            default : out = 10'b11_1111_1111;  // 0~9 외 입력 -> 모든 비트 high (에러 또는 경고)
        endcase 
    end
 
    // out 값을 oOUT에 연결
    assign oOUT = out;
 
endmodule
cs

 

사용 코드_Testbench

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
`timescale 1ns / 10ps   // 시뮬레이션 시간 단위와 정밀도 설정: 단위 1ns, 정밀도 10ps
 
module tb_decoder;
 
  reg       [3:0] iIN;     // 4비트 입력: 디코더 입력 값을 시뮬레이션하기 위한 레지스터
  wire      [9:0] oOUT;    // 10비트 출력: 디코더의 출력 관찰용
  integer         i;       // 루프용 변수
 
  // decoder 모듈 인스턴스화 (디코더 DUT)
  deco U0 (
    .iIN (iIN),   // tb_deco의 iIN을 deco 모듈의 iIN에 연결
    .oOUT (oOUT)  // deco 모듈의 oOUT을 tb_deco의 oOUT에 연결
  ); 
 
  // 초기 블록: 시뮬레이션 시작 시 한 번 실행
  initial begin
    iIN = 0;   // 초기 입력 값 0 설정
    // 0부터 10까지 i를 변화시키며, iIN 값을 증가
    for (i = 0; i <= 10; i = i + 1) begin
      #100 iIN = iIN + 1;  // 100ns마다 iIN을 1씩 증가시켜 디코더 입력 변경
    end
  end  
 
endmodule
cs

 

Schematic

[그림 1] 2-to-10_Decoder_ Schematic

Simultaion

[그림 3] 2-to-10_Decoder _Simulation

 

'Verilog_RTL 설계' 카테고리의 다른 글

[Verilog_RTL]_FSM_moore  (0) 2025.06.20
[Verilog_RTL]_7-Seg_DECODER  (0) 2025.06.20
[Verilog_RTL]_10-to-2_ENCODER  (0) 2025.06.16
[Verilog_RTL]_Binary_BCD 변환기  (0) 2025.06.14
[Verilog_RTL]_4BIT_ALU  (0) 2025.06.14