Verilog快速入门
(1) 四选一多路器
(2)异步复位的串联T触发器
(3)奇偶校验
(4)移位运算与乘法
(5)位拆分与运算
(6)使用子模块实现三输入数的大小比较
(7)4位数值比较器电路
(8)4bit超前进位加法器电路
(9)优先编码器电路①
(10)用优先编码器①实现键盘编码电路
(11)8线-3线优先编码器
(12)使用8线-3线优先编码器实现16线-4线优先编码器
(13)用3-8译码器实现全减器
(14)使用3-8译码器①实现逻辑函数
(15)数据选择器实现逻辑函数
(16)状态机
(17)ROM的简单实现
(18)边沿检测文章来源:https://www.toymoban.com/news/detail-731685.html
一、题目描述
输入描述:
input [7:0] I ,
input EI
输出描述:
output wire [2:0] Y ,
output wire GS ,
output wire EO文章来源地址https://www.toymoban.com/news/detail-731685.html
二、解析与代码
`timescale 1ns/1ns
module encoder_83(
input [7:0] I ,
input EI ,
output wire [2:0] Y ,
output wire GS ,
output wire EO
);
reg [2:0] Y_tmp=0;
reg GS_tmp=0,EO_tmp=0;
always@(*)begin
if(!EI)begin
Y_tmp <= 3'b000;
GS_tmp <= 0;
EO_tmp <= 0;
end
else begin
casex(I)
8'b0000_0000: {Y_tmp,GS_tmp,EO_tmp} <= {3'b000,1'b0,1'b1};
8'b1xxx_xxxx: {Y_tmp,GS_tmp,EO_tmp} <= {3'b111,1'b1,1'b0};
8'b01xx_xxxx: {Y_tmp,GS_tmp,EO_tmp} <= {3'b110,1'b1,1'b0};
8'b001x_xxxx: {Y_tmp,GS_tmp,EO_tmp} <= {3'b101,1'b1,1'b0};
8'b0001_xxxx: {Y_tmp,GS_tmp,EO_tmp} <= {3'b100,1'b1,1'b0};
8'b0000_1xxx: {Y_tmp,GS_tmp,EO_tmp} <= {3'b011,1'b1,1'b0};
8'b0000_01xx: {Y_tmp,GS_tmp,EO_tmp} <= {3'b010,1'b1,1'b0};
8'b0000_001x: {Y_tmp,GS_tmp,EO_tmp} <= {3'b001,1'b1,1'b0};
8'b0000_0001: {Y_tmp,GS_tmp,EO_tmp} <= {3'b000,1'b1,1'b0};
default : {Y_tmp,GS_tmp,EO_tmp} <= {3'b000,1'b0,1'b0}; //消除锁存器(latch)
endcase
end
end
assign Y = Y_tmp;
assign GS = GS_tmp;
assign EO = EO_tmp;
endmodule
到了这里,关于Verilog快速入门(11)—— 8线-3线优先编码器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!