跑马灯控制电路设计
- 格式:doc
- 大小:1.46 MB
- 文档页数:11
. ..
z HDL数字系统课程设计报告书
目录
一、设计目的 .......................................... 3
二、设计思路 .......................................... 3
三、设计过程 .......................................... 3
3.1、系统方案论证 .................................. 3
3.2、程序代码设计 .................................. 4
四、系统调试与结果 .................................... 6
五、主要元器件与设备 ................................. 10
六、课程设计体会与建议 ............................... 10
6.1、设计体会 ..................................... 10
6.2、设计建议 ..................................... 10
七、参考文献 ............................................ 11
. ..
z
论文摘要:
共16个LED灯,连成一排,实现几种灯的组合显示。通过这次对跑马灯控制电路的设计与制作,了解了设计电路的程序,也了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。此外,本实验也可通过EDA软件Quartus6.0和modelSim SE 6.0实现。
关键词: HDL 数字系统 跑马灯 设计
. ..
z
一、设计目的
1、熟悉Verilog HDL程序编程。
2、掌握Altera公司ACEXTM系列EPEK30QC208-2芯片的使用方法。
3、熟悉Quartus II 6.0和Modesim SE 6.0软件的使用。
4、了解16个数码管的显示原理和方法。
二、设计思路
1、编写跑马灯设计程序。
2、定义LED灯引脚分配。
3、设计状态控制。
4、下载到EPEK30QC208-2芯片上显示。
三、设计过程
3.1、系统方案论证
16位LED跑马灯设计框图如图1所示: 状
态
控
制
LED按奇数,偶数依次显示
LED由两侧向中间依次显示,由中间向两侧依次熄灭 EPEK30QC208-2芯片实现 LED顺序依次显示,顺序依次熄灭
系统时钟
. ..
z
图1 LED跑马灯设计框图
3.2、程序代码设计
module paomadeng(rst,clk,sel,led); //端口定义,参数列表
input rst,clk; //rst复位,clk为4Hz的时钟信号
input[1:0] sel; //sel 状态选择端口
output[15:0] led; //led 跑马灯显示
reg[15:0] led;
reg[15:0] led_r,led_r1;
regt1,dir; //cnt1控制状态2 led灯的亮次数
reg[3:0]t2; //cnt2控制状态2 led灯的亮次数
reg[2:0]t3; //cnt3控制状态2 led灯的亮次数
always(posedge clk)
begin
if(rst) begint1<=0;cnt2<=0;cnt3<=0;dir<=0;end
else
case(sel)
// LED按奇数,偶数依次显示
2'b00:
begin
led_r=16'b0101010101010101;
if(cnt1==0)led<=led_r;
else led<=led_r<<1;
t1<=cnt1+1;
end
// LED顺序依次显示,顺序依次熄灭
2'b01:
begin
if(!dir)
begin
if(cnt2==0) begin led_r=16'b0000000000000001;led<=led_r;end
else begin led<=(led<<1)+led_r;end
if(cnt2==15) begin dir<=~dir;end
. ..
z t2<=cnt2+1;
end
else
begin
if(cnt2==0) begin led_r=16'b1111111111111110;led<=led_r;end
else begin led<=led<<1; end
if(cnt2==15) begin dir<=~dir;end
t2<=cnt2+1;
end
end
// LED由两侧向中间依次显示,由中间向两侧依次熄灭
2'b11:
begin
if(!dir)
begin
if(cnt3==0) begin
led_r=16'b0000000000000001;
led_r1=16'b1000000000000000;end
else
begin led_r=(led_r<<1)|led_r;
led_r1=(led_r1>>1)|led_r1;end
led<=led_r|led_r1;
if(cnt3==7)begin dir<=~dir;end
t3<=cnt3+1;
end
else
begin
if(cnt3==0) begin led_r=16'b1111111111111110;
led_r1=16'b0111111111111111;end
else
begin led_r=led_r<<1;led_r1=led_r1>>1;end
led<=led_r&led_r1;
if(cnt3==7)begin dir<=~dir;end
t3<=cnt3+1;
. ..
z end
end
default: ;
endcase
end
endmodule
引脚分配:
to,location
rst, pin_47 //复位引脚
clk, pin_79 //时钟控制引脚
sel[0], pin_45 //状态控制引脚
sel[1], pin_46 //状态控制引脚
led[0], pin_19 //0—15个LED灯显示引脚
led[1], pin_24
led[2], pin_25
led[3], pin_26
led[4], pin_27
led[5], pin_28
led[6], pin_29
led[7], pin_30
led[8], pin_31
led[9], pin_36
led[10], pin_37
led[11], pin_38
led[12], pin_39
led[13], pin_40
led[14], pin_41
led[15], pin_44
四、系统调试与结果
1、LED灯和波形结果显示结果如图2,3,4,5,6,7所示
. ..
z
图2、先奇数灯亮,即第1、3、5、7、9、11、13、15灯亮
图3、偶数灯亮,即第2、4、6、8、10、12、14、16灯亮
图4、按照1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16的顺序依次点亮
. ..
z
图5、按照1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16的顺序依次熄灭所有灯
图6按照1/16、2/15、3/14、4/13、5/12、6/11、7/10、8/9的顺序依次点亮
图7、按照1/16、2/15、3/14、4/13、5/12、6/11、7/10、8/9的顺序依次熄