数字电子技术课程设计报告材料(LED矩形点阵)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【设计题目】LED点阵循环显示设计
【设计任务及要求】
利用EDA/SOPC试验开发平台提供的16*16点阵LED以及EP2C35核心板,实现循环显示设定容,显示容为自己的“学号名字”。
(1)手动生成“学号”这几个字符在16*16点阵LED上的字摸(即控制某些LED亮,某些LED灭,可下载字摸软件帮助确定)。(2)实现循环显示“学号”,并要求左移
(3)扩展要求:自主设计(如控制循环速度,方向等)。
设计原理及方案:
1、16*16点阵LED部结构如下图所示。
2、总体设计框图。
FPGA
3、各子模块的设计:
(1)分频,扫描
module saomiao (clk_50Mhz,clk_1k); input clk_50Mhz;
output clk_1k;
reg[24:0] cnt;
reg clk_1k;
always (posedge clk_50Mhz)
begin
if (cnt<25000)
begin
cnt<=cnt+1;
clk_1k<=0;
end
else if(cnt<50000)
begin
cnt<=cnt+1;
clk_1k<=1;
end
else cnt=0;
end
endmodule
封装生成的模块如下:
(2)分频,移动,控制速度
module yidong (clk_50Mhz,clk_fourhz,k2,k3);
input clk_50Mhz,k2,k3; // 输入端口声明output clk_fourhz; // 输出端口声明
reg[24:0] count,ccount;
reg clk_fourhz;
always (posedge clk_50Mhz)
begin
if ((k2==0) && (k3==0))
ccount<=50000000;
if ((k2==0) && (k3==1))
ccount<=100000000;
if ((k2==1) && (k3==0))
ccount<=5000000;
if ((k2==1) && (k3==1))
ccount<=10000000;
if(count begin count<=count+1'b1; clk_fourhz<=0; end else begin count<=0; clk_fourhz<=1; end end endmodule 封装生成的模块如下: (3)显示,控制输出,控制左右移动 module xianshi(clk_saomiao,clk_pingyi,row,con,k); input clk_saomiao,clk_pingyi,k; output[15:0] row; output[15:0] con; reg[15:0] row; reg[15:0] con; integer cnt=0,b=0; reg[15:0] r[111:0]; initial begin // 学号: r[0]<=16'b1111_0111_1011_1111; r[1]<=16'b1111_0111_1101_1111; r[2]<=16'b1111_0000_0001_1111; r[3]<=16'b1111_0111_1111_1111; r[4]<=16'b1111_0111_1111_1111; r[5]<=16'b1111_1111_1111_1111; r[6]<=16'b1111_0111_0011_1111; r[7]<=16'b1111_0111_1101_1111; r[8] <=16'b1111_0111_1101_1111; r[9]<=16'b1111_1000_0011_1111; r[10]<=16'b1111_1111_1111_1111; r[11] <=16'b1111_1111_1111_1111; r[12] <=16'b1111_1000_0011_1111; r[13] <=16'b1111_0111_1101_1111; r[15] <=16'b1111_1000_0011_1111; //"100" r[16] <=16'b1111_0111_1011_1111; r[17] <=16'b1111_0111_1101_1111; r[18] <=16'b1111_0000_0001_1111; r[19] <=16'b1111_0111_1111_1111; r[20] <=16'b111_0111_1111_1111; r[21] <=16'b1111_1111_1111_1111; r[22] <=16'b1111_0011_1011_1111; r[23] <=16'b1111_0101_1101_1111; r[24]<=16'b1111_0110_1101_1111; r[25]<=16'b1111_0111_0011_1111; r[26]<=16'b1111_1111_1111_1111; r[27]<=16'b1111_1111_1111_1111; r[28]<=16'b1111_1011_0011_1111; r[29]<=16'b1111_0111_1101_1111; r[30]<=16'b1111_0111_1101_1111; r[31]<=16'b1111_1001_0011_1111; //"123" r[32] <=16'b1111_1111_1111_1111; r[33]<=16'b1111_1111_1111_1111;