中国石油大学数电课程设计报告题目:学院:班级:姓名:学号:日期: 2012 年 12月摘要设计要求:利用EDA/SOPC 实验开发平台提供的16*16点阵LED以及EPC235核心板,实现循环显示“中国石油大学”这6个汉字(左移或者右移均可)。
(1)手动生成“中国石油大学”这6个汉字在16*16点阵LED 上的6个字模(即控制某些LED亮,某些LED灭)。
(2)实现循环显示“中国石油大学”这6个汉字(左移或者右移均可)。
(3)拓展要求:自主设计(如控制循环速度,方向)。
关键词:扫描分频,控制速度,点阵,点阵汉字显示,设计原理及方案:1、16*16点阵LED内部结构如下图所示。
2、总体设计框图:3、各子模块的设计:(1)、分频,扫描:module fenpin (clk_50Mhz,clk_4hz,k2,k3);input clk_50Mhz,k2,k3; // 输入端口声明output clk_4hz; // 输出端口声明reg[24:0] count,ccount;reg clk_4hz;always @(posedge clk_50Mhz)beginif ((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<ccount)begincount<=count+1'b1;clk_4hz<=0;endelsebegincount<=0;clk_4hz<=1;endendendmodule生成模块:(2)扫描,控制速度:module sudu(clk,cnt);input clk;output cnt;reg cnt;reg[15:0] p;always@(posedge clk)beginif(p==16'b1111111111111111)begincnt<=1'b1;p<=16'b0000000000000000;endelsebeginp<=p+16'b1;cnt<=1'b0;endendendmodule生成模块:(3)显示汉字模块:module xianshi(clk2,clk3,row,con,k); input clk2,clk3,k;output[15:0] row;output[15:0] con;reg[15:0] row;reg[15:0] con;integer cnt,b;reg[15:0] r[111:0];initialbegin// 中r[0]<=16'b 1111111111111111;r[1]<=16'b 1111111111111111;r[2]<=16'b 1111100000011111;r[3]<=16'b 1111101111011111;r[4]<=16'b 1111101111011111;r[5]<=16'b 1111101111011111;r[6]<=16'b 1111101111011111;r[7]<=16'b 1000000000000001;r[8]<=16'b 1111101111011111;r[9]<=16'b 1111101111011111;r[10] <=16'b 1111101111011111; r[11] <=16'b 1111101111011111; r[12] <=16'b 1111100000011111; r[13] <=16'b 1111111111111111; r[14] <=16'b 1111111111111111; r[15] <=16'b 1111111111111111;// 国r[16] <=16'b 1111111111111111;r[18] <=16'b 1100000000000111; r[19] <=16'b 1101111111110111; r[20] <=16'b 1101011011010111; r[21] <=16'b 1101011011010111; r[22] <=16'b 1101011011010111; r[23] <=16'b 1101000000010111; r[24] <=16'b 1101011011010111; r[25] <=16'b 1101011011010111; r[26] <=16'b 1101001011010111; r[27] <=16'b 1101011011010111; r[28] <=16'b 1101111111110111; r[29] <=16'b 1100000000000111; r[30] <=16'b 1111111111111111; r[31] <=16'b 1111111111111111;// 石r[32] <=16'b 1111111111111111; r[33] <=16'b 1111111111111111; r[34] <=16'b 1110111111110111; r[35] <=16'b 1111011111110111;r[37] <=16'b 1111110111110111; r[38] <=16'b 1110100001110111; r[39] <=16'b 1110111100110111; r[40] <=16'b 1110111101010111; r[41] <=16'b 1110111101100111; r[42] <=16'b 1110111101100111; r[43] <=16'b 1110000001110111; r[44] <=16'b 1111111111110111; r[45] <=16'b 1111111111110111; r[46] <=16'b 1111111111111111; r[47] <=16'b 1111111111111111;// 油r[48] <=16'b 1111111111111111; r[49] <=16'b 1111111111111111; r[50] <=16'b 1111111011101111; r[51] <=16'b 1000000111011111; r[52] <=16'b 1111101110111111; r[53] <=16'b 1111111111111111; r[54] <=16'b 1100000001111111;r[56] <=16'b 1101101101111111; r[57] <=16'b 1100000000000111; r[58] <=16'b 1101101101111111; r[59] <=16'b 1101101101111111; r[60] <=16'b 1100000001111111; r[61] <=16'b 1111111111111111; r[62] <=16'b 1111111111111111; r[63] <=16'b 1111111111111111;// 大r[64] <=16'b 1111111111111111; r[65] <=16'b 1101111111111111; r[66] <=16'b 1110111111111111; r[67] <=16'b 1110111110111111; r[68] <=16'b 1111011110111111; r[69] <=16'b 1111101110111111; r[70] <=16'b 1111110010111111; r[71] <=16'b 1111111100001111; r[72] <=16'b 1111110010111111; r[73] <=16'b 1111101110111111;r[75] <=16'b 1110111110111111; r[76] <=16'b 1110111111111111; r[77] <=16'b 1101111111111111; r[78] <=16'b 1111111111111111; r[79] <=16'b 1111111111111111;// 学r[80] <=16'b 1111111111111111; r[81] <=16'b 1111111111111111; r[82] <=16'b 1111111101111111; r[83] <=16'b 1111011110111111; r[84] <=16'b 1111011111011101; r[85] <=16'b 1111011011010011; r[86] <=16'b 1011011011011101; r[87] <=16'b 1000001011010011; r[88] <=16'b 1111010011011111; r[89] <=16'b 1111011011000111; r[90] <=16'b 1111011111011001; r[91] <=16'b 1111011101011111; r[92] <=16'b 1111111110011111;r[94] <=16'b 1111111111111111; r[95] <=16'b 1111111111111111;// 中r[96] <=16'b 1111111111111111; r[97] <=16'b 1111111111111111; r[98] <=16'b 1111100000011111; r[99] <=16'b 1111101111011111; r[100] <=16'b 1111101111011111; r[101] <=16'b 1111101111011111; r[102] <=16'b 1111101111011111; r[103] <=16'b 1000000000000001; r[104] <=16'b 1111101111011111; r[105] <=16'b 1111101111011111; r[106] <=16'b 1111101111011111; r[107] <=16'b 1111101111011111; r[108] <=16'b 1111100000011111; r[109] <=16'b 1111111111111111; r[110] <=16'b 1111111111111111; r[111] <=16'b 1111111111111111;endalways@(posedge clk3) beginif (k==0)beginif (b==95)b<=0;elseb<=b+1;endelsebeginif (b==0)b<=95;elseb<=b-1;endendalways@(posedge clk2) beginif(cnt==15)begincnt<=0;endelsecnt<=cnt+1;case(cnt)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//行使能if (k==0)begincase(cnt)0: row<=r[b+0];1: row<=r[b+1];2: row<=r[b+2];3: row<=r[b+3];4: row<=r[b+4];5: row<=r[b+5];6: row<=r[b+6];7: row<=r[b+7];8: row<=r[b+8];9: row<=r[b+9];11: row<=r[b+11]; 12: row<=r[b+12]; 13: row<=r[b+13]; 14: row<=r[b+14]; 15: row<=r[b+15];endcaseendelse begincase(cnt)0: row<=r[b-0]; 1: row<=r[b-1]; 2: row<=r[b-2]; 3: row<=r[b-3]; 4: row<=r[b-4]; 5: row<=r[b-5]; 6: row<=r[b-6]; 7: row<=r[b-7]; 8: row<=r[b-8]; 9: row<=r[b-9]; 10: row<=r[b-10]; 11: row<=r[b-11];13: row<=r[b-13];14: row<=r[b-14];15: row<=r[b-15];endcaseendendendmodule生成模块:电路的仿真:分析与总结:这次数点实习我去测试了俩次,第一次测试时,什么现象都没有,我回去后反复检查,程序都没有问题,后来我觉得可能是我生成模块时,全都放在一个文件夹里,混乱了。