88点阵显示电路课程报告.docx

上传人:b****6 文档编号:6959117 上传时间:2023-01-13 格式:DOCX 页数:12 大小:1.66MB
下载 相关 举报
88点阵显示电路课程报告.docx_第1页
第1页 / 共12页
88点阵显示电路课程报告.docx_第2页
第2页 / 共12页
88点阵显示电路课程报告.docx_第3页
第3页 / 共12页
88点阵显示电路课程报告.docx_第4页
第4页 / 共12页
88点阵显示电路课程报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

88点阵显示电路课程报告.docx

《88点阵显示电路课程报告.docx》由会员分享,可在线阅读,更多相关《88点阵显示电路课程报告.docx(12页珍藏版)》请在冰豆网上搜索。

88点阵显示电路课程报告.docx

88点阵显示电路课程报告

一、设计目的

这次课程设计主要是通过对FPGA(现场可编程门阵列)芯片的设计实践,使学生掌握一般的PLD(可编程逻辑器件)的设计过程、设计要求、设计内容、设计方法,能根据要求及工艺需要进行电子芯片设计并制定有关技术文件。

这个课题还要求我们掌握8×8点阵显示电路原理和VHDL设计方法,学习用VHDL语言设计较复杂电路,利用EDA技术知识,解决常见实际问题的能力,使学生积累实际EDA编程经验。

二、设计要求

(1)熟悉掌握常用仿真开发软件QuartusⅡ9.0,能熟练运用开发软件完成特定功能的电子电路的仿真、软硬件调试;

(2)用8X8LED点阵实现简单字符的显示:

1)LED共阳方式;

2)采用扫描的方式显示信息,信息内容可存于文件;

3)显示方式:

自动滚动或者手动选择;

4)完成全部流程:

设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、下载验证等。

三、总体设计方案要求

1.设计的总体原理

点阵显示器的设计原理为用一块FPGA芯片控制其显示字符。

将编好的控制程序下载到FPGA芯片,外接5V工作电压,其时钟信号由芯片板上自带晶振提供,外接开关输入控制信号到FPGA芯片,由FPGA具体执行输出点阵显示器各点的控制信号,总体原理框图如图

(1)所示

图3-1总体原理框图

2.设计内容

若要用点阵发光二极管显示字符,首先要将字符放在一个方块内,方块分成8×8共64个小方块,在方块内写上字符,小方块里有字符笔划则填“1”,无笔划则填“0”,这样就形成了一个字符的二进制数据。

(2)为8×8点阵LED外观及引脚图,其等效电路如图(3)所示,只要

其对应的X、Y轴顺向偏压,即可使LED发亮。

例如如果想使左上角LED点亮,则Y0=1,X0=0即可。

应用时限流电阻可以放在X轴或Y轴。

要使一个字符在显示器整屏显示,点阵点阵发光显示器就必须通过快速逐列点亮,而且是周而复始的循环点亮,使人眼的暂留视觉效应形成一个全屏字符。

 

图3-28×8点阵LED外观及引脚图

图3-38×8点阵LED等效电路

四、EDA设计及仿真

1.计数器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDZDQIS

PORT(CLK:

INSTD_LOGIC;

RST:

INSTD_LOGIC;

QOUT:

OUTSTD_LOGIC_VECTOR(5DOWNTO0));

END;

ARCHITECTUREDZDQOFDZDQIS

SIGNALQ0:

STD_LOGIC_VECTOR(5DOWNTO0);--地址读取信号

BEGIN

P0:

PROCESS(CLK)

VARIABLEAQ1:

STD_LOGIC_VECTOR(5DOWNTO0);--末位地址

VARIABLEATEMP:

INTEGERRANGE0TO16;--循环计数

VARIABLEAQ0:

STD_LOGIC_VECTOR(5DOWNTO0);--初始地址

BEGIN

IFRST='1'THEN

AQ1:

="001000";--末位地址初值

ELSIF(CLK'EVENTANDCLK='1')THEN

AQ0:

=AQ0+1;--依次读取前8位地址

IF(AQ0=AQ1)THEN

AQ0:

=AQ0-"001000";

ATEMP:

=ATEMP+1;--当读完8位返回首地址

IF(ATEMP=16)THEN

AQ0:

=AQ0+1;

AQ1:

=AQ1+1;

ATEMP:

=0;--重复读取第一屏16遍,首地址,末地址均加1,显示下一屏

IF(AQ0="100001")THEN

AQ0:

="000000";--首地址回到000000

AQ1:

="001000";--末地址回到001000

ENDIF;

ENDIF;

ENDIF;

ENDIF;

QOUT<=AQ0;

ENDPROCESSP0;

END;

图4-1计数器框图

图4-2计数器时序仿真图

计数器的波形分析:

由程序及仿真波形图可以看出该计数器每个上升沿都从ROM中读出一个数,然后下一个上升沿读下一个数,读出0—7的内容后,返回初始值重新读,反复16次之后,读从1—8的数值。

2.行变换

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDZ_LEDIS

PORT(CLK:

INSTD_LOGIC;

HANG_OUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));--行输出

END;

ARCHITECTUREDZ_LEDOFDZ_LEDIS

COMPONENTROOM

