秋招手撕代码:verilog实现常规8

您所在的位置:网站首页 8线3线优先编码器实验结论 秋招手撕代码:verilog实现常规8

秋招手撕代码:verilog实现常规8

2024-07-09 18:06| 来源: 网络整理| 查看: 265

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

//8-3编码器:常规8-3编码器,每次的输入只有1个1,编码输出结果为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的用法我其实是第一次见,感觉很值得学习。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3