秋招手撕代码:verilog实现常规8-3编码器和优先级8-3编码器

1、常规的8-3编码器(一次输入只有一个1)

//8-3编码器:常规8-3编码器,每次的输入只有11,编码输出结果为1所处的位置

module encoder(
input D0,
input D1,
input D2,
input D3,
input D4,
input D5,
input D6,
input D7,
output reg [2:0]Q2Q1Q0
    );
always@(*)begin
Q2Q1Q0=0;
case(1'b1)
D0:Q2Q1Q0=3'b000;
D1:Q2Q1Q0=3'b001;
D2:Q2Q1Q0=3'b010;
D3:Q2Q1Q0=3'b011;
D4:Q2Q1Q0=3'b100;
D5:Q2Q1Q0=3'b101;
D6:Q2Q1Q0=3'b110;
D7:Q2Q1Q0=3'b111;
endcase
end			
endmodule

仿真文件:

module encoder_tst();
reg D0;
reg D1;
reg D2;
reg D3;
reg D4;
reg D5;
reg D6;
reg D7;
wire [2:0]Q2Q1Q0;
encoder U_encoder(
.D0    (D0    ),
.D1    (D1    ),
.D2    (D2    ),
.D3    (D3    ),
.D4    (D4    ),
.D5    (D5    ),
.D6    (D6    ),
.D7    (D7    ),
.Q2Q1Q0(Q2Q1Q0)
);

initial
begin
D0 =0;
D1 =0;
D2 =1;
D3 =0;
D4 =0;
D5 =0;
D6 =0;
D7 =0;
end

endmodule

2、有优先级8-3编码器
(低位优先级最高,1次输入可以有多个1)

module priority_encoder(
input D0,
input D1,
input D2,
input D3,
input D4,
input D5,
input D6,
input D7,
output reg [2:0]Q2Q1Q0
    );
	
always@(*)	
begin
Q2Q1Q0=3'b000;
if(D0)       Q2Q1Q0=3'b000;	
else if(D1)  Q2Q1Q0=3'b001;
else if(D2)  Q2Q1Q0=3'b010;
else if(D3)  Q2Q1Q0=3'b011;
else if(D4)  Q2Q1Q0=3'b100;
else if(D5)  Q2Q1Q0=3'b101;
else if(D6)  Q2Q1Q0=3'b110;
else if(D7)  Q2Q1Q0=3'b111;
	
end	
	
endmodule

module encoder_tst();
reg D0;
reg D1;
reg D2;
reg D3;
reg D4;
reg D5;
reg D6;
reg D7;
wire [2:0]Q2Q1Q0;
encoder U_encoder(
.D0    (D0    ),
.D1    (D1    ),
.D2    (D2    ),
.D3    (D3    ),
.D4    (D4    ),
.D5    (D5    ),
.D6    (D6    ),
.D7    (D7    ),
.Q2Q1Q0(Q2Q1Q0)
);

initial
begin
D0 =0;
D1 =0;
D2 =1;
D3 =0;
D4 =0;
D5 =0;
D6 =0;
D7 =0;

end

endmodule


以上内容参考《verilog高级数字系统设计技术与实例分析》,比较简单易懂,常规编码器中case的用法我其实是第一次见,感觉很值得学习。

  • 11
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IC媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值