题意整理

①本题要求根据编码器的真值表设计编码器电路。

注意真值表中I0~I9的位置,不要看反

题解主体

①优先编码器

本优先编码器,可采用case语句实现,注意到真值表中,出现了x状态,所以考虑采用casex语句实现。casex语句的真值表如下:

由真值表可以看出,当选择端是x时,输入端是任何状态,输出都将是1.

根据优先编码器真值表,可写出如下Verilog:


always @(*)begin

   casex(I_n)

      9'b111111111 : Y_n = 4'b1111;

      9'b0xxxxxxxx : Y_n = 4'b0110;

      9'b10xxxxxxx : Y_n = 4'b0111;

      9'b110xxxxxx : Y_n = 4'b1000;

      9'b1110xxxxx : Y_n = 4'b1001;

      9'b11110xxxx : Y_n = 4'b1010;

      9'b111110xxx : Y_n = 4'b1011;

      9'b1111110xx : Y_n = 4'b1100;

      9'b11111110x : Y_n = 4'b1101;

      9'b111111110 : Y_n = 4'b1110;

      default      : Y_n = 4'b1111;

   endcase   

end

参考答案

`timescale 1ns/1ns

module encoder_0(
   input      [8:0]         I_n   ,
   
   output reg [3:0]         Y_n   
);

always @(*)begin
   casex(I_n)
      9'b111111111 : Y_n = 4'b1111;
      9'b0xxxxxxxx : Y_n = 4'b0110;
      9'b10xxxxxxx : Y_n = 4'b0111;
      9'b110xxxxxx : Y_n = 4'b1000;
      9'b1110xxxxx : Y_n = 4'b1001;
      9'b11110xxxx : Y_n = 4'b1010;
      9'b111110xxx : Y_n = 4'b1011;
      9'b1111110xx : Y_n = 4'b1100;
      9'b11111110x : Y_n = 4'b1101;
      9'b111111110 : Y_n = 4'b1110;
      default      : Y_n = 4'b1111;
   endcase    
end 
     
endmodule