VerilogHdl语言设计点阵.docx

上传人:b****4 文档编号:3851000 上传时间:2023-05-06 格式:DOCX 页数:14 大小:20.90KB
下载 相关 举报
VerilogHdl语言设计点阵.docx_第1页
第1页 / 共14页
VerilogHdl语言设计点阵.docx_第2页
第2页 / 共14页
VerilogHdl语言设计点阵.docx_第3页
第3页 / 共14页
VerilogHdl语言设计点阵.docx_第4页
第4页 / 共14页
VerilogHdl语言设计点阵.docx_第5页
第5页 / 共14页
VerilogHdl语言设计点阵.docx_第6页
第6页 / 共14页
VerilogHdl语言设计点阵.docx_第7页
第7页 / 共14页
VerilogHdl语言设计点阵.docx_第8页
第8页 / 共14页
VerilogHdl语言设计点阵.docx_第9页
第9页 / 共14页
VerilogHdl语言设计点阵.docx_第10页
第10页 / 共14页
VerilogHdl语言设计点阵.docx_第11页
第11页 / 共14页
VerilogHdl语言设计点阵.docx_第12页
第12页 / 共14页
VerilogHdl语言设计点阵.docx_第13页
第13页 / 共14页
VerilogHdl语言设计点阵.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VerilogHdl语言设计点阵.docx

《VerilogHdl语言设计点阵.docx》由会员分享,可在线阅读,更多相关《VerilogHdl语言设计点阵.docx(14页珍藏版)》请在冰点文库上搜索。

VerilogHdl语言设计点阵.docx

VerilogHdl语言设计点阵

工程职业技术学院

 

VerilogHdl语言设计点阵

 

报告册

 

班级:

2014通信技术1班

巧琳

指导教师:

郭欣

时间:

 

一、摘要

本论文主要阐述了基于FPGA设计16*16的点阵,让点阵静态或动态显示一个字或者一段话,LED显示屏如今在生活中应用广泛,各大广告商利用LED显示屏的便捷性宣传产品。

这次实验需要利用EDA工具软件QuartusII编写并调试系统的VerilogHDL程序。

并且每一个模块都在这个软件下进展了仿真。

系统的VerilogHDL程序编好过后先在实验室的EDA实验箱上下载调试、验证。

 

关键词:

LED、FPGA、VerilogHDL、点阵

 

Abstract

ThispapermainlyelaboratedbasedontheFPGAdesignof16*16lattice,letlatticestaticordynamicdisplayawordorparagraph,LEDdisplaynowinlifearewidelyused,eachbigadvertisersuseLEDdisplayoftheconvenienceofpromotionalproducts.ThisdesignneedstousetheEDAtoolsoftwareVerilogtowriteanddebugthesystem'sHDLQuartusIIprogram.Andeachmoduleissimulatedinthesoftware.ThesystemoftheHDLVerilogprogramiscompiledinthelaboratoryafterthefirstEDAtestboxtodownloadanddebug,verify.

 

Keyword:

LED、FPGA、VerilogHDL、lattice

 

二、绪言

目前,在机场、饭店等很多公共场所都能看到美观、实用的电子显示屏,它以高清、节能、控制简单、寿命长、耐冲击、性能稳定、本钱低廉、环保等优势迅速占领市场。

随着显示屏尺寸的扩大、亮度要求的增加,数据传输和控制的时间也会增加,如果仍然采用单片机作为控制器,将会影响显示效果,严重时可能无常工作,然而,这时假设采用可编程逻辑器件作为控制器,那么可解决这一难题。

一方面,随着微电子技术的开展和生产工艺的提高,器件的性能大有很大的提高,出现了高性能的现场可编程逻辑器件〔FPGA〕,FPGA具有处理速度高、可靠性高、高容量和集成度高等特点,在大屏幕显示系统设计中使用FPGA可以满足现在的LED大屏幕系统对于处理视频数据的高速要求,同时改善电路的性能,缩小系统的体积。

设计中使用硬件描述语言进展电路设计,可以随时根据设计需要进展修改,而不必对硬件进展修改,它使系统的设计和调试非常方便,大大的缩短了产品的开发周期,降低了开发本钱,也方便以后的系统升级。

 

      50年前人们已经了解半导体材料可产生光线的根本知识,第一个商用二极管产生于1960年。

