eda技术课程设计.docx
- 文档编号:3880243
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:20
- 大小:880.29KB
eda技术课程设计.docx
《eda技术课程设计.docx》由会员分享,可在线阅读,更多相关《eda技术课程设计.docx(20页珍藏版)》请在冰点文库上搜索。
eda技术课程设计
兰州交通大学
EDA技术课程设计
学院:
专业:
班级:
学生姓名:
学号:
指导教师:
LED点阵显示控制器
16×16点阵汉字显示设计
绪论
LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏慕。
当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,
在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防
军事等许多领域中得到了广泛应用。
因此点阵式显示器件的研制、生产也的到了
迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。
目前,点阵式
显示器件具体包括LED显示模块和LCD显示模块等,现在发展的LCD比较先进,
LCD的优点较为明显,他体积小,容易控制,功能强,价格适宜,能够适应显示
器的发展方向,因而在通信、家电、大屏幕投影等领域得到了越来越广泛的应用;
随着社会经济的迅猛发展,工业生产逐渐实现了自动化,其中,设各的工作状态
和生产过程状态的显示与监控起到了非常重耍的作用,对于那些需要显示的信息
量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小
屏幕LED点阵显示器是比较经济适用的,他可以显示字符、数字、汉字和简单图
形,可以根据需要使用不同字号、字型,显示亮度较高,并且对环境条件要求比
较低。
LED显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和
颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的
目的。
1EDA、VHDL简介
1.1EDA技术
EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
目前EDA主要辅助进行三个方面的设计工作:
IC设计、电子电路设计和PCB设计。
没有EDA技术的支持,想要完成超大规模集成电路的设计制造是不可想象的;反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求。
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)------扫描信号的输出
BEGIN
if(reset_n='0')then
cnt<=31;
elsif(rising_edge(clk_scan))then
if(cnt=cnt'high)then
cnt<=0;
else
cnt<=cnt+1;
endif;
if(cnt=cnt'high-1)then
flag_scan<='1';
else
flag_scan<='0';
endif;
endif;
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=>scan<="00001";
When2=>scan<="00010";
when3=>scan<="00011";
When4=>scan<="00000";
when5=>scan<="00101";
when6=>scan<="00110";
when7=>scan<="00111";
when8=>scan<="01000";
when9=>scan<="01001";
when10=>scan<="01010";
when11=>scan<="01011";
when12=>scan<="01100";
when13=>scan<="01101";
when14=>scan<="01110";
when15=>scan<="01111";
when16=>scan<="10000";
when17=>scan<="10001";
when18=>scan<="10010";
When19=>scan<="10011";
when20=>scan<="10100";
when21=>scan<="10101";
when22=>scan<="10110";
when23=>scan<="10111";
when24=>scan<="11000";
when25=>scan<="11001";
when26=>scan<="11010";
when27=>scan<="11011";
when28=>scan<="11100";
when29=>scan<="11101";
when30=>scan<="11110";
when31=>scan<="11111";
whenothers=>scan<="ZZZZZ";
endcase;
endif;
endprocess;
endARC;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfen2IS
PORT(reset_n,clk_scan,flag_scan:
INSTD_LOGIC;
n:
INIntegerrange0to7;
xx:
OUTInteger);
ENDfen2;
ARCHITECTUREBHVOFfen2IS
SIGNALX:
Integer;
BEGIN
Process(reset_n,clk_scan,flag_scan)-------x的控制进程
variablecntx:
Integerrange0to50;
begin
if(reset_n='0')then
cntx:
=0;
x<=0;
elseif(rising_edge(clk_scan))then
if(flag_scan='1')then
if(cntx=n*8orcntx=cntx'high)then-----通过n来控制cntx的计数范围
cntx:
=0;
Else
cntx:
=cntx+1;
Endif;
if(cntx=n*8)then------通过n来控制X的增加
if(x=x'high)then
x<=0;
else
x<=x+1;
Endif;
endif;
endif;
endif;
endif;
endprocess;
XX<=X;
ENDBHV;
图3.1扫描控制模块仿真
3.2汉字滚动速度控制模块
process(reset_n,clk_scan,flag_scan)--x的控制进程
variablecntx:
integerrange0to50;
begin
if(reset_n='0')then
cntx:
=0;
x<=0;
elsif(rising_edge(clk_scan))then
if(flag_scan='1')then
if(cntx=n×8orcntx=cntx'high)then--n由外部的按键控制,通过n来控制cntx的计数范围
cntx:
=0;
else
cntx:
=cntx+1;
endif;
if(cntx=n×8)then--通过n来控制x的增加
if(x=x'high)then
x<=0;
else
x<=x+1;
endif;
endif;
endif;
endif;
endprocess;
3.3存储模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYRMIS
PORT(ADDR:
INSTD_LOGIC_VECTOR(9DOWNTO0);
CLK:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYRM;
ARCHITECTUREARTOFRMIS
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
CASEADDRIS
WHEN"0000000000"=>DOUT<="01011000";
WHEN"0000000001"=>DOUT<="00110010";
WHEN"0000000010"=>DOUT<="00100011";
WHEN"0011010101"=>DOUT<="11110110";
WHEN"0011010110"=>DOUT<="11110111";
WHEN"0011010111"=>DOUT<="11110111";
WHEN"0011100000"=>DOUT<="11111010";
WHEN"0011100001"=>DOUT<="11111010";
WHEN"0011101011"=>DOUT<="11111101";
WHEN"0011101100"=>DOUT<="11111101";
WHEN"0011111101"=>DOUT<="11111111";
WHEN"0011111110"=>DOUT<="11111111";
WHEN"0100000000"=>DOUT<="11111111";
WHEN"0100000010"=>DOUT<="11111111";
WHEN"0100000011"=>DOUT<="11111111";
WHEN"0100010001"=>DOUT<="11111110";
WHEN"0100010100"=>DOUT<="11111101";
WHEN"0100111001"=>DOUT<="11110000";
WHEN"0101000101"=>DOUT<="11101000";
WHENOTHERS=>DOUT<="00000000";
ENDCASE;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
图3.3存储模块仿真
3.4多路选择器模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmux21IS
PORT(a,b,S:
INSTD_LOGIC;
Y:
OUTSTD_LOGIC);
ENDmux21;
ARCHITECTUREarOFmux21IS
BEGIN
PROCESS(a,b,S)
BEGIN
IFs='0'THEN
y<=a;
ELSE
Y<=b;
ENDIF;
ENDPROCESS;
ENDar
图3.4多路选择器模块仿真
3.5分频电路模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL
ENTITYfen2IS
PORT(CLK:
INSTD_LOGIC;
Clkk:
OUTSTD_LOGIC);
ENDfen2;
ARCHITECTUREprosessOFfen2IS
BEGIN
process(Clk)------------------------计数模块
begin
if(rising_edge(clk))then
if(cntx=480)then
cntx<=0
else
cntx<=cntx+l;
endif;
endif;
endprocess;
process(cnt,clk)---------------------译码输出
begin
if(rising_edge(clk))then
if(cnt>=cnt'high/2)then
Clk_scan<='1';
else
Clk_scan<='0';
endif;
endif;
endprocess;
图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 技术 课程设计