【FPGA】VHDL:八段码到8421BCD码转换电路

2024-02-14 02:04

本文主要是介绍【FPGA】VHDL:八段码到8421BCD码转换电路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

EDA设计基础练习题 :

实验要求如下:

代码

八段码到8421BCD码转换电路

8421BCD码到八段码转换电路

八段码到8421BCD~运行结果展示

8421BCD转八段码~运行结果展示

特别注意


软件:Quartus II 13.0 (64-bit)

语言:VHDL


EDA设计基础练习题

4、八段码到8421BCD码转换电路(以共阳极数码管为例)。

58421BCD码到八段码转换电路(以共阴极数码管为例)。


实验要求如下:

1、程序设计:编写完整实验程序;注明端口名称及意义;

2、仿真验证:编辑程序、编译、仿真;提交全部程序、文件及工程建立结果界面、编译成功界面、功能仿真结果波形图;注意仿真图需能够看出来工作过程及实现的功能

编码对象

8421BCD

共阳极八段码

共阴极八段码

Q8Q4Q2Q1

dpgfedcba

dpgfedcba

0

0000

11000000

00111111

1

0001

11111001

00000110

2

0010

10100100

01011011

3

0011

10110000

01001111

4

0100

10011001

01100110

5

0101

10010010

01101101

6

0110

10000010

01111101

7

0111

11111000

00000111

8

1000

10000000

01111111

9

1001

10010000

01101111

其他情况

1111

10111111

01000000


代码

八段码到8421BCD码转换电路

CASE-WHEN语句编写码转换电路比较方便,对比C语言中switch-case语句

-- 编写程序4  八段码到8421BCD码转换电路(以共阳极数码管为例)
-- 码转换 -case语句library IEEE;
USE IEEE.STD_logic_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_logic_unsigned.ALL;-- 实体声明
ENTITY ShiYan7 IS PORT( input_Yang	 : IN		STD_logic_vector(7 downto 0); output_8421BCD :out		STD_logic_vector(3 downto 0));	 
END ShiYan7;--结构体说明
ARCHITECTURE behave OF ShiYan7 ISBEGINPROCESS (input_Yang)BEGIN--八段码到8421BCD码转换电路(以共阳极数码管为例)CASE input_Yang ISWHEN "11000000"  => output_8421BCD <= "0000";WHEN "11111001"  => output_8421BCD <= "0001";WHEN "10100100"  => output_8421BCD <= "0010";WHEN "10110000"  => output_8421BCD <= "0011";WHEN "10011001"  => output_8421BCD <= "0100";WHEN "10010010"  => output_8421BCD <= "0101";WHEN "10000010"  => output_8421BCD <= "0110";WHEN "11111000"  => output_8421BCD <= "0111";WHEN "10000000"  => output_8421BCD <= "1000";WHEN "10010000"  => output_8421BCD <= "1001";when others => output_8421BCD <= "1111";END CASE;END PROCESS;
END behave; 

8421BCD码到八段码转换电路

-- 编写程序 5、8421BCD码到八段码转换电路(以共阴极数码管为例)。
-- 码转换 -case语句library IEEE;
USE IEEE.STD_logic_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_logic_unsigned.ALL;-- 实体声明
ENTITY ShiYan7 IS PORT( Input_8421BCD : IN		STD_logic_vector(3 downto 0); Output_Yin	 : OUT		STD_logic_vector(7 downto 0));	 
END ShiYan7;--结构体说明
ARCHITECTURE behave OF ShiYan7 ISBEGINPROCESS (Input_8421BCD)BEGIN--5、8421BCD码到八段码转换电路(以共阴极数码管为例)CASE Input_8421BCD ISWHEN "0000" => Output_Yin <= "00111111";WHEN "0001" => Output_Yin <= "00000110";WHEN "0010" => Output_Yin <= "01011011";WHEN "0011" => Output_Yin <= "01001111";WHEN "0100" => Output_Yin <= "01100110";  WHEN "0101" => Output_Yin <= "01101101";WHEN "0110" => Output_Yin <= "01111101";WHEN "0111" => Output_Yin <= "00000111";WHEN "1000" => Output_Yin <= "01111111";WHEN "1001" => Output_Yin <= "01101111";when others => Output_Yin <= "01000000";END CASE;END PROCESS;
END behave; 

编译通过

八段码到8421BCD~运行结果展示

8421BCD转八段码~运行结果展示

这个运行结果可以自行实验


特别注意

工程名要和实体名相同


IF-ELSE语句写法