LED是英文light emitting diode〔发光二极管〕的缩写,它的根本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,即固体封装,所以能起到保护部芯线的作用,所以LED的抗震性能好。

  我国LED显示屏市场起步较早,市场上出现了一批具有很强实力的LED显示屏生产厂商。

目前LED显示屏已经广泛应用到车站、银行、证券、医院。

在LED需求量上,LED显示屏仅次于LED指示灯名列第二,占到LED整体销量的23.1%。

由于用于显示屏的LED在亮度和寿命上的要求高于LED指示灯,平均价格在指示灯LED之上,这就导致显示屏用LED市场规模到达32.4亿元,超过指示灯位居榜首成为LED的主要应用市场。

  

我国LED显示屏市场起步较早,市场上出现了一批具有很强实力的LED显示屏生产厂商。

目前LED显示屏已经广泛应用到车站、银行、证券、医院。

在LED需求量上,LED显示屏仅次于LED指示灯名列第二,占到LED整体销量的23.1%。

由于用于显示屏的LED在亮度和寿命上的要求高于LED指示灯,平均价格在指示灯LED之上,这就导致显示屏用LED市场规模到达32.4亿元,超过指示灯位居榜首成为LED的主要应用市场。

凭借着独特优势,LED全彩显示屏广泛应用在体育场馆、市政广场、演唱会、车站、机场等场所。

   LED早已应用在以手机为主的小尺寸液晶面板背光市场中,手机产量的持续增长带动了背光源市场的快速开展。

特别是2003年彩屏手机的出现更是推动白光LED市场的快速开展。

但随着手机产量进入平稳增长阶段以及技术提升导致用于手机液晶面板背光源LED数量减少,使得LED在手机背光源中用量增速放缓,2005年背光源用LED数量超过12亿只,未来几年增长率也将保持在个位数。

数量增速的放缓加上平均价格的不断下降,最终导致小尺寸背光源市场增长乏力,同时,尺寸背光源市场虽为厂商新宠,但在2006年还不能形成规模。

在上述两个因素的影响下,背光源市场将在2006年出现1%的负增长。

2005年背光源市场规模超过15亿元。

      

 

三、点阵根本知识

16*16扫描LED点阵只要其对应的X、Y轴顺向偏压,即可使LED发亮。

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

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

它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。

 

LED点阵每个点都有一个红色的发光二极管。

点阵的二极管间的连接都是行共阳,列共阴。

本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。

数字电路。

(图1-7所示)

 

四、电路分析

本设计采用16×16LED点阵屏由4块8×8LED点阵拼接而成,每一块点阵都有8行8列,因此总共有16根行控制线和16根列控制线。

EDA实验箱上有其接口电路,STR,SI,SCK,且实验箱上采用的是4个74HC595来实现行扫描和列扫描的。

用动态分时扫描技术使LED点阵模块显示字体,需要进展两步工作。

第一步是获得数据并保存,即在存贮器中建立汉字数据库。

第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。

获得图像数据的步骤是,先将要显示的每一幅图像画在一个被分成16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1〞,无笔划处填上“0〞,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以32×16的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。

以这种方式将假设干个汉字的数据贮存在存贮器,就完成了图像数据库的建立工作。

电路中采用SPI接口的方式对LED点阵进展操作,LATTICE_SI对应SPI的MOSI,LATTICE_STR对应SPI的nCS,LATTICE_SCK对应SPI的SCK。

U17,U18,U19以及U20〔74HC595〕构成一个串入并出的32bit数据移位存放器。

当LATTICE_STR低电平有效时,32bit数据在32个LATTICE_SCK时钟下有LATTICE_SI串行输入,当LATTICE_STR由低电平变成高电平时,32bit数据并行输出。

在主板上主板上数据输出时LAD~LDP对应行,而LD1~LD16对应列,最先移入的数据被当作16列〔LD16〕,最后移入的被当作第一行〔LDA〕。

 

五、设计方案

点阵LED一般采用扫描式显示,实际运用分为三种方式:

〔1〕点扫描

〔2〕行扫描

〔3〕列扫描

