1、 【设计题目】【设计题目】 LED 点阵循环显示设计 【设计任务及要求】【设计任务及要求】 利用 EDA/SOPC 试验开发平台提供的 16*16 点阵 LED 以及 EP2C35 核心板,实现循环显示设定内容,显示内容为自己的“学号 名字” 。 (1) 手动生成“学号姓名”这几个字符在 16*16 点阵 LED 上的字 摸(即控制某些 LED 亮,某些 LED 灭,可下载字摸软件帮助确定) 。 (2) 实现循环显示“学号姓名” ,并要求左移 (3) 扩展要求:自主设计(如控制循环速度,方向等) 。 设计原理及方案:设计原理及方案: 1、16*16 点阵点阵 LED 内部结构如下图所示内部结构
2、如下图所示。 2、总总体设计框图。体设计框图。 计数器计数器 列数据列数据 列选择列选择 FPGA 3、各子模块的设计:各子模块的设计: (1)分频,扫描)分频,扫描 module saomiao (clk_50Mhz,clk_1k); input clk_50Mhz; output clk_1k; reg24:0 cnt; reg clk_1k; always (posedge clk_50Mhz) begin if (cnt25000) begin cnt=cnt+1; clk_1k=0; end else if(cnt50000) begin cnt=cnt+1; clk_1k=1; 1
3、6*16点阵点阵 系统时钟系统时钟输入输入 输出输出 输出输出 end else cnt=0; end endmodule 封装生成的模块如下: (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) begin if (k2=0) if (k2=0) if (k2=
4、1) if (k2=1) if(countccount) begin count=count+1b1; 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; output15:0 row; output15:0 con; reg15:0 row; reg15:0
5、 con; integer cnt=0,b=0; reg15:0 r111:0; initial begin / 学号: r0=16b1111_0111_1011_1111; r1=16b1111_0111_1101_1111; r2=16b1111_0000_0001_1111; r3=16b1111_0111_1111_1111; r4=16b1111_0111_1111_1111; r5=16b1111_1111_1111_1111; r6=16b1111_0111_0011_1111; r7=16b1111_0111_1101_1111; r8 =16b1111_0111_1101_1
6、111; r9=16b1111_1000_0011_1111; r10=16b1111_1111_1111_1111; r11 =16b1111_1111_1111_1111; r12 =16b1111_1000_0011_1111; r13 =16b1111_0111_1101_1111; r14=16b1111_0111_1101_1111; r15 =16b1111_1000_0011_1111; /“100“ r16 =16b1111_0111_1011_1111; r17 =16b1111_0111_1101_1111; r18 =16b1111_0000_0001_1111; r19 =16b1111_0111_1111_1111; r20 =16b111_0111_1111_1111; r21 =1