[VerilogHDL] 16_CombinationalLogicExample_Encoder

16_콤비_예제_3_Encoder

verilogHDL

[VerilogHDL] 16_CombinationalLogicExample_Encoder

1. Encoder

Verilog HDL에서 Encoder는 다수의 입력 비트를 이용하여 활성화된 입력 비트를 판별하는 조합 논리 회로입니다. Encoder는 입력 비트 중에서 단 하나의 비트만 활성화되는 경우에 해당 비트의 인덱스를 출력으로 제공합니다.

2. 예제 코드

module priority_encoder(input wire [N-1:0] inputs, output reg [M-1:0] output);
    reg [N-1:0] inputs_inverted;
    
    always @(inputs) begin
        inputs_inverted = ~inputs;
        output = 0;
        for (int i = 0; i < N; i = i + 1) begin
            if (inputs_inverted[i] == 1'b0) begin
                output = i;
                break;
            end
        end
    end
endmodule

위의 예제는 N 비트의 입력 inputs를 받아 우선순위 인코딩된 M 비트의 출력 output을 생성하는 Priority Encoder를 구현한 Verilog HDL 코드입니다.

inputs_inverted는 입력 비트를 반전시킨 값을 저장하기 위한 레지스터입니다. always 블록 내부에서 입력 신호의 변화를 감지하고, inputs_inverted에 입력 비트를 반전시킵니다.

output은 초기값으로 0을 할당하고, 입력 비트를 검사하여 우선순위가 가장 높은 인덱스를 output에 할당합니다. 입력 비트를 반전시킨 inputs_inverted에서 첫 번째로 등장하는 0인 비트의 인덱스가 output에 할당됩니다. 이후 break 문을 통해 루프를 종료합니다.

이 코드를 사용하여 Priority Encoder를 구현하면, 입력 신호 중에서 가장 우선순위가 높은 비트의 인덱스를 출력으로 얻을 수 있습니다. 예를 들어, 4비트 입력에서 2번째 비트가 1이고 나머지 비트가 0인 경우, output은 2를 나타낼 것입니다.

Priority Encoder는 다양한 응용 분야에서 사용되며, 입력 중에서 우선순위가 가장 높은 신호를 감지하거나 인덱싱하는 데 유용합니다.

댓글 쓰기

0 댓글