【FPGA】Verilog 实践:优先级编码器 | Priority encoder


0x00 优先级编码器(Priority encoder)

"能将多个二进制输入压缩成更少数目输出的电路或算法的编码器"

优先级编码器是一种编码器,它考虑了两个或更多输入位同时变为 1 但没有收到输入的情况。当输入进来时,优先级编码器会按照优先级顺序进行处理。

通常,它按升序或降序排列输入的优先级,当没有输入时,它会向 \color{}NR 输出一个 1,以区分零输入和零输出。在下面的真值表中,输入值的优先级顺序如下:\color{}3 > 2 > 1 > 0

优先级编码器

0

1

2

3

X

Y

NR

0

0

0

0

X

X

1

1

0

0

0

0

0

0

X

1

0

0

0

1

0

X

X

1

0

1

0

0

X

X

X

1

1

1

0

0x01 实现优先级编码器

为优先级编码器构建一个逻辑电路,使得该电路适用于所有输入形式 (16种),而不仅仅是 4 到 2 编码器的 4 种形式。

0x02 真值表

输入

输出

A

B

C

D

E0

E1

NR

0

0

0

0

X

X

1

0

0

0

1

1

1

0

0

0

1

0

1

0

0

0

0

1

1

1

1

0

0

1

0

0

0

1

0

0

1

0

1

1

1

0

0

1

1

0

1

0

0

0

1

1

1

1

1

0

1

0

0

0

0

0

0

1

0

0

1

1

1

0

1

0

1

0

1

0

0

1

0

1

1

1

1

0

1

1

0

0

0

1

0

1

1

0

1

1

1

0

1

1

1

0

1

0

0

1

1

1

1

1

1

0

0x03 卡诺图的绘制

E0

E1

由于当且仅当 \color{}A,B,C,D 均为 0 时 \color{}NR 的值才设为 1,因此我们无需绘制卡诺图,就能构造出如下形式的逻辑表达式:

\color{}NR = \bigwedge _{i=1}^{n} \neg I_i

\color{}NR = (\neg A)\wedge (\neg B)\wedge (\neg C)\wedge ( \neg D)

0x04 代码和仿真

💬 Design source:

`timescale 1ns / 1psmodule penc (input A,input B,input C,input D,output E0,output E1,output NR
);assign E0 = C | D
assign E1 = B & (~C) | D
assign NR = (~A) & (~B) & (~C) & (~D)endmodule

💬 Testbench:

`timescale 1ns / 1psmodule penc_tb;
reg A, B, C, D;
wire E0, E1, NR;penc u_penc (.A(A),.B(B),.C(C),.D(D),.E0(E0),.E1(E1),.NR (NR )
);initial beginA = 1'b0;B = 1'b0;C = 1'b0;D = 1'b0;
endalways@(A or B or C or D) beginA <= #10 ~A;B <= #20 ~B;C <= #40 ~C;D <= #80 ~D;
endinitial begin#160$finish;
endendmodule

🚩 运行结果如下:

📜 Schematic:

所设计的优先级编码器按 D>C>B>A 的顺序具有高优先级。高优先级意味着例如当 ABCD 接收到输入值 0101 时,即使 B 和 D 的值都被设置为 1,它也会将 0101 的输入视为 0001,因为 D 的优先级高于 B。这样,一个输入位就可以作为编码器的输入,即使不是设置为 1 或 0 的单个位,也能返回输出值。

📌 [ 笔者 ]   최역우
📃 [ 更新 ]   2022.9.20
❌ [ 勘误 ]   /* 暂无 */
📜 [ 声明 ]   由于作者水平有限,本文有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!

📜 参考资料 

Introduction to Logic and Computer Design, Alan Marcovitz, McGrawHill, 2008

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.

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

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

相关文章

智能指针分配动态数组

auto ptr_arr std::make_shared<int[]>(); std::unique_ptr<int[]> up1(new int[10]()); //C14以后语法 auto up2 std::make_unique<A[]>(3); auto sp3(std::shared_ptr<A[]>(new A[3])); //#include <boost/make_shared.hpp> auto b_ptr_…

php基础语法知识笔记(一)

共享一份我自己学习php基础语法知识的笔记&#xff0c;这是第一弹&#xff0c;明天共享第二弹。 1.判断php短标记<??>是否适用&#xff0c;查看php配置文件php.ini中的"short_open_tag On"2.官方的标记<?php?> &#xff0c; <script language&q…

php __FILE__和$_SERVER['SCRIPT_FILENAME']区别

假设有a.php和b.php2个文件&#xff0c;分别位于E:/wamp/www/Text/ a.php echo $_SERVER[SCRIPT_FILENAME].<br/>; echo __FILE__; 执行a.php 得到的是 E:/wamp/www/Text/a.php ($_SERVER[SCRIPT_FILENAME]) E:\wamp\www\Text\a.php (__FILE__) b.php require a.…

boost asio io_context 没任务不退出

boost::asio::io_context ioc; auto work(boost::asio::make_work_guard(ioc)); //没用任务时&#xff0c;run 不退出

git中reset与revert的区别

1:最本质的区别:reset 回滚后&#xff0c;不会生成任何commit点(也就是提交哈希值),而revert回滚后回生成commit点 2:reset 命令参数包括&#xff1a;soft hard mixed 三个回滚方式

