北京印刷学院EDA设计报告点阵LED.docx

上传人:b****3 文档编号:3665663 上传时间:2022-11-24 格式:DOCX 页数:21 大小:210.95KB
下载 相关 举报
北京印刷学院EDA设计报告点阵LED.docx_第1页
第1页 / 共21页
北京印刷学院EDA设计报告点阵LED.docx_第2页
第2页 / 共21页
北京印刷学院EDA设计报告点阵LED.docx_第3页
第3页 / 共21页
北京印刷学院EDA设计报告点阵LED.docx_第4页
第4页 / 共21页
北京印刷学院EDA设计报告点阵LED.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

北京印刷学院EDA设计报告点阵LED.docx

《北京印刷学院EDA设计报告点阵LED.docx》由会员分享,可在线阅读,更多相关《北京印刷学院EDA设计报告点阵LED.docx(21页珍藏版)》请在冰豆网上搜索。

北京印刷学院EDA设计报告点阵LED.docx

北京印刷学院EDA设计报告点阵LED

 

北京印刷学院

课程设计报告

--嵌入式系统EDA

课程设计名称:

EDA技术课程设计

课程设计题目:

点阵LED显示屏控制器的设计

专业:

电子信息工程专业

班级:

学生姓名:

学生姓名指导老师:

唐英杰

时间:

目录

一、设计任务要求.......................................................3

1、基本要求:

..........................................................3

二、设计方案............................................................3

1、系统功能............................................................3

2、系统设计............................................................3

1)系统设计方案说明.....................................................3

2)模块分析............................................................4

1、分频模块............................................................4

2、时钟模块............................................................4

3、按键去抖模块........................................................5

4、只读ROM模块........................................................6

5、显示控制模块........................................................6

6、16*16LED点阵扫描显示模块...........................................7

三、应用设备及软件介绍..................................................9

1:

主要仪器设备(实验用的软硬件环境)...................................9

2:

实验的软件环境.......................................................9

3:

操作方法与实验步骤...................................................9

四、调试过程分析、遇到的问题及解决方法..................................9

五、设计结论...........................................................10

六、管脚分配说明......................................................11

七、参考文献...........................................................11

八、附录..............................................................11

附录一、分频模块程序.....................................................11

附录二、按键去抖模块程序.................................................13

附录三、显示控制模块程序.................................................14

附录四、扫描显示控制模块程序.............................................18

附录五、只读ROM模块程序..................................................20

一、设计任务要求

1、基本要求:

1点阵LED显示屏为16*16的屏;

2能显示一组汉字,如:

电子信息工程专业;

3能以多种显示方式显示汉字,如左移、右移等;

二、设计方案

1、系统功能

系统能够在16*16的LED点阵屏幕上显示任一汉字,有三种显示方式,分别是直接显示文字、从左到右刷屏显示、从右到左刷屏显示;并且能显示不同长度的文字。

2、系统设计

1)系统设计方案说明

此实验是基于CycloneIII的EP3C55F484C8嵌入式系统的设计,主要有时钟模块、按键去抖模块、只读ROM模块、显示控制模块、16*16LED点阵扫描显示模块以及一些输入和输出管脚、电源和地构成。

2)模块分析

1、分频模块

分频器,使输入时钟信号分频成低频信号,达到适合的频率,以供此实验应用。

其中分为奇分频和偶分频,这里用到100的偶分频和5的奇分频。

图一100分频模块

图二5分频模块

2、时钟模块

系统输入时钟为50MHz,为了能达到各模块需要的系统时钟,系统要通过时钟模块分频到1KHz。

在扫描显示模块要求输入时钟必须大于50*16ms,即小于人眼分辨时间,到达显示效果。

时钟模块输入为50MHz通过两个100分频,和一个5分频达到1KHz;

图三时钟模块组成

图四时钟模块

3、按键去抖模块

通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键去抖。

抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。

这是一个很重要的时间参数,在很多场合都要用到。

按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。

键抖动会引起一次按键被误读多次。

为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。

在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。

