数字电子技术课程设计报告材料LED矩形点阵.doc
-
资源ID:13089
资源大小:520.50KB
全文页数:14页
- 资源格式: DOC
下载积分:10金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
数字电子技术课程设计报告材料LED矩形点阵.doc
word【设计题目】LED点阵循环显示设计【设计任务与要求】 利用EDA/SOPC试验开发平台提供的16*16点阵LED以与EP2C35核心板,实现循环显示设定容,显示容为自己的“学号名字。(1) 手动生成“学号这几个字符在16*16点阵LED上的字摸即控制某些LED亮,某些LED灭,可下载字摸软件帮助确定。(2) 实现循环显示“学号,并要求左移(3) 扩展要求:自主设计如控制循环速度,方向等。设计原理与方案:1、16*16点阵LED部结构如如下图所示。2、 总体设计框图。计数器列数据列选择系统时钟输入输出输出16*16点阵 FPGA3、 各子模块的设计:1分频,扫描module saomiao (clk_50Mhz,clk_1k); input clk_50Mhz; output clk_1k; reg24:0 t;reg clk_1k;always (posedge clk_50Mhz)begin if (t<25000) begin t<=t+1; clk_1k<=0; end else if(t<50000) begin t<=t+1; clk_1k<=1; end else t=0;endendmodule封装生成的模块如下:2分频,移动,控制速度module yidong (clk_50Mhz,clk_fourhz,k2,k3); input clk_50Mhz,k2,k3; / 输入端口声明output clk_fourhz; / 输出端口声明reg24:0 count,ccount;reg clk_fourhz;always (posedge clk_50Mhz)beginif (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<ccount)begincount<=count+1'b1;clk_fourhz<=0;endelsebegincount<=0;clk_fourhz<=1;endendendmodule封装生成的模块如下:3显示,控制输出,控制左右移动module xianshi(clk_saomiao,clk_pingyi,row,con,k);input clk_saomiao,clk_pingyi,k;output15:0 row;output15:0 con;reg15:0 row;reg15:0 con;integer t=0,b=0;reg15:0 r111:0;initial begin/ 学号:r0<=16'b1111_0111_1011_1111;r1<=16'b1111_0111_1101_1111; r2<=16'b1111_0000_0001_1111;r3<=16'b1111_0111_1111_1111;r4<=16'b1111_0111_1111_1111;r5<=16'b1111_1111_1111_1111;r6<=16'b1111_0111_0011_1111;r7<=16'b1111_0111_1101_1111; r8 <=16'b1111_0111_1101_1111;r9<=16'b1111_1000_0011_1111;r10<=16'b1111_1111_1111_1111;r11 <=16'b1111_1111_1111_1111;r12 <=16'b1111_1000_0011_1111;r13 <=16'b1111_0111_1101_1111;r14<=16'b1111_0111_1101_1111;r15 <=16'b1111_1000_0011_1111; /"100"r16 <=16'b1111_0111_1011_1111;r17 <=16'b1111_0111_1101_1111;r18 <=16'b1111_0000_0001_1111;r19 <=16'b1111_0111_1111_1111;r20 <=16'b111_0111_1111_1111;r21 <=16'b1111_1111_1111_1111;r22 <=16'b1111_0011_1011_1111;r23 <=16'b1111_0101_1101_1111; r24<=16'b1111_0110_1101_1111;r25<=16'b1111_0111_0011_1111; r26<=16'b1111_1111_1111_1111;r27<=16'b1111_1111_1111_1111;r28<=16'b1111_1011_0011_1111;r29<=16'b1111_0111_1101_1111;r30<=16'b1111_0111_1101_1111;r31<=16'b1111_1001_0011_1111; /"123"r32 <=16'b1111_1111_1111_1111;r33<=16'b1111_1111_1111_1111;r34<=16'b1110_1111_1111_1111;r35<=16'b1110_1111_1110_1111;r36<=16'b1110_1111_1111_0111;r37<=16'b1110_0000_0000_0111;r38<=16'b1110_1111_1111_1111;r39<=16'b1110_1111_1111_1111; r40<=16'b1111_1111_1111_1111;r41 <=16'b1110_1111_1111_1111; r42 <=16'b1110_1111_1110_1111;r43 <=16'b1110_1111_1111_0111;r44 <=16'b1110_0000_0000_0111;r45 <=16'b1110_1111_1111_1111;r46 <=16'b1111_1111_1111_1111; r47 <=16'b1111_1111_1111_1111; /"11"/:r48 <=16'b1111_1111_0110_1111; r49<=16'b1101_1111_0111_1111; r50<=16'b1110_1111_0111_1011; r51<=16'b1111_0111_0111_1011; r52<=16'b1111_1011_0111_1011; r53<=16'b1111_1101_0111_1011; r54<=16'b1111_1110_0111_1010; r55<=16'b0000_0000_0000_1001; r56 <=16'b1111_1110_0111_1011;r57 <=16'b1111_1101_0111_1011; r58 <=16'b1111_1011_0111_1011; r59 <=16'b1111_0111_0111_1011; r60 <=16'b1110_1111_0111_1011; r61 <=16'b1101_1111_0110_1011; r62 <=16'b1101_1111_0111_0011; r63 <=16'b1111_1111_1111_1111; r64<=16'b1111_1111_0111_1111; r65<=16'b1111_1111_1011_1111; r66<=16'b1111_1111_1101_1111; r67<=16'b0000_0000_0000_1111; r68<=16'b1111_1111_1111_0000; r69<=16'b1011_1111_1011_1111; r70<=16'b1011_1011_1011_0111; r71<=16'b1011_1011_1011_0111; r72 <=16'b1011_1011_1011_0111; r73<=16'b1000_0000_0000_0000; r74<=16'b1011_1011_1011_0111; r75 <=16'b1011_1011_1011_0111; r76 <=16'b1011_1011_1011_0111; r77 <=16'b1011_1011_1011_0111; r78<=16'b1011_1111_1011_1111; r79 <=16'b1111_1111_1111_1111; r80 <=16'b1111_1111_1111_1111;r81 <=16'b1011_1101_1111_1111; r82 <=16'b1100_1110_1111_1111; r83 <=16'b1111_1111_0111_0111; r84 <=16'b1111_1111_1011_0111; r85 <=16'b1110_1111_1101_1111; r86 <=16'b1001_1111_1110_0111; r87 <=16'b1111_0000_0000_0000; r88<=16'b1110_1111_1110_0111; r89<=16'b1001_1111_1101_0111; r90<=16'b1111_1111_1011_0111; r91<=16'b1111_1111_0111_0111; r92<=16'b1110_1110_1111_0111; r93<=16'b1001_1101_1111_0111; r94<=16'b1111_1101_1111_1111; r95<=16'b1111_1111_1111_1111; r96<=16'b1111_1111_1111_1111;r97<=16'b1111_1111_1111_1111; r98<=16'b1111_1111_1111_1111; r99<=16'b1111_1111_1111_1111; r100<=16'b1111_1111_1111_1111; r101<=16'b1111_1111_1111_1111; r102<=16'b1111_1111_1111_1111; r103<=16'b1111_1111_1111_1111; r104 <=16'b1111_1111_1111_1111; r105<=16'b1111_1111_1111_1111; r106<=16'b1111_1111_1111_1111; r107 <=16'b1111_1111_1111_1111; r108 <=16'b1111_1111_1111_1111; r109 <=16'b1111_1111_1111_1111; r110<=16'b1111_1111_1111_1111; r111 <=16'b1111_1111_1111_1111; end always(posedge clk_pingyi)begin if (k=0) /k值控制左右移动 begin if (b=95) b<=0; else b<=b+1; end else begin if (b=0) b<=96; else b<=b-1; end endalways(posedge clk_saomiao)begin if(t=15) begin t<=0; end else t<=t+1; case(t)0: con<=16'b0000_0000_0000_0001;1: con<=16'b0000_0000_0000_0010;2: con<=16'b0000_0000_0000_0100;3: con<=16'b0000_0000_0000_1000;4: con<=16'b0000_0000_0001_0000;5: con<=16'b0000_0000_0010_0000;6: con<=16'b0000_0000_0100_0000;7: con<=16'b0000_0000_1000_0000;8: con<=16'b0000_0001_0000_0000;9: con<=16'b0000_0010_0000_0000;10: con<=16'b0000_0100_0000_0000;11: con<=16'b0000_1000_0000_0000;12: con<=16'b0001_0000_0000_0000;13: con<=16'b0010_0000_0000_0000;14: con<=16'b0100_0000_0000_0000;15: con<=16'b1000_0000_0000_0000; endcase/行使能 case(t) 0: row<=rb+0; 1: row<=rb+1; 2: row<=rb+2; 3: row<=rb+3; 4: row<=rb+4; 5: row<=rb+5; 6: row<=rb+6; 7: row<=rb+7; 8: row<=rb+8; 9: row<=rb+9; 10: row<=rb+10; 11: row<=rb+11; 12: row<=rb+12; 13: row<=rb+13; 14: row<=rb+14; 15: row<=rb+15; endcaseendendmodule封装生成的模块如下:【电路设计、仿真与实现】(1) 电路设计将封装好的三个模块连接起来。电路如下:(2) 电路仿真扫描模块和移动模块实际上都是分频器,只是分频不一样,前者的分频后频率高看不到很明显地闪烁,后者低控制移动速度便于观察。这里只仿真分频器的功能如下10分频:字体显示模块的仿真如下,由于所给频率太高,分频又太大,仿真不易实现。本仿真的clk2取1ns,clk3取32ns,k取0进展左移。(3) 电路实现 将连接好的电路的输入和输出端分别用对应的FBGA管脚封装起来,便可以在实验室的平台上进展电路的实现了。【分析与讨论】 这次数电课程设计我一共去下载了三次,第一次的时候在那个模版上没有显示,只是看到了列的灯有亮的,回去检查的时候发现是扫描的频率太小了,之前设定的频率只有2Hz,这样的情况下每秒只会显示两列数据,不能得出所需要的显示。将扫描的频率改成10kHz后去下载的时候发现能够正常地循环显示了,这也完成了根本的设计。我中午回去后又对原有程序进展了改写,多加了三个输入端,其中两个输入端用来控制字幕移动的速度,另一个用来控制左右移动,编了一个中午,程序没有错误后,仍然有点忐忑的去下载quartus只能检查错误不能检验功能,而且这是最后一次下载机会了,不过去教师那里下载的时候,模版上正常循环我的学号名字显示,而且通过三个附加的输入端可以控制它的左右移动以与移动速度移动的速度共设定了4个,看到自己所编译的功能都实现后,心情还是很愉悦的。个人感觉整个编译过程中,写自己名字的二进制代码太费劲了。通过这次课程设计,我巩固了之前数电实验课上学的quartus的一些根本操作,并且会自己编写简单的verilog程序了,有些东西和我们之前学过的一些语言很是相像。最重要的还是我自己学会了如何将之前所学过的知识和查找的资料有机的融合在一起,并且得到自己想要的结果。非常感谢教师在我设计过程中的指导。【参考文献】 1 Verilog数字系统设计教程第2版(夏宇闻 ,航空航天大学出版 2 Verilog HDL入门(第3版)3 数字电子技术根底润华,于云华,中国石油大学,200814 / 14