[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 댓글