跑马灯控制电路设计.docx
《跑马灯控制电路设计.docx》由会员分享,可在线阅读,更多相关《跑马灯控制电路设计.docx(10页珍藏版)》请在冰豆网上搜索。
跑马灯控制电路设计
HDL数字系统课程设计报告书
论文摘要:
共16个LED灯,连成一排,实现几种灯的组合显示。
通过这次对跑马灯控制电路的设计与制作,了解了设计电路的程序,也了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。
此外,本实验也可通过EDA软件Quartus6.0和modelSimSE6.0实现。
关键词:
HDL数字系统跑马灯设计
1、设计目的
1、熟悉VerilogHDL程序编程。
2、掌握Altera公司ACEXTM系列EPEK30QC208-2芯片的使用方法。
3、熟悉QuartusII6.0和ModesimSE6.0软件的使用。
4、了解16个数码管的显示原理和方法。
二、设计思路
1、编写跑马灯设计程序。
2、定义LED灯引脚分配。
3、设计状态控制。
4、下载到EPEK30QC208-2芯片上显示。
3、设计过程
3.1、系统方案论证
16位LED跑马灯设计框图如图1所示:
图1LED跑马灯设计框图
3.2、程序代码设计
modulepaomadeng(rst,clk,sel,led);//端口定义,参数列表
inputrst,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控制状态2led灯的亮次数
reg[3:
0]t2;//cnt2控制状态2led灯的亮次数
reg[2:
0]t3;//cnt3控制状态2led灯的亮次数
always(posedgeclk)
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;
elseled<=led_r<<1;
t1<=cnt1+1;
end
//LED顺序依次显示,顺序依次熄灭
2'b01:
begin
if(!
dir)
begin
if(cnt2==0)beginled_r=16'b0000000000000001;led<=led_r;end
elsebeginled<=(led<<1)+led_r;end
if(cnt2==15)begindir<=~dir;end
t2<=cnt2+1;
end
else
begin
if(cnt2==0)beginled_r=16'b1111111111111110;led<=led_r;end
elsebeginled<=led<<1;end
if(cnt2==15)begindir<=~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
beginled_r=(led_r<<1)|led_r;
led_r1=(led_r1>>1)|led_r1;end
led<=led_r|led_r1;
if(cnt3==7)begindir<=~dir;end
t3<=cnt3+1;
end
else
begin
if(cnt3==0)beginled_r=16'b1111111111111110;
led_r1=16'b0111111111111111;end
else
beginled_r=led_r<<1;led_r1=led_r1>>1;end
led<=led_r&led_r1;
if(cnt3==7)begindir<=~dir;end
t3<=cnt3+1;
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
4、系统调试与结果
1、LED灯和波形结果显示结果如图2,3,4,5,6,7所示
图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的顺序依次点亮
图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的顺序依次熄灭灯波形显示:
图8、LED灯按先奇数,偶数灯亮
图9、LED灯依次按顺次亮,顺次熄灭
图10,LED灯依次从两边向中间亮,两边向中间熄灭
五、主要元器件与设备
EDA技术试验箱,EDA软件QuartusⅡ6.0,ModelSimSE6.0
分频芯片:
SN74HC04N—2,SN74LS393N—4片
LED灯16个LED灯,电脑一台
六、课程设计体会与建议
6.1、设计体会
通过这次对跑马灯控制电路的设计与制作,让我了解了设计电路的程序,也让我了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。
但是最后的成品却不一定与仿真时完全一样,因为,电路模拟与仿真是在理想的环境下,在实际中因为芯片本身的特性而能够成功。
所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。
此外,本实验也可通过EDA软件Quartus6.0和modelSimSE6.0实现。
通过这次学习,让我对各种电路的设计和控制都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。
6.2、设计建议
我希望老师在我们动手制作之前应先告诉我们一些关于所做电路的资料、原理,以及如何检测电路的方法,还有关于检测芯片的方法。
这样会有助于我们进一步的进入状态,完成设计。
七、参考文献
[1][美].Palnitkar.VerilogHDL数字设计与综合.:
电子工业出版社,2010年;
[2]袁俊泉.verilogHDL数字系统设计及其应用.:
西安电子科技大学出版社,2003年;
[3]黄继业.EDA技术实验教程.:
科学出版社.
[4]夏宇闻.verilog数字系统设计教程.:
北京航空航天大学出版社,2008年;
[5]贺敬凯.基于FPGA的专用CPU的设计.:
深圳信息职业技术学院学报,2008年;
[6]潘松.EDA技术与VHDL.:
清华大学出版社,2007年;
[7]贺敬凯.verilogHDL数字设计教程.:
西安电子科技大学出版社,2010年;
[8]李洪伟.基于QuartusⅡ的FPGA/CPLD设计.:
电子工业出版社,2010年.