牛客网verilog VL16 使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器

`timescale 1ns/1ns
module encoder_83(
   input      [7:0]       I   ,
   input                  EI  ,
   
   output wire [2:0]      Y   ,
   output wire            GS  ,
   output wire            EO    
);
assign Y[2] = EI & (I[7] | I[6] | I[5] | I[4]);
assign Y[1] = EI & (I[7] | I[6] | ~I[5]&~I[4]&I[3] | ~I[5]&~I[4]&I[2]);
assign Y[0] = EI & (I[7] | ~I[6]&I[5] | ~I[6]&~I[4]&I[3] | ~I[6]&~I[4]&~I[2]&I[1]);

assign EO = EI&~I[7]&~I[6]&~I[5]&~I[4]&~I[3]&~I[2]&~I[1]&~I[0];

assign GS = EI&(I[7] | I[6] | I[5] | I[4] | I[3] | I[2] | I[1] | I[0]);
//assign GS = EI&(| I);
         
endmodule

module encoder_164(
   input      [15:0]      A   ,
   input                  EI  ,
   
   output wire [3:0]      L   ,
   output wire            GS  ,
   output wire            EO    
);
wire EO1;
wire EO2;
wire [2:0] Y1;
wire [2:0] Y2;
wire GS1;
wire GS2;
encoder_83 u1(//高位片
   .     I   (A[15:8]),
   .     EI  (EI),

   .     Y   (Y1),
   .     GS  (GS1),
   .     EO  (EO1)  
);  
encoder_83 u2(//低位片
   .     I   (A[7:0]),
   .     EI  (EO1),

   .     Y   (Y2),
   .     GS  (GS2),
   .     EO  (EO)  
);       
	assign L[3] = GS1;
	assign L[2] = Y1[2] | Y2[2];
	assign L[1] = Y1[1] | Y2[1];
	assign L[0] = Y1[0] | Y2[0];

    assign GS= GS1 | GS2;
endmodule
//默认是1 所以想与
//EI是否使能
//EO判断是否为0
//GS为是否按下按键
//注意assign的写法
//高位片时8+x
//低位片 时x

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值