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

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

8线-3线优先编码器

  • Verilog快速入门
  • 一、题目描述
  • 二、解析与代码

一、题目描述

输入描述:
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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年12月6日
下一篇 2023年12月6日

相关推荐