8-3线优先编码器

//8-3线优先编码器
module cy4(input[7:0] I,
           input EI,//输入端口声明
           output reg[2:0] Y,//输出端口声明
           output reg GS,//输出端口及变量的数据类型声明
           output reg EO//输出端口及变量的数据类型声明
          );
always @(EI, I)
if(EI == 0) 
  begin
    Y <= 3'b000;
    GS = 1'b0;
    EO = 1'b0;
  end
else //当EI=1时,实现优先编码器的功能
begin
  GS = 1; EO = 0;//编码器的输入信号有效时,设定GS、EO的输出值
  casex(I)//逻辑值x表示输入信号中那些位可以为任意值
  8'b1000_0001: Y <= 3'b000;

  8'b0100_001x: Y <= 3'b001;

  8'b0010_01xx: Y <= 3'b010;

  8'b0001_1xxx: Y <= 3'b011;

  8'b0001_xxxx: Y <= 3'b100;

  8'b001x_xxxx: Y <= 3'b101;

  8'b01xx_xxxx: Y <= 3'b110;

  8'b1xxx_xxxx: Y <= 3'b111;

  default:begin
          Y <= 3'b000;
          GS <= 0;
          EO <= 1;
          end//处理编码器输入信号无效的情况
  endcase  
end
endmodule 

猜你喜欢

转载自blog.csdn.net/qq_41982581/article/details/82497295
8-3