在该按键去抖模块输入时钟为1KHz,去抖系数为20,即按键抖动时间允许在20ms以内。

图五按键去抖模块

4、只读ROM模块

只读存储器ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。

ROM所存数据稳定,断电后所存数据也不会改变;其结构较简单,读出较方便,因而常用于存储各种固定程序和数据。

该只读ROM大小为16bitX512word,在这ROM存储用做字符发生器,用来存储要显示的文字编码。

每个文字编码为16个16b的数据,如“北”字的编码为

0004

0406

0404

0408

0408

FFFE

0000

0000

FEFC

0402

0802

1002

3002

0002

000E

0000

其中“北京印刷学院”存储地址为0~95;“愚者千虑,必有一得”地址为96~239,反向编码的“北京印刷学院”存储地址为240~335。

图六只读ROM模块

5、显示控制模块

该模块是本系统重要模块,本系统显示方式是通过改变字模的地址来呈现不同的显示形式。

本模块有时钟信号clk_1K;mode按键kin和复位按键rest;输出初始地址star_addr[8..0];同步复位信号r_flg和改变扫描方式的change信号,输出信号都作用于扫描显示show_count模块。

输入输出信号如下:

clk_1K——1KHz的时钟输入star_addr[8..0]——每状态对应的初始地址

kin——状态转换按键输入r_flg——同步复位信号

rest——复位按键输入change——改变扫描方式信号

本系统的三种显示方式分别是本模块里状态机:

s0:

直接显示文字;s1:

从左到右刷屏显示;s2:

从右到左刷屏显示;

状态转换图如右图:

文字编码已按地址存储在文字库ROM里,每种显示

方式都通过改变扫描显示的初始地址来实现。

在每个

状态机里当显示时间达到show_times*16即800ms左右

就会改变一次初始地址(+16或+1)直到该段文字结束

后,初始地址又变为该段文字的初始地址。

如显示方式图七显示方式状态转换图

一:

“北京印刷学院”存储地址为0~95。

初始地址为0,每次显示时间到800ms地址加16,直到地址为80的时候下一次计时到800ms后地址变为0;

图八显示控制模块

6、16*16LED点阵扫描显示模块

LED动态显示接口是嵌入式系统中应用最为广泛的一种显示方式之一,动态驱动是将所有行LED的同名端连在一起,另外为每列LED的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当FPGA输出字形码时,FPGA对位选通COM端电路的控制,所以我们只要将需要显示的列码的选通控制打开,该位就显示出字形,没有选通的列就不会亮。

通过分时轮流控制各列的COM端,就使各列LED轮流受控显示,这就是动态驱动。

在轮流显示过程中,每列LED的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各列LED并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

在本系统的扫描显示模块里包括LED动态扫描显示模块show_count和文字库ROM组成。

在核心模块扫描显示模块show_count输入信号有时钟clk,初始地址信号star_addr,控制信号change、rest。

输出信号有字模地址addr和位选信号bit_code。

个信号具体如下表:

Change——改变扫描方式信号输入

star_addr——控制端初始地址输入

rest——同步复位信号输入addr——字模地址输出

clk——1KHz时钟输入bit_code——列码位选信号输出

本模块通过地址控制ROM输出文字编码到LED点阵相应的每一列上来达到显示目的。

每个文字编码为16个16位的数据,每个16位数据对应每一列,故每个文字要扫描显示16次;用第一种显示效果为例:

当输出bit_code码为0时输出地址为0的数据,下一个时钟到来时,bit_code加1,同时addr加1显示下一列数据。

直到bit_code=15,addr也刚好加到star_addr+15,在下一时钟

图九扫描显示控制模块

到来时bit_code回到0;同时addr也回到改文字的star_addr。

这样不断的扫描显示达到显示出一个文字的效果。

下图为本系统的16*16LED点阵扫描显示模块总电路图,核心模块show_count通过addr总线连到字模ROM的address,这样实现了扫描显示模块通过控制ROM地址输出相应字模编码到对应列上来进行扫描显示。

