1、优先编码器
1.1 定义:
为了防止多条线信号同时有效,规定只对序号最高的有效信号线进行编码,相当于该线的优先级别最高,称为优先编码器。
2、实现方式
优先编码器可以通过 if else 语句和case语句两种方式实现。
3、示例
输入描述:
①输入描述:
input [8:0] I_n
输出描述:
①输出描述:文章来源:https://www.toymoban.com/news/detail-719128.html
output reg [3:0] Y_n文章来源地址https://www.toymoban.com/news/detail-719128.html
3.1if else 语句
`timescale 1ns/1ns
module encoder_0(
input [8:0] I_n ,
output reg [3:0] Y_n
);
always @(I_n)
if (I_n==9'b111111111)
Y_n<=4'b1111;
else if (!I_n[8])
Y_n<=4'b0110;
else if (!I_n[7])
Y_n<=4'b0111;
else if (!I_n[6])
Y_n<=4'b1000;
else if (!I_n[5])
Y_n<=4'b1001;
else if (!I_n[4])
Y_n<=4'b1010;
else if (!I_n[3])
Y_n<=4'b1011;
else if (!I_n[2])
Y_n<=4'b1100;
else if (!I_n[1])
Y_n<=4'b1101;
else
Y_n<=4'b1110;
endmodule
3.2case语句
- case endcase
- 当数据中存在X要采用casex
-
case
进行全等匹配,casez
忽略?
或z
对应的位进行匹配,casex
忽略x
、?
或z
对应的位进行匹配。 - default要加上避免出现锁存器。
`timescale 1ns/1ns
module encoder_0(
input [8:0] I_n ,
output reg [3:0] Y_n
);
always @(I_n)
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
endmodule
到了这里,关于Verilog 实现优先编码器的两种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!