【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL16

使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器

描述

②请使用2片该优先编码器Ⅰ及必要的逻辑电路实现16线-4线优先编码器。优先编码器Ⅰ的真值表和代码已给出。

可将优先编码器Ⅰ的代码添加到本题答案中,并例化。

优先编码器Ⅰ的代码如下:

module encoder_83(input      [7:0]       I   ,input                  EI  ,output wire [2:0]      Y   ,output wire            GS  ,output wire            EO    
);
assign Y[2] = EI & (I[7] | I[6] | I[5] | I[4]);
assign Y[1] = EI & (I[7] | I[6] | ~I[5]&~I[4]&I[3] | ~I[5]&~I[4]&I[2]);
assign Y[0] = EI & (I[7] | ~I[6]&I[5] | ~I[6]&~I[4]&I[3] | ~I[6]&~I[4]&~I[2]&I[1]);assign EO = EI&~I[7]&~I[6]&~I[5]&~I[4]&~I[3]&~I[2]&~I[1]&~I[0];assign GS = EI&(I[7] | I[6] | I[5] | I[4] | I[3] | I[2] | I[1] | I[0]);
//assign GS = EI&(| I);endmodule


下表是8线-3线优先编码器Ⅰ的功能表

EI

I[7]

I[6]

I[5]

I[4]

I[3]

I[2]

I[1]

I[0]

Y[2]

Y[1]

Y[0]

GS

EO

0

x

x

x

x

x

x

x

x

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

x

x

x

x

x

x

x

1

1

1

1

0

1

0

1

x

x

x

x

x

x

1

1

0

1

0

1

0

0

1

x

x

x

x

x

1

0

1

1

0

1

0

0

0

1

x

x

x

x

1

0

0

1

0

1

0

0

0

0

1

x

x

x

0

1

1

1

0

1

0

0

0

0

0

1

x

x

0

1

0

1

0

1

0

0

0

0

0

0

1

x

0

0

1

1

0

1

0

0

0

0

0

0

0

1

0

0

0

1

0

输入描述:

   input      [15:0]      A   ,
   input                  EI  

输出描述:

   output wire [3:0]      L   ,
   output wire            GS  ,
   output wire            EO  

解题思路:

16-4线优先编码器与8-3优先编码器工作状态类似:

对于编码器1:令其I7~I0对应16-4编码器的A7~A0,将编码器1记为EN1;

同理,编码器2I7~I0对应16-4编码器的A15~A8,将编码器2记为EN2;

将EN1的使能端EI做为整个编码器的使能端EI;

其中,我们希望当EN1为EI=1时,EN2的EI端同样为1,即两个编码器EN1,EN2同时进入工作状态;根据8-3编码器的功能表,发现,当E1=1时,无论什么情况,GS和EO端的输出值总有一个值为1,即GS | EO = 1;因此,将EN1的GS端和EO端经过一个或门(OR)再接入EN2的EI端

GS:当且仅当A[15:0]为全0时,GS=0,因此,将两个EN的GS端经过一个或门(OR)输出,可包含以上情况;

EO:当且仅当A[15:0]为全0时,EO=1,因此,将两个EN的EO端经过一个与门(AND)输出;


对于输出变量L的判断:

L[3]当L[3]=0时,说明待编码的数据为前8个数据(EN1);当L[3]=1时,说明待编码的数据为后8个数据(EN2);

对于L[3]的状态的判定,只需要判定EN2的输出端Y与GS的按位相或是否为1(观察8-3编码器功能表),

L[3]=1则说明EN2处于输出状态,最终输出的L[2:0]同样应为EN2的Y端

L[3]=0:说明L[2:0]应对应于EN1的输出端Y

(因为设定的是EN2的为高端输出,因此EN2优先级高)

因此,根据以上所述画出其电路图:


代码如下:
`timescale 1ns/1nsmodule encoder_164(input      [15:0]      A   ,input                  EI  ,output wire [3:0]      L   ,output wire            GS  ,output wire            EO    
);
wire [2:0] E1_Y, E2_Y;
wire Eo_1, Eo_2;
wire Ei_2;
wire GS_1, GS_2;
//编码器1
encoder_83 EN1(.I(A[7:0]),.EI(EI),.Y(E1_Y),.GS(GS_1),.EO(Eo_1));
//编码器2
assign Ei_2 = GS_1 | Eo_1;encoder_83 EN2(.I(A[15:8]),.EI(Ei_2),  .Y(E2_Y),.GS(GS_2),.EO(Eo_2));assign L[3] = |{E2_Y[2:0], GS_2} ;
assign L[2:0] = (L[3])? E2_Y : E1_Y;assign EO = Eo_1&Eo_2;
assign GS = GS_1 | GS_2;endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CentOS 7 】设置密码命令

好久没用虚拟机,今天打开忘了密码,还好设置了快照,赶紧改密码 1.切换到 root 用户 sudo su -2.输入以下命令以更改 root 用户的密码: passwd root3.按照提示输入新的密码,然后再次输入以确认。

MyBatis 源码解析:TypeHandler 设计与自定义实现

引言 在 MyBatis 中,TypeHandler 是一个非常重要的接口,它的作用是将 Java 类型和数据库类型进行互相转换。当我们执行 SQL 查询或插入操作时,TypeHandler 决定了如何将 Java 对象转换为数据库字段类型,或将数据库字段转换为 Jav…

[python]从零开始的PySide安装配置教程

一、PySide是什么? PySide 是 Qt for Python 项目的一部分,它提供了与 PyQt 类似的功能,使开发者能够使用 Python 编程语言来构建基于 Qt 的图形用户界面 (GUI) 应用程序。PySide 是由 Qt 公司官方维护的,而 PyQt 则是由第三方开发…

【Pyside】pycharm2024配置conda虚拟环境

知识拓展 Pycharm 是一个由 JetBrains 开发的集成开发环境(IDE),它主要用于 Python 编程语言的开发。Pycharm 提供了代码编辑、调试、版本控制、测试等多种功能,以提高 Python 开发者的效率。 Pycharm 与 Python 的关系 Pycharm 是…

【JavaEE】——多线程(join阻塞,计算,引用,状态)

阿华代码,不是逆风,就是我疯,你们的点赞收藏是我前进最大的动力!!希望本文内容能够帮助到你! 目录 一:join等待线程结束 1:知识回顾 2:join的功能就是“阻塞等待” …

PyTorch 实现手写数字识别

PyTorch 实现手写数字识别 在本教程中,我们将使用 PyTorch 实现经典的手写数字识别任务。我们将使用 MNIST 数据集,这是一个包含手写数字的图像数据集。我们将介绍如何使用 PyTorch 构建、训练和评估一个简单的卷积神经网络(CNN)…

【linux】kill命令

kill 命令在 Linux 和类 Unix 系统中用于向进程发送信号,默认情况下是发送 SIGTERM(信号 15),请求程序终止运行。如果程序没有响应 SIGTERM 信号,可以使用 SIGKILL(信号 9)强制终止进程&#xf…

java之斗地主部分功能的实现

今天我们要实现斗地主中发牌和洗牌这两个功能,该如何去实现呢? 1.创建牌类:52张牌每一张牌包含两个属性:牌的大小和牌的花色。 故我们优先创建一个牌的类(Card):包含大小和花色。 public class Card { //单张牌的大小及类型/…

无人机+自组网:中继通信增强技术详解

无人机与自组网技术的结合,特别是通过中继通信增强技术,为无人机在复杂环境中的通信提供了稳定、高效、可靠的解决方案。以下是对该技术的详细解析: 一、无人机自组网技术概述 无人机自组网技术是一种利用无人机作为节点,通过无…

proteus仿真学习(1)

一,创建工程 一般选择默认模式,不配置pcb文件 可以选用芯片型号也可以不选 不选则从零开始布局,没有初始最小系统。选用则有初始最小系统以及基础的main函数 本次学习使用从零开始,不配置固件 二,上手软件 1.在元件…

6--SpringBootWeb案例(详解)

目录 环境搭建 部门管理 查询部门 接口文档 代码 删除部门 接口文档 代码 新增部门 接口文档 代码 已有前端,根据接口文档完成后端功能的开发 成品如下: 环境搭建 1. 准备数据库表 (dept 、 emp) -- 部门管理 create table dept( id int un…

深度学习自编码器 - 正则自编码器篇

序言 深度学习领域中,自编码器( Autoencoder \text{Autoencoder} Autoencoder)作为一种无监督学习技术,凭借其独特的结构在数据降维、特征提取、异常检测及数据去噪等方面展现出强大的能力。正则自编码器,作为自编码器…

ES5 在 Web 上的现状

最后一个支持 ES5 的浏览器 IE 11 在 2022 年被微软停止支持,那么今天 Web 上的 ES5 现状如何?在构建生产代码时,Web 开发者的最佳实践是什么? 本文将通过数据来回答这些问题,并基于这些数据为网站开发者和库作者提供一…

Delta Lake如何使用

1. 安装 Java 确保你的系统上安装了 Java 8 或更高版本。可以通过以下命令检查 Java 是否已安装: java -version2. 安装 Apache Spark 下载 Spark: 从 Apache Spark 官方网站 下载适合的版本,建议下载预编译的版本(例如&#xf…

如何有效检测住宅IP真伪?

在当今的互联网时代,住宅IP(即家庭用户通过宽带服务提供商获得的IP地址)在跨境电商、广告投放、网络安全等多个领域扮演着重要角色。然而,随着网络环境的复杂化和欺诈行为的增多,如何有效检测和辨别住宅IP的真伪成为了…

Spring:统一结果私有属性造成的前端无法访问异常报错问题

用户未填写任何评价 1.问题复现 (1)看一段代码 controller: import lombok.extern.slf4j.Slf4j; import org.ljy.testdemo.common.Result; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.w…

深入解析 SQLSugar:从基础 CRUD 到读写分离与高级特性详解

SQLSugar 使用指南:从入门到进阶及高级特性详解 SQLSugar 是一款功能丰富的 .NET ORM 框架,它支持多种数据库、简洁的 API 和优雅的编程体验。相较于其他 ORM,SQLSugar 提供了很多开发者友好的功能,比如自动创建表结构、灵活的查…

在HTML中添加图片

在HTML中添加图片&#xff0c;你需要使用<img>标签。这个标签用于在网页上嵌入图像。<img>是一个空元素&#xff0c;它只包含属性&#xff0c;并且没有闭合标签。要在<img>标签中指定要显示的图像&#xff0c;你需要使用src&#xff08;source的缩写&#xf…

Centos中关闭swap分区,关闭内存交换

概述&#xff1a; Swap 分区是 Linux 系统中扩展物理内存的一种机制。Swap的主要功能是当全部的RAM被占用并需要更多内存时&#xff0c;用磁盘空间代理RAM内存。Swap对虚拟化技术资源损耗非常大&#xff0c;一般虚拟化是不允许开启交换空间的&#xff0c;如果不关闭Swap&…

【Linux课程学习】make/Makefile:Linux项目自动化构建工具

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 &#x1f349;一.make/Makefile的理解&#xff1a; …