VHDL编写8-3线优先编码器

先简单介绍一下什么是"8-3线优先编码器":
8-3线优先编码器由9个输入端和五个输出端组成,允许同时在几个输入端输入信号。当有多个输入信号传入时,只对其中优先权最高的一个输入信号进行编码(输出的二进制代码以反码形式表示)
如图所示:


因此,我们可以进行实体定义:
定义八个输入端(由权低到权高):a,b,c,d,e,f,g,h
定义一个选通输入端(0时才正常工作):st
定义三个输出端:out0,out1,out2
定义一个扩展端:yex
定义一个无编码指示器:ys

下面我给出两种语句来实现它:
1.IF…ELSE语句

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY homework3 ISPORT(a,b,c,d,e,f,g,h:IN BIT;        --定义八个输入端(由权低到权高):a,b,c,d,e,f,g,hst:IN BIT;                     --定义一个选通输入端(0时才正常工作):stout0,out1,out2:OUT BIT;     --定义三个输出端:out0,out1,out2yex:OUT BIT;                     --定义一个扩展端:yexys:OUT BIT);                    --定义一个无编码指示器:ys
END homework3;
ARCHITECTURE yejiayu OF homework3 IS
SIGNAL tmp_in:BIT_VECTOR(7 DOWNTO 0);   --信号数组
SIGNAL tmp_out:BIT_VECTOR(4 DOWNTO 0);
BEGIN
tmp_in <= h&g&f&e&d&c&b&a;              --用&连接8个输入值并赋值给tmp_in
PROCESS(st,tmp_in)
BEGIN
IF(st='0')THEN                          --IF…ELSE语句IF(tmp_in="11111111")THENtmp_out<="11110";ELSIF(tmp_in(7)='0')THENtmp_out<="00001";ELSIF(tmp_in(6)='0')THENtmp_out<="00101";ELSIF(tmp_in(5)='0')THENtmp_out<="01001";ELSIF(tmp_in(4)='0')THENtmp_out<="01101";   ELSIF(tmp_in(3)='0')THENtmp_out<="10001";ELSIF(tmp_in(2)='0')THENtmp_out<="10101";ELSIF(tmp_in(1)='0')THENtmp_out<="11001";ELSIF(tmp_in(0)='0')THENtmp_out<="11101";END IF;
ELSEtmp_out<="11111";
END IF;
out2<=tmp_out(4);out1<=tmp_out(3);out0<=tmp_out(2);yex<=tmp_out(1);ys<=tmp_out(0);
END PROCESS;
END yejiayu;

2.条件信号赋值语句

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY homework4 ISPORT(a,b,c,d,e,f,g,h:IN STD_LOGIC;        --定义八个输入端(由权低到权高):a,b,c,d,e,f,g,hst:IN STD_LOGIC;                     --定义一个选通输入端(0时才正常工作):stout0,out1,out2:OUT STD_LOGIC;         --定义三个输出端:out0,out1,out2yex:OUT STD_LOGIC;                   --定义一个扩展端:yexys:OUT STD_LOGIC);                      --定义一个无编码指示器:ys
END homework4;
ARCHITECTURE yejiayu OF homework4 IS
SIGNAL tmp_in:STD_LOGIC_VECTOR(7 DOWNTO 0);   --信号数组
SIGNAL tmp_out:STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
tmp_in <= h&g&f&e&d&c&b&a;                    --用&连接8个输入值并赋值给tmp_in
tmp_out <= "11110" WHEN (st='0' AND tmp_in="11111111") ELSE"00001" WHEN (st='0' AND tmp_in(7)='0') ELSE"00101" WHEN (st='0' AND tmp_in(6)='0') ELSE"01001" WHEN (st='0' AND tmp_in(5)='0') ELSE"01101" WHEN (st='0' AND tmp_in(4)='0') ELSE"10001" WHEN (st='0' AND tmp_in(3)='0') ELSE"10101" WHEN (st='0' AND tmp_in(2)='0') ELSE"11001" WHEN (st='0' AND tmp_in(1)='0') ELSE"11101" WHEN (st='0' AND tmp_in(0)='0') ELSE"11111" WHEN (st='1');out2<=tmp_out(4);out1<=tmp_out(3);out0<=tmp_out(2);yex<=tmp_out(1);ys<=tmp_out(0);END yejiayu;

保存后编译仿真,得到波形图:

在第二个方法中,要去掉PROCESS哦- ̗̀(๑ᵔ⌔ᵔ๑)

