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哦- ̗̀(๑ᵔ⌔ᵔ๑)

相关文章
|
存储 机器学习/深度学习 人工智能
【前沿技术RPA】 一文了解UiPath 机器人企业框架 (REFramework)
本博文主要介绍 UiPath 机器人企业框架 (REFramework)。我们将讨论事务处理、调度程序和执行程序的概念,还会简要介绍 REFramework 可以完成的任务。
【前沿技术RPA】 一文了解UiPath 机器人企业框架 (REFramework)
|
Java Maven Windows
Windows 配置Maven的本地仓库和阿里云远程中央仓库
Windows 配置Maven的本地仓库和阿里云远程中央仓库
3610 1
Windows 配置Maven的本地仓库和阿里云远程中央仓库
|
6月前
|
人工智能 安全 API
Hermes Agent 部署踩坑无数?阿里云一站式落地教程,全程10分钟
继OpenClaw爆火后,Nous Research推出的Hermes Agent成为开源Agent新顶流:自进化闭环学习、跨会话持久记忆、支持Telegram/WhatsApp/钉钉等15+平台,开箱即用。
936 15
|
人工智能 IDE Go
JetBrains GoLand 2025.1 发布 - 为 Go 开发者打造的完整 IDE
JetBrains GoLand 2025.1 (macOS, Linux, Windows) - 为 Go 开发者打造的完整 IDE
1087 0
JetBrains GoLand 2025.1 发布 - 为 Go 开发者打造的完整 IDE
|
机器学习/深度学习 人工智能 安全
并非只有AI-2025年工作技能报告
全球最大的在线学习平台Coursera发布《2025年工作技能报告》,报告基于500万企业学习者和7,000多家机构的数据分析,揭示了2025年全球劳动力所需的关键技能趋势。报告强调,随着GenAI的快速发展,相关技能的课程注册量同比增长了866%,显示出对AI能力的需求激增。
1604 9
|
人工智能 开发者 芯片
【51单片机】单片机开发者的福音: 让AI看电路图帮你编写程序(使用ChatGPT 中训练好的单片机工程师模型)
使用AI大语言模型编写 单片机程序. 使用的是 OpenAI公司发布的 ChatGPT .在ChatGPT上有别人训练好的 单片机工程师 with Keil uVision 5 - C Code Explainer模型, 可以上传电路图改模型可以通过这个用户所给的电路图进行编程.
6527 0
【51单片机】单片机开发者的福音: 让AI看电路图帮你编写程序(使用ChatGPT 中训练好的单片机工程师模型)
|
人工智能 自然语言处理
使用Kimi+Markmap总结文件内容生成思维导图原创
一份文件内容太长,完整阅读下来太费时间,但如果使用AI进行内容提炼,再总结成思维导图,方便快速看到这份文件的核心内容和主题结构,就会极大地节约时间,目前就可以使用Kimi+Markmap这两个工具,帮我们把ppt、word、pdf等文件内容快速总结成思维导图。
3300 8
使用Kimi+Markmap总结文件内容生成思维导图原创
|
弹性计算 负载均衡 网络协议
LVS (Linux Virtual server)集群介绍
LVS (Linux Virtual server)集群介绍
|
芯片 异构计算
FPGA设计8-3线优先编码器与3-8线译码器
本文主要介绍FPGA设计8-3线优先编码器与3-8线译码器
3004 0
FPGA设计8-3线优先编码器与3-8线译码器
|
算法
数据包络分析(DEA)——BCC模型
数据包络分析(DEA)——BCC模型
3603 0