IF 条件句 THEN顺序语句;
END IF;
第一种if语句用于门闩控制,就只有一个条件句,是最简单的if语句
----------IF 条件句 THEN顺序语句;
ELSE 顺序语句;
END IF;
第二种if语句多用于二选一电路,也很简单啦
----------IF 条件句 THEN顺序语句;
ELSLF 条件句 THEN 顺序语句;.....(这里可以有很多elsif语句)
ELSE(最后一句是ELSE,要注意)顺序语句;
END IF;
第三种多用于多选择的控制,这里一定一定要注意是"**ELSIF**"而不是ELSEIF
----------IF 条件句 THENIF 条件句 THEN顺序语句;END IF;
END IF;
第四种是if语句嵌套使用,多用于多个情况组合判断,例如clk电路
------------------------IF 条件句 THEN顺序语句;
END IF;
IF 条件句 THEN顺序语句;
END IF;
第五种是if语句并行执行

CASE-WHEN语句写法

CASE 多值表达式 ISWHEN 选择值 => 被赋值变量 <=赋值变量;WHEN 选择值 => 被赋值变量 <=赋值变量;WHEN 选择值 => 被赋值变量 <=赋值变量;...WHEN OTHERS =>被赋值变量 <=赋值变量;
END CASE

本代码纯自己手敲,拒绝白嫖!

参考文章:http://t.csdnimg.cn/h4KK1

这篇关于【FPGA】VHDL:八段码到8421BCD码转换电路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/707228

相关文章

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

数据流与Bitmap之间相互转换

把获得的数据流转换成一副图片(Bitmap) 其原理就是把获得倒的数据流序列化到内存中,然后经过加工,在把数据从内存中反序列化出来就行了。 难点就是在如何实现加工。因为Bitmap有一个专有的格式,我们常称这个格式为数据头。加工的过程就是要把这个数据头与我们之前获得的数据流合并起来。(也就是要把这个头加入到我们之前获得的数据流的前面)      那么这个头是

FPGA编译与部署方法全方位介绍

FPGA编译与部署是FPGA开发中的核心环节,涉及从代码编写、调试到将设计部署到FPGA硬件的全过程。这个流程需要经过创建项目、编写FPGA VI、模拟调试、编译生成比特流文件,最后将设计部署到硬件上运行。编译的特点在于并行执行能力、定制化硬件实现以及复杂的时钟管理。通过LabVIEW的FPGA模块和NI硬件,可以快速完成开发和部署,尤其适用于复杂控制与高性能数据处理系统。 1. FPG

高斯平面直角坐标讲解,以及地理坐标转换高斯平面直角坐标

高斯平面直角坐标系(Gauss-Krüger 坐标系)是基于 高斯-克吕格投影 的一种常见的平面坐标系统,主要用于地理信息系统 (GIS)、测绘和工程等领域。该坐标系将地球表面的经纬度(地理坐标)通过一种投影方式转换为平面直角坐标,以便在二维平面中进行距离、面积和角度的计算。 一 投影原理 高斯平面直角坐标系使用的是 高斯-克吕格投影(Gauss-Krüger Projection),这是 横

FPGA开发:条件语句 × 循环语句

条件语句 if_else语句 if_else语句,用来判断是否满足所给定的条件,根据判断的结果(真或假)决定执行给出的两种操作之一。 if(表达式)语句; 例如: if(a>b) out1=int1; if(表达式)         语句1; else         语句2; 例如: if(a>b)out1=int1;elseout1=int2; if(表达式1) 语句1; els

VC环境下整型转换为字符串型(2)

在串口下位机的发送中,可能会用到需要发送数字,显示为字符串型的 和上一篇文字《串口中字符串转换为整型》一正一反,知识点学习会了: #include<iostream.h> #include <stdio.h> #include <string.h>   void inttostr(int m,unsigned char * str) { int length=0;   int tmp,te

时间日期与时间戳转换(Linux C)

本文主要学习三个知识点,第一是UTC时间、GMT时间的概念;第二是在Unix环境下UTC时间与时间戳的转换;第三是在C语言中如何修改时区。 本文参考了《UNP》以及 http://blog.csdn.net/foxir/article/details/43916601 http://blog.csdn.net/ljafl9988/article/details/16847935 一、

FPGA开发:模块 × 实例化

模块的结构 对于C语言,其基本单元为函数。与此类似,Verilog的基本设计单元称之为"模块"(block)。对于整个项目的设计思想就是模块套模块。 一个模块由两个部分组成:一部分描述接口,一部分描述逻辑功能。 每个Verilog模块包含4个部分:端口定义、IO说明、内部信号声明、功能定义。且位于module和endmodule之间,如下: module block(a,b,c);inpu