Verilog快速入门(11)—— 8线-3线优先编码器

该文介绍了Verilog语言的基础应用,包括8线-3线优先编码器的设计。通过一个具体的编码器实例,展示了如何使用Verilog进行逻辑电路的描述,包括输入、输出的定义,以及状态的处理。代码中涉及了条件判断和case语句来实现编码逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)边沿检测



一、题目描述

输入描述:
input [7:0] I ,
input EI
输出描述:
output wire [2:0] Y ,
output wire GS ,
output wire EO
在这里插入图片描述

二、解析与代码

`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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值