PORT(ADDRESS:

INSTD_LOGIC_VECTOR(5DOWNTO0);

CLOCK:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENT;--调用ROM

SIGNALHANG:

STD_LOGIC_VECTOR(7DOWNTO0);--行变换信号

BEGIN

P1:

PROCESS(HANG,CLK)

BEGIN

IF(CLK'EVENTANDCLK='1')THEN

IFHANG(7DOWNTO0)="00000000"ORHANG(7DOWNTO0)="10000000"THEN

HANG(7DOWNTO0)<="00000001";

ELSIFHANG(7DOWNTO0)<="00000001"THEN

HANG(7DOWNTO0)<="00000010";

ELSIFHANG(7DOWNTO0)<="00000010"THEN

HANG(7DOWNTO0)<="00000100";

ELSIFHANG(7DOWNTO0)<="00000100"THEN

HANG(7DOWNTO0)<="00001000";

ELSIFHANG(7DOWNTO0)<="00001000"THEN

HANG(7DOWNTO0)<="00010000";

ELSIFHANG(7DOWNTO0)<="00010000"THEN

HANG(7DOWNTO0)<="00100000";

ELSIFHANG(7DOWNTO0)<="00100000"THEN

HANG(7DOWNTO0)<="01000000";

ELSIFHANG(7DOWNTO0)<="01000000"THEN

HANG(7DOWNTO0)<="10000000";

ENDIF;--信号HANG进行逐列扫描

ENDIF;

HANG_OUT<=NOTHANG;

ENDPROCESSP1;

END;

图4-3行变换原理框图

图4-4行变换的时序仿真波形图

行变换部分在每一个上升沿进行判断,从而使列从右到左不断扫描。

但是,由于HANG信号应为低电平有效,但是在仿真的时候若将信号定义为“11111110”、“11111101”、“11111011”、“11110111”、“11101111”、“11011111”、“10111111”、“01111111”时,仿真错误。

所以用HANG_OUT<=NOTHANG进行仿真。

3.ROM

这里的ROM并没有用VHDL代码进行编写,而是利用原理图,直接进行设置,并建立后缀为.mif的文件,放入其中作为存储的内容。

实现方法如下:

1、点击file→new,选择MemoryLnitializationFile

2、选择存储空间为40,更改数据类型为16进制,输入如下数字:

0000000000000000

0000525252527E00

00FE9292FE9292FE

5E52525252527200

0000000000000000

3、点击保存,此时不要建立工程

4、点击file→new,选择点击BlockDiagram/SchematicFile

5、在空白处双击鼠标左键,选择MegaWizardPlug-lnManager选择next,选择MemoryCompiler→ROM-1PORT,键入名称ROM

6、将存储空间选为32字节,去掉q’

7、添加刚刚制作的后缀为.mif的文件。

8、保存并建立工程。

图4-5ROM原理框图

4、系统设计

将上述的两个程序生成元件,与ROM一起放在原理图文件中并进行连接,具体过程如下:

1、在程序输入文件中点击file→Create/Update→CreateSymbolFilesForCurrentFile

2、将两个程序都生成元件,然后进入原理图文件,在空白处双击鼠标左键,在quartus/libraries中就能找到生成的元件,将对应的管脚连接起来。

图4-6总原理框图

 

3、保存、编译并仿真

图4-7总程序的时序仿真波形图

程序仿真波形图分析:

在整个程序中时钟信号统一,为了保证读取的数据和HANG信号能一一对应。

HANG信号为“0”以此左移,Q不断输出存储数据。

五、硬件实现

1、给出硬件实现

实验步骤:

⑴打开QuartusⅡ9.0软件,点击新建选择VHDLFile,然后把程序输入进去,然后保存,保存名字和程序的名字相同;

⑵建立新工程管理窗,将设计文件加入工程,选择仿真器及其综合器类型,在选择完目标芯片后结束设置;

(3)保存文件点击软件页面上方的编译按键进行编译;

(4)编译成功后,打开波形编辑器,设置仿真时间区域,然后编辑输入波形,进行软件仿真,观察仿真结果。

(5)在引脚锁定,选择编程模式和配置后进行下载,进行硬件测试。

图5-1脚码锁定图

2.硬件仿真结果

(1)调试时遇到的问题

下载完成后,上电调试时,点阵显示器有一行两列不亮,经检查后发现时因为点阵显示器与硬件电路板接触不良,将其按紧,使其接触良好后,问题解决。

显示器显示固定的图案,经分析,软件应该没显示问题,硬件无接线问题,可能是时钟频率过高,显示的字变化太快,人眼不能分辨。

将软件改写,使经分频器分频后的频率降低,在重新编译,下载调试,发现其一屏一屏显示时,能正常显示汉字,并且速度不算太快。

(2)通过修改程序等措施排除调试问题后,得到正确硬件效果,如下图所示:

图5-2硬件显示字符“E”

图5-3硬件显示字符“田”

图5-4硬件显示字符“2”

六、设计总结

通过本次EDA课程设计,我们加深了课上所学,在此次点阵数字显示电路设计过程中,进一步熟悉了quartus软件的使用,深入了解了芯片的结构及性能参数。

在焊接完电路板后调试过程应注意以下几点:

用万用表检测电路的焊接中是否有虚焊和漏焊;检测电源电压是否为5V;用万用表测试电源通道不短路后加电;给行以高电平,给列以低电平,依次检测每个二极管是否都正常发光;用万用表检测开关的连接是否有误。

值得注意的是,仿真与电路焊接时有一定区别的,并不完全一致,焊接过程要仔细了解各接点的关系。

经过课程设计,我感觉到个人的能力往往是有限的,通过集体,集思广益,任何问题都可以得到合理的解决办法。

七.参考文献

⑴孙俊逸,EDA技术课程设计,华中科技大学出版社,2009;

(2)杨旭,EDA技术基础与实验教程,清华大学出版社,2010;

(3)VolneiA.Pedroni.VHDL数字电路设计教程.电子工业出版社;

(4)杭州康芯电子有限公司.EDA技术实验讲义;

八、设计生成的电路图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1