基于vhdl语言的二进制转十进制并用数码管显示的设计Word下载.docx
《基于vhdl语言的二进制转十进制并用数码管显示的设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于vhdl语言的二进制转十进制并用数码管显示的设计Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
2总体设计方案………………………………………………………………2
2.1输入引脚数目的计算……………………………………………………3
2.2二进制转为十进制部分程序设计………………………………………3
2.3数码管显示部分程序设计………………………………………………4
3仿真显示……………………………………………………………………5
3.1显示3仿真图……………………………………………………………5
3.2显示96的仿真图…………………………………………………………5
4心得体会……………………………………………………………………6
参考文献………………………………………………………………………6
附录1…………………………………………………………………………7
摘要
随着当今社会电子技术的快速发展,单凭借硬件已不再能满足广大人民的需求,这时候软件就显示除了他们突出的优点。
与其他编程语言相比,VHDL语言以其超强的硬件描述能力,良好的可读性和可移植性,以及其良好的用户自定义性受到了广大用户的青睐。
VHDL语言在最近几年的发展及其迅猛,由此可以看出其用途已经变的越来越广泛。
一个VHDL程序由5个部分组成,包括实体(ENTITY)、结构体(architecture)、配置(coxnfiguration)、包(package)和库(library)。
实体和结构体两大部分组成程序设计的最基本单元。
图2.2表示的是一个VHDL程序的基本组成。
配置是用来从库中选择所需要的单元来组成该系统设计的不同规格的不同版本,VHDL和VerilogHDL已成为IEEE的标准语言,使用IEEE提供的版本。
包是存放每个设计模块都能共享的设计类型、常数和子程序的集合体。
库是用来存放已编译的实体、结构体、包和配置。
在设计中可以使用ASIC芯片制造商提供的库,也可以使用由用户生成的IP库。
今天我所要设计的是基于VHDL语言的8位数码管显示电路,其要实现的功能是把输入的二进制数转换为对应的十进制数,并通过数码管显示出来。
其过程大致可以分为通过程序将输入的二进制数先转换为对应的十进制数,然后再把对应的十进制数与数码管的管脚对应起来,使其显示在数码管上。
关键词:
二进制转为十进制数码管显示共阳数码管
1引言
VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被美国国防部和IEEE确认为标准硬件描述语言。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。
归纳起来,VHDL语言主要具有以下优点:
[1]
(1)VHDL语言功能强大,设计方式多样
VHDL语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。
同时,它还具有多层次的电路设计描述功能。
此外,VHDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。
VHDL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;
既支持模块化设计方法,也支持层次化设计方法。
(2)VHDL语言具有强大的硬件描述能力
VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;
描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。
同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。
VHDL语言的强大描述能力还体现在它具有丰富的数据类型。
VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。
(3)VHDL语言具有很强的移植能力
VHDL语言很强的移植能力主要体现在:
对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。
(4)VHDL语言的设计描述与器件无关
采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。
这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。
当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。
(5)VHDL语言程序易于共享和复用
VHDL语言采用基于库的设计方法。
在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。
这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。
本次我所要设计的基于VHDL语言的八位数码管显示将充分体现它的部分优点。
2总体设计方案
2.1输入引脚数目的计算
因为题目要求数码管要能显示最大的八位十进制二进制数,所以对应的二进制表示的十进制数首先要大于99999999,即2的所有n次幂之和应该大于99999999,数码管才能显示出最大的八位十进制数,所以计算可得n的值最小为27,所以输入二进制数的引脚应该设为27个,其二进制数输入引脚图如图1所示
图1二进制数输入引脚图
2.2二进制转为十进制部分程序设计
二进制转为十进制的部分程序如下:
architectureoneoflookis
signalai,bi,ci,ki,ei,fi,gi,hi:
integerrange0to9;
signaldi:
integerrange0to99999999;
begin
di<
=conv_integer(d);
2.3数码管显示部分程序设计
2.3.1程序中数码管的选择及显示的设置
在本设计中按照我的程序硬件所选用的应该为共阴极数码管,且当某一位数码管不需要显示数据时,统一设定其显示0,例如需要显示1时,八个数码管的显示为00000001。
2.3.2数码管显示部分部分程序如下:
…………
variablea,b,c,k,e,f,g,h:
a:
=direm10;
b:
=(di-a)rem100;
c:
=(di-a-10*b)rem1000;
k:
=(di-a-10*b-c*100)rem10000;
e:
=(di-a-10*b-c*100)rem100000;
f:
=(di-a-10*b-c*100-1000*e)rem1000000;
g:
=(di-a-10*b-c*100-1000*e-10000*f)rem10000000;
h:
=(di-a-10*b-c*100-1000*e-10000*f-100000*g)/10000000;
ai<
=a;
bi<
=b;
ci<
=c;
ki<
=k;
ei<
=e;
fi<
=f;
gi<
=g;
hi<
=h;
endprocess;
process(ai)
caseaiis
when0=>
led7s1(6downto0)<
="
1000000"
;
when1=>
1111001"
when2=>
0100100"
when3=>
0110000"
when4=>
0011001"
when5=>
0010010"
when6=>
0000010"
when7=>
1111000"
when8=>
0000000"
when9=>
0010000"
whenothers=>
XXXXXXX"
endcase;
2.3.3数码管显示部分引脚图
数码管显示部分部分引脚图如图2所示
图2数码管显示部分部分引脚图
2.2.4总体设计程序见附表1
3仿真显示
3.1显示“000000003”仿真图
显示数字“3”的仿真图如图3所示,因为根据程序所需数码管为共阳极数码管,所以数码管对应的“e”,“f”段应该为高电平,在本次设计中,即数码管的第5,6段为高电平,为了便于观察,仿真的各项周期均取10ns。
图3显示“3”电路
3.2显示“96”部分仿真图,如图4所示
图4显示“96”仿真图
4心得体会
通过这次的课程设计让我对VHDL语言以及电路设计的理论有了更加深入的了解,课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,这次课程设计虽然很累,但我学到了不少东西,对软件的设计过程和方法有了更深入的了解。
在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。
在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。
这次课程设计顺利完成了,在设计中遇到了很多问题,最后都是经过查阅相关的资料和在同学的帮助下,终于游逆而解。
同时,在我学得到很多实用的知识,同时,对给过我帮助的所有同学再次表示忠心的感谢!
参考文献
【1】黄继业.EDA技术使用教程[M].北京:
科学出版社,2010
【2】王云亮.电力电子技术[M].北京:
电子工业出版社,2009
【3】康光华.电子技术基础[M].北京:
高等教育出版社,2006
附录1
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitylookis
port(d:
instd_logic_vector(26downto0);
clk3:
in