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

简介: VHDL编写8-3线优先编码器

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 IS
  PORT(a,b,c,d,e,f,g,h:IN BIT;        --定义八个输入端(由权低到权高):a,b,c,d,e,f,g,h
     st:IN BIT;                     --定义一个选通输入端(0时才正常工作):st
     out0,out1,out2:OUT BIT;    --定义三个输出端:out0,out1,out2
     yex:OUT BIT;           --定义一个扩展端:yex
     ys: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")THEN
    tmp_out<="11110";
  ELSIF(tmp_in(7)='0')THEN
    tmp_out<="00001";
  ELSIF(tmp_in(6)='0')THEN
    tmp_out<="00101";
  ELSIF(tmp_in(5)='0')THEN
    tmp_out<="01001";
  ELSIF(tmp_in(4)='0')THEN
    tmp_out<="01101"; 
  ELSIF(tmp_in(3)='0')THEN
    tmp_out<="10001";
  ELSIF(tmp_in(2)='0')THEN
    tmp_out<="10101";
  ELSIF(tmp_in(1)='0')THEN
    tmp_out<="11001";
  ELSIF(tmp_in(0)='0')THEN
    tmp_out<="11101";
  END IF;
ELSE
  tmp_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 IS
  PORT(a,b,c,d,e,f,g,h:IN STD_LOGIC;        --定义八个输入端(由权低到权高):a,b,c,d,e,f,g,h
     st:IN STD_LOGIC;                     --定义一个选通输入端(0时才正常工作):st
     out0,out1,out2:OUT STD_LOGIC;      --定义三个输出端:out0,out1,out2
     yex:OUT STD_LOGIC;           --定义一个扩展端:yex
     ys: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哦- ̗̀(๑ᵔ⌔ᵔ๑)

相关文章
|
搜索推荐 安全 Android开发
如何优化安卓应用的用户体验
【2月更文挑战第9天】在当今移动互联网时代,安卓应用已成为人们日常生活中不可或缺的一部分。然而,用户对应用的使用体验越来越苛刻,一个不好的应用体验很容易导致用户的流失。本文将介绍如何从多个方面优化安卓应用的用户体验。
|
存储 监控 数据挖掘
云MES:数字化转型的引擎,企业上云的强力推手
云MES系统与企业上云的紧密合作,使得企业能够更加灵活地应对市场变化,快速响应客户需求。无论是新产品的快速研发与上市,还是生产线的快速调整与优化,云MES系统都能提供强有力的支持,助力企业在激烈的市场竞争中占据先机。
916 10
云MES:数字化转型的引擎,企业上云的强力推手
|
10月前
|
人工智能 IDE Go
JetBrains GoLand 2025.1 发布 - 为 Go 开发者打造的完整 IDE
JetBrains GoLand 2025.1 (macOS, Linux, Windows) - 为 Go 开发者打造的完整 IDE
653 0
JetBrains GoLand 2025.1 发布 - 为 Go 开发者打造的完整 IDE
|
Python
阿里云百炼大模型生成贪吃蛇小游戏
阿里云百炼大模型生成的贪吃蛇小游戏增加了背景音乐功能。通过Pygame的`mixer`模块,实现背景音乐的加载和播放。关键步骤包括:1. 安装Pygame;2. 准备音乐文件;3. 修改代码以初始化混音器并加载音乐。游戏开始时自动播放背景音乐,支持无限循环。此外,还可以根据需要调整游戏速度、难度及添加更多音效。
312 13
阿里云百炼大模型生成贪吃蛇小游戏
|
机器学习/深度学习 人工智能 安全
并非只有AI-2025年工作技能报告
全球最大的在线学习平台Coursera发布《2025年工作技能报告》,报告基于500万企业学习者和7,000多家机构的数据分析,揭示了2025年全球劳动力所需的关键技能趋势。报告强调,随着GenAI的快速发展,相关技能的课程注册量同比增长了866%,显示出对AI能力的需求激增。
1135 9
|
弹性计算 数据中心
便宜香港服务器推荐,阿里云24元1个月,288元一年
便宜香港服务器推荐,阿里云24元1个月,288元一年,阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量
|
存储 消息中间件 Java
【分布式链路追踪技术】sleuth+zipkin
【分布式链路追踪技术】sleuth+zipkin
291 2
Flutter 进度条
Flutter 进度条,详细介绍 Flutter 提供了多种类型的进度条,可以用于展示应用程序中的长时间运行任务的进度。进度条可以是线性或圆形,可以显示确定进度或不确定进度,可以按照应用程序的主题进行自定义。
389 0
【STM32】使用单片机DAC产生噪声群
【STM32】使用单片机DAC产生噪声群
351 0
|
弹性计算 运维 安全
阿里云轻量应用服务器是什么?轻量应用服务器产品知识介绍
轻量应用服务器是面向单机应用场景的新一代计算服务,提供精品应用一键部署,支持一站式的域名、网站、安全、运维、应用管理等服务,极大优化搭建简单应用的体验,降低了入门级用户使用云计算产品的门槛。本文为大家介绍阿里云轻量应用服务器的产品优势、应用场景、使用须知、地域与网络连通性、与云服务器ECS的区别。
阿里云轻量应用服务器是什么?轻量应用服务器产品知识介绍