假设使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。

假设使用第二和第三种方式,那么频率必须大于16×8=128Hz,周期小于7.8ms即可符合视觉暂留要求。

此外一次驱动一列或一行〔8颗LED〕时需外加驱动电路提高电流,否那么LED亮度会缺乏

方案一:

本文系统的LED点阵模块,共由16×16=256个LED发光二极管组成。

如何在该点阵模块上显示汉字是本文设计的关键技术。

本文系统设计是采用一种16路动态分时扫描技术来实现的。

具体方法是,将4个8×8数组的显示模块组合成两个16行16列的扫描结构。

其行输入端与FPGA的只读存储器ROM的16位数据输出端口相连;16个列控制端与一个4-16译码器的输出相连;而译码器的输入端和片选信号又与FPGA的列扫描控制模块的输出端口相连。

方案二:

VerilogHDL程序设计的是硬件,可以“并发执行〞。

本设计可以将LED显示屏要的显示容抽象成一个二维数组〔数组中的‘1’对映点阵显示屏上面的亮点〕,用VerilogHDL语言设计一个进程将这个数组动态显示在LED显示屏上,再利用另一个进程对这个数组按一定频率进展数据更新,更新的方式可以有多种。

因为两个进程是同时进展的〔并发执行〕,如果对数组中的汉字数据按滚动的方式更新,那么可实现汉字的滚动显示

通过比拟我们选择方案二。

虽然方案一很容易实现,而且占用FPGA的资源较少,但是由于其实现方式的局限性,该方案只能实现汉字的滚动显示。

方案二中将LED点阵抽象成了一个二维数组。

可以设计一些比拟复杂的算法来控制这个数组,使设计的系统不但可以滚动显示汉字,还可以扩展一些其它的显示效果。

 

六、程序设计

设计程序如下:

--LED1616.VHD

LIBRARYIEEE;

 

ENTITYLED1616IS

PORT(

clk48M:

INSTD_LOGIC;--系统时钟

sdat_in:

INSTD_LOGIC_VECTOR(31downto0);

STR:

OUTSTD_LOGIC;

SCLK:

OUTSTD_LOGIC;

d_out:

OUTSTD_LOGIC

);

END;

ARCHITECTUREoneOFLED1616IS

SIGNALclk_count:

integerrange0to400;

SIGNALt32:

STD_LOGIC_VECTOR(5downto0);

SIGNALclk60K,STR_R,SCLK_R,d_out_R:

STD_LOGIC;

SIGNALdata_shift:

STD_LOGIC_VECTOR(31downto0);

TYPEstatesIS(st0,st1,st2,st3);

SIGNALc_state,n_state:

states;

BEGIN

STR<=STR_R;

SCLK<=SCLK_R;

d_out<=d_out_R;

d_out_R<=data_shift(31);

PROCESS(clk48M)

BEGIN

IFRISING_EDGE(clk48M)THEN

IFclk_count=400THEN

clk_count<=0;

clk60K<=notclk60K;

ELSE

clk_count<=clk_count+1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(clk60K)

BEGIN

IFRISING_EDGE(clk60K)THEN

c_state<=n_state;--主控时序进程

ENDIF;

ENDPROCESS;

PROCESS(c_state)

BEGIN

CASEc_stateIS

WHENst0=>

n_state<=st1;

STR_R<='1';

SCLK_R<='0';

WHENst1=>

n_state<=st2;

STR_R<='0';

SCLK_R<='0';

WHENst2=>

n_state<=st3;

STR_R<='0';

SCLK_R<='1';

WHENst3=>

if(cnt32>="100000")then

n_state<=st0;

else

n_state<=st2;

endif;

STR_R<='0';

SCLK_R<='0';

WHENOTHERS=>

n_state<=st0;

ENDCASE;

ENDPROCESS;

PROCESS(SCLK_R)

BEGIN

if(STR_R='1')then

data_shift<=sdat_in;

cnt32<="000000";

elsIFFAllING_EDGE(SCLK_R)THEN

data_shift(31downto0)<=data_shift(30downto0)&'0';

cnt32<=t32+'1';

ENDIF;

ENDPROCESS;

END;

 

--LS416

LIBRARYIEEE;

 

