Verilog程序汉字点阵显示.docx
- 文档编号:27328416
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:15
- 大小:374.31KB
Verilog程序汉字点阵显示.docx
《Verilog程序汉字点阵显示.docx》由会员分享,可在线阅读,更多相关《Verilog程序汉字点阵显示.docx(15页珍藏版)》请在冰豆网上搜索。
Verilog程序汉字点阵显示
Verilog程序汉字点阵显示(总18页)
中国石油大学
课程设计报告
题目:
“中国石油大学”点阵循环显示
学院:
地球科学与技术学院
班级:
姓名:
学号:
日期:
2012年1月
摘要
设计要求:
利用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)、分频,扫描:
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<=0;
if((k2==0)&&(k3==1))
ccount<=0;
if((k2==1)&&(k3==0))
ccount<=;
if((k2==1)&&(k3==1))
ccount<=;
if(count begin count<=count+1'b1; clk_4hz<=0; end else begin count<=0; clk_4hz<=1; end end endmodule 生成模块: (2)扫描,控制速度: modulesudu(clk,cnt); inputclk; outputcnt; regcnt; reg[15: 0]p; always@(posedgeclk) begin if(p==16'b111) begin cnt<=1'b1; p<=16'b0000000000000000; end else begin p<=p+16'b1; cnt<=1'b0; end end endmodule 生成模块: (3)显示汉字模块: modulexianshi(clk2,clk3,row,con,k); inputclk2,clk3,k; output[15: 0]row; output[15: 0]con; reg[15: 0]row; reg[15: 0]con; integercnt,b; reg[15: 0]r[111: 0]; initial begin //中 r[0]<=16'b111; r[1]<=16'b111; r[2]<=16'b111; r[3]<=16'b111; r[4]<=16'b111; r[5]<=16'b111; r[6]<=16'b111; r[7]<=16'b001; r[8]<=16'b111; r[9]<=16'b111; r[10]<=16'b111; r[11]<=16'b111; r[12]<=16'b111; r[13]<=16'b111; r[14]<=16'b111; r[15]<=16'b111; //国 r[16]<=16'b111; r[17]<=16'b111; r[18]<=16'b111; r[19]<=16'b111; r[20]<=16'b111; r[21]<=16'b111; r[22]<=16'b111; r[23]<=16'b111; r[24]<=16'b111; r[25]<=16'b111; r[26]<=16'b111; r[27]<=16'b111; r[28]<=16'b111; r[29]<=16'b111; r[30]<=16'b111; r[31]<=16'b111; //石 r[32]<=16'b111; r[33]<=16'b111; r[34]<=16'b111; r[35]<=16'b111; r[36]<=16'b111; r[37]<=16'b111; r[38]<=16'b111; r[39]<=16'b111; r[40]<=16'b111; r[41]<=16'b111; r[42]<=16'b111; r[43]<=16'b111; r[44]<=16'b111; r[45]<=16'b111; r[46]<=16'b111; r[47]<=16'b111; //油 r[48]<=16'b111; r[49]<=16'b111; r[50]<=16'b111; r[51]<=16'b111; r[52]<=16'b111; r[53]<=16'b111; r[54]<=16'b111; r[55]<=16'b111; r[56]<=16'b111; r[57]<=16'b111; r[58]<=16'b111; r[59]<=16'b111; r[60]<=16'b111; r[61]<=16'b111; r[62]<=16'b111; r[63]<=16'b111; //大 r[64]<=16'b111; r[65]<=16'b111; r[66]<=16'b111; r[67]<=16'b111; r[68]<=16'b111; r[69]<=16'b111; r[70]<=16'b111; r[71]<=16'b111; r[72]<=16'b111; r[73]<=16'b111; r[74]<=16'b111; r[75]<=16'b111; r[76]<=16'b111; r[77]<=16'b111; r[78]<=16'b111; r[79]<=16'b111; //学 r[80]<=16'b111; r[81]<=16'b111; r[82]<=16'b111; r[83]<=16'b111; r[84]<=16'b101; r[85]<=16'b011; r[86]<=16'b101; r[87]<=16'b011; r[88]<=16'b111; r[89]<=16'b111; r[90]<=16'b001; r[91]<=16'b111; r[92]<=16'b111; r[93]<=16'b111; r[94]<=16'b111; r[95]<=16'b111; //中 r[96]<=16'b111; r[97]<=16'b111; r[98]<=16'b111; r[99]<=16'b111; r[100]<=16'b111; r[101]<=16'b111; r[102]<=16'b111; r[103]<=16'b001; r[104]<=16'b111; r[105]<=16'b111; r[106]<=16'b111; r[107]<=16'b111; r[108]<=16'b111; r[109]<=16'b111; r[110]<=16'b111; r[111]<=16'b111; end always@(posedgeclk3) begin if(k==0) begin if(b==95) b<=0; else b<=b+1; end else begin if(b==0) b<=95; else b<=b-1; end end always@(posedgeclk2) begin if(cnt==15) begin cnt<=0; end else cnt<=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) begin case(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]; 12: row<=r[b+12]; 13: row<=r[b+13]; 14: row<=r[b+14]; 15: row<=r[b+15]; endcase end elsebegin case(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]; 12: row<=r[b-12]; 13: row<=r[b-13]; 14: row<=r[b-14]; 15: row<=r[b-15]; endcase end end endmodule 生成模块: 电路的仿真: 分析与总结: 这次数点实习我去测试了俩次,第一次测试时,什么现象都没有,我回去后反复检查,程序都没有问题,后来我觉得可能是我生成模块时,全都放在一个文件夹里,混乱了。 所以我又重新生成模块,规规矩矩的连了一遍,第二次去测试时,成功了。 看着自己实验出来的效果真是特别的高兴。 通过这次课程设计,我学会了基本的的quartusⅡ操作,会自己编写简单的verilog程序。 最受益的是学会了如何将自己所学过的知识和查找的资料有机的融合在一起。 真是受益匪浅。 参考资料: [1]Verilog数字系统设计教程(第2版)(夏宇闻,北京航空航天大学出版) [2]VerilogHDL入门(第3版) [3]数字电子技术基础(刘润华,于云华,中国石油大学出版社,2008)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Verilog 程序 汉字 点阵 显示