论文总结2

基于内容的网页特征提取 2001 使用专业网络爬虫获取网页&#xff0c;巨量网页数据保存在分布式的LDAP (轻量级目录服务协议)目录服务器中, 通过轻量级目录服务协议维护管理。分词词典通过提取过滤很多相关领域网页生成&#xff0c;手动更新。特征提取&#xff1a;正文分词然后计…

安裝jpeg-6b png error错误解决方法

默认安裝jpeg-6b shell> wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz tar zxvf jpegsrc.v6b.tar.gz cd jpeg-6b ./configure –-prefix/usr/local/jpeg6 –enable-shared –enable-static make make install 指定安装目录方式安装jpeg-6b 如果你选择默认安装…

c++11特性move和forward区别

1:move属于强转,左值变右值 2:forward左值变左值&#xff0c;右值变右值(不是强转)

碎语

悠悠大道&#xff0c;莫衷一是。也许&#xff0c;看到的不是真相&#xff0c;听到的&#xff0c;反而是实言。匆匆的人流&#xff0c;滚滚的气息。得不到的一直在强求&#xff0c;在身边的故意不理睬。千篇一律的重复着早中晚&#xff0c;行尸走肉地上演着你我他。了却不断的红…

linux 进程重启脚本

pid(ps aux | grep 进程名 | grep -v grep | awk {print $2}) if [ ! -n "$pid" ] then echo 进程名 process not found. else kill -9 $pid echo 进程名 process[$pid] be killed. fi chmod 777 ./进程名 rm -rf *.log nohup ./进程名 > log.log 2>…

MongoDB与其他数据库的对比

本文转载自&#xff1a;http://book.2cto.com/201211/7897.html 市面上的数据库数量成爆炸式增长&#xff0c;要在它们之间进行权衡是很困难的。幸运的是&#xff0c;它们之中的大多数数据库都能归在几个分类里。本节中&#xff0c;我会描述简单及复杂的键值存储、关系型数据库…

【学习生活杂谈】学习记录

hadoop学习汇总&#xff1a;Hadoop官方的中文文档http://hadoop.apache.org/common/docsHadoop学习资料 -- 这里面总结了很多的东西&#xff0c;值得一一细看http://cloud21.javaeye.com/blog/607175关于Hadoop的两本书 -- 有电子书下载http://caibinbupt.javaeye.com/blog/418…

hadoop和kerberos的整合总结

由于手上负责的hadoop集群需要对公司外部提供服务&#xff0c;所有会有多个部门访问我们的hadoop集群&#xff0c;这个就涉及到了hadoop的安全性。 而hadoop的安全性是很弱的&#xff0c;只提供类似linux文件系统的帐户权限验证&#xff0c;而且可以通过简单的手段冒充用户名&a…

linux系统用户迁移

今天登陆上来发现好久都没有写博客了。 刚刚做了一个linux用户迁移&#xff0c;记录下&#xff0c;以后用到的话&#xff0c;查起来方便。希望对大家有帮助。 环境&#xff1a;我们原先的一台服务器由于过保所以替换新的服务器&#xff0c;但是由于用户数较多&#xff0c;如果一…

vm虚拟远程部署windows驱动

注意打印机是用com1端口&#xff0c;应该提前删除 bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 bcdedit /dbgsettings 以下两条是配置调式环境系统用 bcdedit /set testsigning on bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS 在…

Android:SharedPreferences详解+示例

为什么80%的码农都做不了架构师&#xff1f;>>> 一、简介SharedPreferences是一种轻型的数据存储方式&#xff0c;它的本质是基于XML文件存储key-value键值对数据&#xff0c;通常用来存储一些简单的配置信息。 二、存储位置 在/data/data/<包名>/shared_pre…

类模板的分离式编译错误解决

声明&#xff1a;不谈逻辑是否能被执行成功&#xff0c;就谈编译是否成功. vs的错误: linux下g的错误: 以上错误&#xff0c;改怎么解决呢&#xff1f; 方法1&#xff1a;把实现代码和头文件写在一起 方法2&#xff1a;在.cpp文件中加入模板声明

6421B Lab5 路由和远程访问的配置与故障排除

共2个实验&#xff1a; 实验L5A&#xff1a;配置和管理网络访问 实验L5B&#xff1a;实现DirectAccess&#xff08;略&#xff09; 实验L5A&#xff1a;配置和管理网络访问 共有3个练习 练习1&#xff1a;实现***远程访问解决方案。 练习2&#xff1a;配置一个自定义的网络策略…

c++导出标准win32格式的dll

__declspec(dllexport) unsigned long long __stdcall 函数名(参数列表); 恭喜您&#xff0c;你导出来之后&#xff0c;对方无法调用 然后加入*.def文件 *.def文件内容&#xff1a; LIBRARY EXPORTS 函数名

沫沫金:收集Hibernate使用过程中的小技巧(不断更新)

[2012-12-12] *设置javabean中string字符串的数据库长度 Column(length1000) private String content; [2013-03-22 礼拜五] *保存日期yyyy-MM-dd格式 Temporal(TemporalType.DATE) private Date day; 转载于:https://blog.51cto.com/zl0828/1086585