fpga8x8点阵.docx

上传人:b****2 文档编号:404851 上传时间:2022-10-09 格式:DOCX 页数:11 大小:59.53KB
下载 相关 举报
fpga8x8点阵.docx_第1页
第1页 / 共11页
fpga8x8点阵.docx_第2页
第2页 / 共11页
fpga8x8点阵.docx_第3页
第3页 / 共11页
fpga8x8点阵.docx_第4页
第4页 / 共11页
fpga8x8点阵.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

fpga8x8点阵.docx

《fpga8x8点阵.docx》由会员分享,可在线阅读,更多相关《fpga8x8点阵.docx(11页珍藏版)》请在冰豆网上搜索。

fpga8x8点阵.docx

fpga8x8点阵

 

课程设计报告

 

题目:

8X8LED点阵数字显示电路

院(系):

专业:

班级:

姓名:

设计日期:

 

 

报告书写要求

1、报告的撰写要求条理清晰、语言准确、表述简明。

报告中段首空两个字符,中文字体为宋体五号,数字、字符、字母为TimesNewRoman五号,且单倍行距。

2、报告中插图应与文字紧密配合,文图相符,技术内容正确。

每个图都应配有图题(由图号和图名组成)。

图题(宋体小五号)置于图下居中,其中图号按顺序编排,图名在图号之后空一格排写。

图中若有分图时,分图号用(a)、(b)等置于分图之下。

注:

框图、流程图(矢量图)用专业画图软件。

3、报告中插表应与文字紧密配合,文表相符,技术内容正确。

表格不加左、右边线,上、下线需加粗(1.5磅),每个表应配有表题(由表号和表名组成)。

表题(宋体小五号)置于表上居中,其中表号按顺序编排,表名在表号之后空一格排写。

4、报告中公式原则上居中书写。

注:

公式编辑器编写。

5、设计报告应按如下内容和顺序A4纸打印、左侧装订成册。

一、设计目的

1.掌握数字系统的设计方法;

2.掌握硬件描述语言——VerilogHDL;

3.掌握模块化设计方法;

4.掌握开发软件的使用方法。

二、设计要求

1.用8X8LED点阵实现简单字符的显示。

2.LED共阳方式;

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

4.显示方式:

自动滚动或者手动选择;

5.完成全部流程:

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

三、设计环境

计算机、QuatusII开发软件

四、设计内容(设计原理和方案、程序设计、仿真分析和适配)

4.1设计原理和方案

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

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

如下图1

 

 

图1总原理框图

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

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

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

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

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

4.2程序设计及仿真

4.2.1分频器模块程序设计及仿真

设计思路:

要输出4hz的信号,需要设计一个分频器来达到这个目的。

当K2、K3输入不同的高低电平时,来决定count和ccount的输出。

modulefenpin(clk_50Mhz,clk_4hz,k2,k3);

inputclk_50Mhz,k2,k3;//输入端口声明

outputclk_4hz;//输出端口声明

reg[24:

0]count,ccount;

regclk_4hz;

always(posedgeclk_50Mhz)//可以理解为状态机

begin

if((k2==0)&&(k3==0))

ccount<=500000000;

if((k2==0)&&(k3==1))

ccount<=100000000;

if((k2==1)&&(k3==0))

ccount<=50000000;

if((k2==1)&&(k3==1))

ccount<=10000000;

