eda技术课程设计Word文档下载推荐.docx
- 文档编号:6301668
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:20
- 大小:880.29KB
eda技术课程设计Word文档下载推荐.docx
《eda技术课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《eda技术课程设计Word文档下载推荐.docx(20页珍藏版)》请在冰点文库上搜索。
1.2硬件描述语言——VHDL
★VHDL的简介
VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为AI/IEEE的标准(IEEESTD1076-1987)。
1993年更进一步修订,变得更加完备,成为AI/IEEE的AI/IEEESTD1076-1993标准。
目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。
自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
★VHDL语言的特点
VHDL的程序结构特点是将一项工程设计,关于用VHDL和原理图输入进行CPLD/FPGA设计的粗略比较:
在设计中,如果采用原理图输入的设计方式是比较直观的。
你要设计的是什么,你就直接从库中调出来用就行了。
这样比较符合人们的习惯。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
应用VHDL进行工程设计的优点是多方面的。
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
2课程总体设计
2.1、课程设计要求
用16×
16点阵汉字显示模块,动态显示一些字符。
2.2、课程设计目的
掌握点阵LED显示驱动电路的设计原理,并能够在实际生活中正确应用;
学会在QuartusII软件环境中仿真;
锻炼自己独立解决问题的能力,学会有效获取有用信息。
2.3课程设计总体方案
本系统的LED点阵模块,共由16X16=256个LED发光二极管组成。
如何在该点阵模块上显示汉字是本文设计的关键技术。
本设计是采用一种32路动态分时描技术来实现的。
具体方法是,将4个8X8数组的显示模块组合成两个16行16列的扫描结构并将其串联(如图2.1所示)。
其行输入端与FPGA内的只读存储器ROM的16位数据输出端口相连;
32个列控制端与两个4-16译码器A,B的输出相连;
而译码器A,B的输入端和片选信号又与FPGA内的列扫描控制模块的输出端口scan4-scan0相连。
图2.3系统的结构框图
本系统选用的FPGA芯片是美国Altera公司的FLEX1OK系列的72个逻辑阵列块、EPF1OK10LC84-4。
该芯片具有57684个引脚,3个嵌人式阵列块,是一个高集成度的系统由FPGA中的扫描控制模块、只读存储器ROM和FPGA芯片。
FPGA外面的LED点阵显示模块、一个反相器和两个4-16译码器构成。
其中,DZI,DZ2,DZ3,和DZ4是4个8x8的LED点阵显示模块,由这四个模块组合起来构成了本系统16x16的LED点阵显示模块。
两个4-16译码器(74LS154)和一个反相器配合FPGA中的行扫描控制模块共同完成了16x16点阵显示模块的32行的扫描控制。
FPGA中的只读存储器ROM中保存了要显示的多幅图像的数据,并以8位的数据宽度输出到LED阵显示模块的列端,配合行扫描控制共同完成多幅图像的显示。
│
2.4汉字的存储
用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。
第一
步是获得数据并保存,即在存贮器中建立汉字数据库。
第二步是在扫描模块的控
制下,配合行扫描的次序正确地输出这些数据。
获得图像数据的步骤是,先将要
显示的每一幅图像画在一个如图2.4所示的被分成16X16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1"
,无笔划处填上“0"
,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以32X16的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。
以这种
方式将若干个汉字的数据贮存在存贮器内,就完成了图像数据库的建立工作。
图2.416X16LED点阵模块
然后,依次对多汉字抽取像素信息,并按序排队存放起来,便可得到一个待显示数据序列。
将这个序列存到ROM中进一步通过寻址的方法来控制该数据序列的释放过程,就可实现在LED发光二极管点阵上滚动显示多汉字信息的目的。
由图2.4可知,某一时刻能在显示数据序列中定位待显示数据的地址指针可用下式计算:
addr=n+m
2.4.1滚动显示多汉字信息的原理示意图
2.5汉字的显示
第二步工作的步骤是:
先在扫描模块的控制下,由地址线确定每次由ROM送出某一列的16个LED所要显示的汉字的控制字节数据,同时由扫描模块输出的5位扫描码经两个4-16译码器解码后决定相应的某一列可以被点亮,而另外31列都不能被点亮。
该状态持续约0.4毫秒后,就接着进行下一行的扫描。
当完成了一次犯行的扫描后,也就完成了一帧画面的显示。
重复上述过程不断修改ROM的地址区间的起始地址,转向下一幅画面的数据传送和显示。
如此进行,就可以在LED点阵模块上滚动显示ROM中存储的汉字。
3子模块的设计
近几年在数字系统设计领域出现了一种全新的设计技术—数字系统设计自动化(EDA,ElectricDesignAutomation)技术。
该技术借助计算机在图形、数据及语言处理方面的强大功能,利用计算机来辅助完成数字系统的设计,较原来传统数字系统设计技术有了突破性的发展。
它在设计人口方面能接受符合人们思维习惯的高级硬件描述语言(如VHDL)和原来人们己经习惯的逻辑图输人。
并通过EDA工具软件将其转换成能被可编程逻辑器件接受的数据,将此数据下载到支持该技术的可编程逻辑器件(如FPGA)上,使其成为一个具有设计要求功能的大规模集成电路芯片。
该技术具有系统设计效率高、集成度好、保密性强、易于修改、易于实现等优点,因此而成为当今数字系统设计的主流技术。
本文利用此技术设计一个LED点阵显示系统。
系统利用FPGA内部的物理资源,将只读存储器ROM和主要功能模块设计在FPGA内部。
充分显示了EDA技术设计的灵活性同时也大大提高了系统的集成度和稳定性。
3.1扫描控制模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYscIS
PORT(clk_scan,reset_n:
INSTD_LOGIC;
addr:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
scan:
OUTSTD_LOGIC_VECTOR(4DOWNTO0);
cntn:
outinteger;
flag_sca:
OUTSTD_LOGIC
);
ENDsc;
ARCHITECTUREARCOFscIS
signalCNT:
integerrange0to31;
signalflag_scan:
STD_LOGIC;
BEGIN
process(reset_n,clk_scan)------扫描信号的输出
if(reset_n='
0'
)then
cnt<
=31;
elsif(rising_edge(clk_scan))then
if(cnt=cnt'
high)then
=0;
else
=cnt+1;
endif;
high-1)then
flag_scan<
='
1'
;
endprocess;
cntn<
=cnt;
flag_sca<
=flag_scan;
process(reset_n,clk_scan,cnt)
Begin
if(rising_edge(clk_scan))then
casecntis
when0=>
scan<
="
00000"
when1=>
00001"
When2=>
00010"
when3=>
00011"
When4=>
when5=>
00101"
when6=>
00110"
when7=>
00111"
when8=>
01000"
when9=>
01001"
when10=>
01010"
when11=>
01011"
when12=>
01100"
when13=>
01101"
when14=>
01110"
when15=>
01111"
when16=>
10000"
when17=>
10001"
when18=>
10010"
When19=>
10011"
when20=>
10100"
when21=>
10101"
when22=>
10110"
when23=>
10111"
when24=>
11000"
when25=>
11001"
when26=>
11010"
when27=>
11011"
when28=>
11100"
when29=>
11101"
when30=>
11110"
when31=>
11111"
whenothers=>
ZZZZZ"
endcase;
endprocess;
endARC;
ENTITYfen2IS
PORT(reset_n,clk_scan,flag_scan:
n:
INIntegerrange0to7;
xx:
OUTInteger);
ENDfen2;
ARCHITECTUREBHVOFfen2IS
SIGNALX:
Integer;
BEGIN
Process(reset_n,clk_scan,flag_scan)-------x的控制进程
variablecntx:
Integerrange0to50;
begin
cntx:
x<
elseif(rising_edge(clk_scan))then
if(flag_scan='
if(cntx=n*8orcntx=cntx'
high)then-----通过n来控制cntx的计数范围
Else
=cntx+1;
Endif;
if(cntx=n*8)then------通过n来控制X的增加
if(x=x'
=x+1;
XX<
=X;
ENDBHV;
图3.1扫描控制模块仿真
3.2汉字滚动速度控制模块
process(reset_n,clk_scan,flag_scan)--x的控制进程
variablecntx:
integerrange0to50;
begin
if(reset_n='
cntx:
=0;
x<
elsif(rising_edge(clk_scan))then
if(flag_scan='
if(cntx=n×
8orcntx=cntx'
high)then--n由外部的按键控制,通过n来控制cntx的计数范围
cntx:
else
=cntx+1;
endif;
8)then--通过n来控制x的增加
if(x=x'
x<
else
=x+1;
endif;
endif;
endif;
endprocess;
3.3存储模块
ENTITYRMIS
PORT(ADDR:
INSTD_LOGIC_VECTOR(9DOWNTO0);
CLK:
DOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYRM;
ARCHITECTUREARTOFRMIS
PROCESS(CLK)
IF(CLK'
EVENTANDCLK='
)THEN
CASEADDRIS
WHEN"
0000000000"
=>
DOUT<
01011000"
0000000001"
00110010"
0000000010"
00100011"
0011010101"
11110110"
0011010110"
11110111"
0011010111"
0011100000"
11111010"
0011100001"
0011101011"
11111101"
0011101100"
0011111101"
11111111"
0011111110"
0100000000"
0100000010"
0100000011"
0100010001"
11111110"
0100010100"
0100111001"
11110000"
0101000101"
11101000"
WHENOTHERS=>
00000000"
ENDCASE;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
图3.3存储模块仿真
3.4多路选择器模块
ENTITYmux21IS
PORT(a,b,S:
Y:
OUTSTD_LOGIC);
ENDmux21;
ARCHITECTUREarOFmux21IS
PROCESS(a,b,S)
BEGIN
IFs='
THEN
y<
=a;
ELSE
Y<
=b;
ENDar
图3.4多路选择器模块仿真
3.5分频电路模块
USEIEEE.STD_LOGIC_1164.ALL
PORT(CLK:
Clkk:
OUTSTD_LOGIC);
ARCHITECTUREprosessOFfen2IS
process(Clk)------------------------计数模块
if(rising_edge(clk))then
if(cntx=480)then
cntx<
=0
=cntx+l;
process(cnt,clk)---------------------译码输出
if(cnt>
=cnt'
high/2)then
Clk_scan<
图3.5没有消除毛刺的仿真结果
图3.5.1消除毛刺的仿真结果
4结论
本设计是基于VHDL语言的点阵列LED显示控制器的设计。
本系统采用单个16x16LED点阵逐行下移显示汉字或数字,需显示汉字或数字的16X16点阵字模已经存放在字模存储器中。
显示控制器由现场可编辑逻辑门阵(FPGA)EPF10k10来实现。
根据系统性能分析可知,它使用方便,用处广泛。
在本次设计中因为用的大部分都是集成芯片,由于其集成性,所以对设计者和使用者没多大技术要求,采用的设计语言VHDL具有可移植性,所以这个集成模块能移植到多种芯片中。
当然,这样的设计也有它不好的一面,由于集成芯片自身的缺点和局限性,使其不能很灵活地完成多种功能的转换。
在以后的设计中,争取把这个问题解决掉。
以上点阵字符显示系统在开发软件quartusII上经仿真验证无误。
另外,由于器件含有丰富的可编程连线资源,当系统显示方式和显示字符个数变化时,只需要通过开发工具修改控制器的控制逻辑和连接关系,再将修改完成的程序通过下载电缆下载到器件即可,而电路板可以不做任何改动,可见,系统的维护和修改是极其方便和容易的。
当然,由于「PGA的驱动能力有限,当点阵LED显示亮度不够时,需要添加LED驱动电路以得到合适的LED显示亮度。
5参考文献
[1]大鹏.基于嵌入式系统的LED信息显示技术研究「J].现代电子技术,2006.8
[2]毕新熙,李娜,等.MAX7219在串行LED显示驱动器上的应用「J].科技信息:
学术版,2007.8
[3]谭文若.串行接口LED数码管及键盘管理器件ZLG7289A的原理与应用「Jl.
国外电子元器件,2004(4)
[4」周润景,图雅,张丽敏.基于QUARTUS11的FPGA/CPLD数字系统设计实例。
北京电子工业出版设,2007.8
[5]王振红,张常年.电子技术基础实验及综合设计.北京:
机械工业出版社,2007.3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eda 技术 课程设计