ENTITYLS416IS

PORT(SEL:

INSTD_LOGIC_VECTOR(3DOWNTO0);

Dout:

OUTSTD_LOGIC_VECTOR(15DOWNTO0));

ENDLS416;

ARCHITECTUREBHVOFLS416IS

BEGIN

PROCESS(SEL)

BEGIN

CASESELIS

WHEN"0000"=>Dout<="11110";

WHEN"0001"=>Dout<="11101";

WHEN"0010"=>Dout<="11011";

WHEN"0011"=>Dout<="10111";

WHEN"0100"=>Dout<="01111";

WHEN"0101"=>Dout<="11111";

WHEN"0110"=>Dout<="11111";

WHEN"0111"=>Dout<="11111";

WHEN"1000"=>Dout<="11111";

WHEN"1001"=>Dout<="11111";

WHEN"1010"=>Dout<="11111";

WHEN"1011"=>Dout<="11111";

WHEN"1100"=>Dout<="11111";

WHEN"1101"=>Dout<="11111";

WHEN"1110"=>Dout<="11111";

WHEN"1111"=>Dout<="11111";

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDBHV;

 

--MAX280

LIBRARYIEEE;

 

ENTITYMAX280IS

PORT(Qa:

INSTD_LOGIC_VECTOR(8DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(8DOWNTO0));

ENDMAX280;

ARCHITECTUREBEHOFMAX280IS

SIGNALQ1:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(Qa)

BEGIN

IF(Qa>=280)then

Q<=Qa-280;

else

Q<=Qa;

ENDIF;

ENDPROCESS;

ENDBEH;

 

modulecnt4b(clk,q);

inputclk;

output[3:

0]q;

reg[3:

0]q;

always(posedgeclk)

begin

if(q==4'b1111)

q=4'b0000;

else

q<=q+1'b1;

end

endmodule

 

moduleint_diva(clockin,clockout);

inputclockin;

outputclockout;

regclockout;

reg[23:

0]counter;

always(posedgeclockin)

begin

clockout=(counter>=12000000);

if(clockout)

counter<=24'd0;

else

counter<=counter+1'b1;

end

endmodule

 

moduleint_divb(clockin,counter,clockout);

inputclockin;

outputclockout;

output[8:

0]counter;

regclockout;

reg[8:

0]counter;

always(posedgeclockin)

begin

clockout=(counter>=280);

if(clockout)

counter<=9'd0;

else

counter<=counter+1'b1;

end

endmodule

moduleadd4(dataa,datab,result);

input[8:

0]dataa;

input[8:

0]datab;

output[8:

0]result;

reg[8:

0]result;

always(dataaordatab)

begin

result<=dataa+datab;

end

endmodule

 

七、电路仿真图

BLOCK1

 

(1-1)

 

(1-2)

 

(1-3)

(1-4)

BLOCK2

(1-5)

ROM

 

(1-6)

 

16*16点阵led部结构图:

 

(1-7)

 

实验总结

这次的设计是基于FPGA的LED16*16点阵控制设计,经过这次的实验课题设计,使得我对VerilogHDL语言有了更多的认识,掌握了很多平时上课时没有弄清楚的地方,对我在学习VerilogHDL语言有了很大帮助。

从一开学教师布置这个大作业的时候我们就开场了思考,本来做的是矩阵键盘,可能是报告上去的表错误了,我们就做成了点阵。

原本以为这个实验很简单,通过行扫描的方式以极快的频率刷新16*16的点阵二极管让矩阵显示固定的一个值,但是最后去实验室调试的时候问题一个接着一个来了,反正怎么都弄不出来,可想而知我们的设计思路都是错的,把问题想得太简单了。

经过屡次修改还是没有成功,虽然有想过放弃,但是看到大家那么努力地完成,自己有了无限的精力去做好它。

在百般无奈下求助教师,教师让我们自己思考、设计后才跟我们解释了电路以及程序的设计方法。

很感郭教师的耐心讲解,悉心教导和谆谆教导,不仅让我们完成了这次的实验,更重要的是学会在过程中进展独立思考分析。

未来还很遥远,我会把这次实验学习到的知识永远记住,不辜负教师的教导。

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2