其中注意的是,该ROM需要在输入地址后的第二个上升沿才能把数据送到q(输出)端,故在初始时刻,要在第三个上升沿才能让bit_code加1。

图十扫描显示模块总电路图

3、应用设备及软件介绍

1:

主要仪器设备(实验用的软硬件环境)

(1)计算机;

(2)实验箱(CycloneIII的EP3C55F484C8)

(3)电源线一根

(4)USB下载线一根

2:

实验的软件环境

QuartusⅡ9.0软件

3:

操作方法与实验步骤

(1)利用QuartusII9.0软件实现EDA的基本设计流程:

创建工程、编辑文本输设计

文件、编译前设置、全程编译、功能仿真。

(2)利用QuartusII9.0软件实现引脚锁定和编译文件下载。

四、调试过程分析、遇到的问题及解决方法

问题1:

本来自己通过在显示屏上设计好每个LED灯的状态,则需要32个管脚控制,结果发现管脚不够分配,只有20个管脚。

解决方法:

通过查阅实验说明书,了解了实验原理以及管脚分配,知道了每个字的代码是用字模软件生成的,重新根据实验原理编写代码从而实现20个管脚的分配。

问题2:

调试成功,但是LED屏幕上一直无法显示汉字。

解决方法:

通过仔细查阅实验说明书,将开发平台上的CTRL_SW组合开关上的1拨上,2、3、4拨下,使数码管显示为1,LED屏幕上显示汉字。

问题3:

在显示一段文字时,每次返回显示第一个文字的时候总是错位。

解决方法:

把扫描显示模块的复位信号用作跟显示控制模块的同步复位信号r_flg,当该段文字返回显示第一个文字时,由显示控制模块产生一个复位信号作用于扫描显示模块,让扫描显示模块同步复位,这样就不会出错了。

问题4:

每段文字显示完后总会出现一串乱码,然后一直黑屏。

解决方法:

导致这种情况的原因是运算语句参数错误,导致地址超范围;最后通过改变参数,使每次显示文字都在该段文字编码范围内,问题就解决了。

五、设计总结

通过这次课程设计的整个过程中,我们做了一次全面、较规范的设计练习,全面地温习了以前所学过的知识,以及做过的实验,用理论联系实际并结合FPGA课程和解决实际问题,巩固、加深和扩展了有关FPGA设计方面的知识。

尤其重要的是让我们养成了科学的习惯,在设计过程中一定要注意掌握项目工程设计方案,在设计阶段,注意设计模块与结构设计时序交替进行,采用正确的设计方法。

在整个设计过程中注意对设计资料和计算数据的保存和积累,保持记录的完整性。

在状态机的设计过程中要注意分清状态。

在课程设计的实践中进行了设计基本技能的训练,掌握了查阅和使用标准、规范、手册、图册、及相关技术资料的基本技能以及计算、数据处理等方面的能力。

在整个设计工过程中,尤其是设计之前,一定要有整体的逻辑思路;然后在分块解决。

同样在检测的过程中,要学会分模块检测,这一点是很重要的,会起事半功倍的效果。

 

通过对通用EP3C55F484C8的FPGA处理器的设计,掌握了一般verilog设计的程序和方法,让我们对整个FPGA程序的设计,verilog语言有了一个比较深的理解。

还有就是增强了自身的动手能力,把以前书本上讲的或是没有讲的,通过一次课程设计具体的实施,使自己真正得到锻炼,对于以后我们的发展与学习来说,都可以看作一笔不小的财富,前面还有很多需要我们去尝试。

 这次课程设计还是有了不少收获,对FPGA的认识更加深了,自己动手能力也提高一些

六、管脚分配说明

管脚分配设计端口

芯片引脚

开发平台模块

EP3C16/40/55/80F484

row[16]

PIN_A13

16X16点阵

row[15]

PIN_F9

row[14]

PIN_D10

row[13]

PIN_B10

row[12]

PIN_B9

row[11]

PIN_B8

row[10]

PIN_B7

row[9]

PIN_E14

row[8]

PIN_C15

row[7]

PIN_F11