VHDL编写8-3线优先编码器相关推荐

  1. FPGA设计编程(二) 8-3线优先编码器与3-8线译码器

    目录 [实验要求] [实验软件工具] [实验一]设计一个8-3线优先编码器(74LS148) 1. 实验内容与原理说明 2. 实验模块程序代码和激励代码 (1)设计模块代码 (2)激励模块代码 3. ...

  2. FPGA VHDL文本编辑器设计8-3优先编码器并构成16-4优先编码器

    题目要求: 在文本编辑器中使用VHDL语言设计一个优先8-3编码器.在另一个新实体中将其定义成一个元件,通过元件例化的方式设计一个16-4优先编码器.文件命名为***164.vhd,器件设定为EP3C ...

  3. CD4532 8-3线优先编码器以及应用

    CD4532 8-3线优先编码器以及应用 目标 一片CD4532构成8-3线编码器 两片CD4532串行构成16-4线译码器 一.一片CD45232 设计思路 采用逻辑电路的行为级建模,参考CD453 ...

  4. 两片8-3优先编码器转化为16-4线优先编码器真值表--python实现

    假设有0号和1号编码器 0号输入端从I00'到I07' 1号编码器输入端I11'到I17' 输出为Z3'~Z0' 0号编码器控制1号编码器 当0号编码器无输入信号时,1号编码器开始工作 实现代码: # ...

  5. 编码器 | 如何用两片8线-3线优先编码器扩展成16线-4线——数电第四章学习

    编码器 普通编码器 优先编码器 扩展 为了区分不同的事务,将其中的每个事物用一个二值代码表示,编码器的功能就是将输入的每一个高低电平编成一个对应的二进制代码. 普通编码器 意思即是可以通过看Y1Y2Y ...

  6. 用一片CD4532构成8-3线编码器与用两片CD4532构成16线-4线优先编码器

    VerilogHDL程序设计与仿真作业1: --用一片CD4532构成8-3线编码器与用两片CD4532构成16线-4线优先编码器 文章目录 VerilogHDL程序设计与仿真作业1: --用一片CD ...

  7. (146)Verilog编程:8线-3线优先编码器

    (146)Verilog编程:8线-3线优先编码器 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog编程:8线-3线优先编码器: 5)结束语. 1.1.2 ...

  8. 8线-3线优先编码器

    1.优先编码器 1.1定义 为了防止多条线信号同时有效,规定只对序号最高的有效信号线进行编码,相当于该线的优先级别最高,称为优先编码器. 2.例子 真值表如下: 设计代码: module encode ...

  9. (数电实验报告)用Verilog–HDL语言设计一个8线3线优先编码器

    `module encoder8_3(S,I7,I6,I5,I4,I3,I2,I1,I0,Y2,Y1,Y0,YS,YEX); input S,I7,I6,I5,I4,I3,I2,I1,I0; outp ...

最新文章

  1. Opencv实战 | 用摄像头自动化跟踪特定颜色物体
  2. Nature-2012-拟南芥根系微生物组的结构
  3. 中断技术在计算机系统中的应用,中斷在操作系统中的应用.doc
  4. 笔记——数据可视化02
  5. HDU 4292 Food (成都赛区网络赛第五题,拆点网络流)
  6. Mahout快速入门教程
  7. python做一个单项选择题系统_(完整版)python选择题word打印版
  8. 薪资/薪水/金额的数据类型
  9. I/O复用之 EPOLLONESHOT 事件
  10. java敏感异常是什么_java中的异常是什么?
  11. 盘点20款主流应用FPS,最Skr帧率测试方法都在这里!
  12. 批量读取word docx文件指定表格内容,保存在excel文件中
  13. 全流程东方时尚C1考试经历
  14. SKlearn - ValueError: Unknown label type: 'continuous'
  15. vue使用高德地图小demo(标记点,画线,3D,叠加图片图层)
  16. 3d建模电脑配置要求
  17. PWM调光线性恒流LED恒流芯片X10S
  18. 华为FPGA设计设计规范
  19. 如何将Scratch作品转换成HTML或者应用程序
  20. 编译原理期末复习—第一章概论

热门文章

  1. 热血传奇 祖玛阁路径搜索
  2. Python编程拾遗
  3. java中setattr功能_Java Controller.setAttr方法代码示例
  4. 愚人节破解Tracealyzer 4.2.12
  5. 系统 win 10 专业版 下载地址
  6. springboot使用yml文件如何多环境(dev、test、prod)配置
  7. 海龙灯具城附近的计算机学校在哪里,海龙灯饰城
  8. 接口测试+自动化接口测试详解
  9. tomcat修改tomcat-users.xml文件,服务器重启后又自动还原
  10. 【思维导图】统计学知识大梳理