if(count

begin

count<=count+1'b1;

clk_4hz<=0;

end

else

begin

count<=0;

clk_4hz<=1;

end

end

endmodule

仿真图:

仿真分析:

如图所示,输出信号对输入的时钟信号分频。

达到了预期效果。

4.2.2控制速度模块程序设计及仿真

设计思路:

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

modulesudu(clk,cnt);

inputclk;

outputt;

regt;

reg[7:

0]p;

always(posedgeclk)

begin

if(p==8'b11111111)

begin

t<=1'b1;

p<=8'b00000000;

end

else

begin

p<=p+8'b1;

t<=1'b0;

end

end

endmodule

仿真图:

仿真分析:

如上图所示,速度控制模块在一段时间后由0低电平变为1高电平,开始产生效果,速度控制模块开始工作,达到了预期效果。

4.2.3显示字符模块程序设计及仿真

设计思路:

此模块相当于一个ROM,存储“ILOVEYOU”字符。

8行8列分别给出2进制数来控制64个小灯的高低电平,就达到了点亮与熄灭led灯的目的,从而可以在点阵上显示字符。

modulelove(clk,rst,disp_out,en);

inputclk,rst;

output[7:

0]disp_out;//列8-14743494157515553

output[7:

0]en;//行H-A75-68D7-D0

reg[7:

0]disp_out;

reg[7:

0]en;

//rega;

parameterb=15;

reg[31:

0]t_scan;

always(posedgeclkornegedgerst)

begin

if(!

rst)begin

cnt_scan<=0;

end

elsebegin

cnt_scan<=cnt_scan+1;

end

end

always(cnt_scan)//列使能

begin

case(cnt_scan[15:

13])//case里面这些就是根据不同的cnt_scan值输出灯的高低电平

3'b000:

en=8'b1111_1110;

3'b001:

en=8'b1111_1101;

3'b010:

en=8'b1111_1011;

3'b011:

en=8'b1111_0111;

3'b100:

en=8'b1110_1111;

3'b101:

en=8'b1101_1111;

3'b110:

en=8'b1011_1111;

3'b111:

en=8'b0111_1111;

endcase

end

always(cnt_scan)//字循环

if(cnt_scan[b+12:

b+11]==2'b00)

//begin//I

case(cnt_scan[b:

b-2])

3'b000:

disp_out=8'b1100_0011;

3'b001:

disp_out=8'b1110_0111;

3'b010:

disp_out=8'b1110_0111;

3'b011:

disp_out=8'b1110_0111;

3'b100:

disp_out=8'b1110_0111;

3'b101:

disp_out=8'b1110_0111;

3'b110:

disp_out=8'b1110_0111;

3'b111:

disp_out=8'b1100_0011;

endcase

elseif(cnt_scan[b+12:

b+11]==2'b01)

//begin//xin

case(cnt_scan[b:

b-2])

3'b000:

disp_out=8'b11011011;

3'b001:

disp_out=8'b10100101;

3'b010:

disp_out=8'b01111110;

3'b011:

disp_out=8'b01111110;

3'b100:

disp_out=8'b01111110;

3'b101:

disp_out=8'b10111101;

3'b110:

disp_out=8'b11011011;

3'b111:

disp_out=8'b11100111;

endcase

elseif(cnt_scan[b+12:

b+11]==2'b10)

//beginU

case(cnt_scan[15:

13])

3'b000:

disp_out=8'b10011001;

3'b001:

disp_out=8'b10011001;

3'b010:

disp_out=8'b10011001;

3'b011:

disp_out=8'b10011001;

3'b100:

disp_out=8'b10011001;

3'b101:

disp_out=8'b10011001;

3'b110:

disp_out=8'b10011001;

3'b111:

disp_out=8'b11000011;

endcase

else

case(cnt_scan[15:

13])

3'b000:

disp_out=8'b11100111;

3'b001:

disp_out=8'b11100111;

3'b010:

disp_out=8'b11100111;

3'b011:

disp_out=8'b11100111;

3'b100:

disp_out=8'b11100111;

3'b101:

disp_out=8'b11111111;

3'b110:

disp_out=8'b11100111;

3'b111:

disp_out=8'b11100111;

endcase

endmodule

仿真图:

仿真分析:

由仿真图可知,在速度控制模块和分频器控制下,disp_out和en分别输出了11000011、11111110等不同的二进制数,可使8*8点阵上的led灯分别点亮或者熄灭,达到了显示字符的目的。

4.2.4顶层设计及仿真

4.3适配

1.器件选择:

所选器件为CycloneIIEP2C8Q208C8

2.引脚分配如下表所示:

NodeName

Direction

Location

clk

Input

IOBANK_1

k2

Input

PIN_E3

K3

Input

PIN_F9

dis_out[0]

Output

PIN_A7

dis_out[1]

Output

PIN_A13

dis_out[2]

Output

PIN_A5

dis_out[3]

Output

PIN_B6

dis_out[4]

Output

PIN_C4

dis_out[5]

Output

PIN_A9

dis_out[6]

Output

PIN_A8

dis_out[7]

Output

PIN_A10

en[0]

Output

PIN_C1

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

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

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

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