Verilog程序(汉字点阵显示
- 格式:doc
- 大小:1.25 MB
- 文档页数:18
中国石油大学
数电课程设计报告题目:
学院:
班级:
姓名:
学号:
日期: 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)
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(count begin count<=count+1'b1; clk_4hz<=0; end else begin count<=0; clk_4hz<=1; end end endmodule 生成模块: (2)扫描,控制速度: module sudu(clk,cnt); input clk; output cnt; reg cnt; reg[15:0] p; always@(posedge clk) begin if(p==16'b1111111111111111) begin cnt<=1'b1; p<=16'b0000000000000000; end else begin p<=p+16'b1; cnt<=1'b0; end end endmodule 生成模块: (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]; initial begin // 中 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;