row[6]

PIN_C13

row[5]

PIN_E11

row[4]

PIN_B6

row[3]

PIN_A6

row[2]

PIN_A5

row[1]

PIN_A4

col[4]

PIN_C4

col[3]

PIN_A16

col[2]

PIN_A15

col[1]

PIN_A14

 

7、参考文献:

[1]夏宇闻.Verilog数字系统设计教程(第3版).北京:

北京航空航天出版社.2013

[2]夏宇闻.Verilog嵌入式数字系统设计教程.北京:

北京航空航天出版社.2009

[3]GX-BICE-EDA实验教程说明书.北京革新科技.

八、附录:

附录一、分频模块程序

DDF_2:

//二分频模块

moduleDDF_2(clkin,clkout);

inputclkin;

outputclkout;

regclkout;

reg[8:

0]count;

parameterNUM=0;

always@(posedgeclkin)

begin

if(count==NUM)

begin

count<=8'b0000_0000;

clkout<=~clkout;

end

else

count<=count+8'b0000_0001;

end

endmodule

DDF_5:

//五分频模块

moduleDDF_5(clkin,clkout);

parameterNUM=5;

inputclkin;

outputclkout;

wireclkout;

reg[4:

0]m,n;

regcount1,count2;

assignclkout=count1|count2;

always@(posedgeclkin)

begin

if(m==NUM-1)

m<=0;

else

m<=m+1;

if(m<(NUM-1)/2)

count1<=1;

else

count1<=0;

end

always@(negedgeclkin)

begin

if(n==NUM-1)

n<=0;

else

n<=n+1;

if(n<(NUM-1)/2)

count2<=1;

else

count2<=0;

end

endmodule

附录二、按键去抖模块程序

qudou:

//按键去抖模块

modulequdou(Kin,clk,Kout);

inputKin,clk;

outputKout;

regKout;

reg[5:

0]counter;

parameterdisort=20;

always@(posedgeclk)//上升沿

begin

if(Kin==0)//有按键

begin

if(counter>=disort)//大于去抖值disort

begin

Kout=0;//输出按键

counter=disort;//固定counter值

end

else

begin

Kout=1;//输出按键

counter=counter+1;//计数加1

end

end

else//没有按键

begin

counter=0;//计数值为0,清零

Kout=1;

end

end

endmodule

附录三、显示控制模块程序

display_count:

//显示控制模块

moduledisplay_count(clk_1k,kin,rest,star_addr,r_flg,change);

inputclk_1k,rest,kin;

outputreg[8:

0]star_addr;

outputregr_flg,change;

reg[10:

0]s_count;

reg[1:

0]k_count;

reg[3:

0]state;

parametershow_times=50,display_word=5,

s0=4'b0001,s1=4'b0010,s2=4'b0100,s3=4'b1000;

always@(negedgekinornegedgerest)

begin

if(!

rest)

k_count<=2'b00;

elseif(k_count==3)

k_count<=1;

else

k_count<=k_count+1'b1;

end

always@(posedgeclk_1k)

begin

if(!

rest)

begin

r_flg<=0;//tongbufuwei

s_count<=0;

star_addr<=0;

state<=s0;

change<=0;

end

elsebegin

//r_flg<=1;

case(state)

s0:

begin

if(k_count==1)

begin

state<=s1;

r_flg<=0;

star_addr<=96;

end

elsebegin

if(s_count==show_times*16)

begin

s_count<=0;

if(star_addr>=display_word*16)

begin

r_flg<=0;

star_addr<=0;

end

else

star_addr<=star_addr+16;

end

elsebegin

state<=s0;

r_flg<=1;

s_count<=s_count+1'b1;

end

end

end

s1:

begin

if(k_count==2)

begin

state<=s2;

r_flg<=0;

star_addr<=240;

change<=1;

end

if(s_count==(show_times-45)*16)

begin

s_count<=0;

if(star_addr==208)

begin

star_addr<=96;

r_flg<=0;//tongbufuwei

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

当前位置:首页 > 工程科技 > 能源化工

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

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