fpga8x8点阵.docx
《fpga8x8点阵.docx》由会员分享,可在线阅读,更多相关《fpga8x8点阵.docx(11页珍藏版)》请在冰豆网上搜索。
![fpga8x8点阵.docx](https://file1.bdocx.com/fileroot1/2022-10/9/f443e300-cfc6-40a6-8408-70174e4f6a57/f443e300-cfc6-40a6-8408-70174e4f6a571.gif)
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(countbegin
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