当前位置:文档之家› 跑马灯控制电路设计

跑马灯控制电路设计

HDL数字系统课程设计报告书目录一、设计目的 (2)二、设计思路 (2)三、设计过程 (2)3.1、系统方案论证 (2)3.2、程序代码设计 (3)四、系统调试与结果 (5)五、主要元器件与设备 (9)六、课程设计体会与建议 (9)6.1、设计体会 (9)6.2、设计建议 (10)七、参考文献 (10)论文摘要:共16个LED灯,连成一排,实现几种灯的组合显示。

通过这次对跑马灯控制电路的设计与制作,了解了设计电路的程序,也了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。

此外,本实验也可通过EDA软件Quartus6.0和modelSim SE 6.0实现。

关键词: HDL 数字系统跑马灯设计一、设计目的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所示:图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;reg cnt1,dir; //cnt1控制状态2 led灯的亮次数reg[3:0] cnt2; //cnt2控制状态2 led灯的亮次数reg[2:0] cnt3; //cnt3控制状态2 led灯的亮次数always@(posedge clk)beginif(rst) begin cnt1<=0;cnt2<=0;cnt3<=0;dir<=0;endelsecase(sel)// LED按奇数,偶数依次显示2'b00:beginled_r=16'b0101010101010101;if(cnt1==0)led<=led_r;else led<=led_r<<1;cnt1<=cnt1+1;end// LED顺序依次显示,顺序依次熄灭2'b01:beginif(!dir)beginif(cnt2==0) begin led_r=16'b0000000000000001;led<=led_r;end else begin led<=(led<<1)+led_r;endif(cnt2==15) begin dir<=~dir;endcnt2<=cnt2+1;endelsebeginif(cnt2==0) begin led_r=16'b1111111111111110;led<=led_r;end else begin led<=led<<1; endif(cnt2==15) begin dir<=~dir;endcnt2<=cnt2+1;endend// LED由两侧向中间依次显示,由中间向两侧依次熄灭2'b11:beginif(!dir)beginif(cnt3==0) beginled_r=16'b0000000000000001;led_r1=16'b1000000000000000;endelsebegin led_r=(led_r<<1)|led_r;led_r1=(led_r1>>1)|led_r1;endled<=led_r|led_r1;if(cnt3==7)begin dir<=~dir;endcnt3<=cnt3+1;endelsebeginif(cnt3==0) begin led_r=16'b1111111111111110;led_r1=16'b0111111111111111;endelsebegin led_r=led_r<<1;led_r1=led_r1>>1;endled<=led_r&led_r1;if(cnt3==7)begin dir<=~dir;endcnt3<=cnt3+1;endenddefault: ;endcaseendendmodule引脚分配:to,locationrst, pin_47 //复位引脚clk, pin_79 //时钟控制引脚sel[0], pin_45 //状态控制引脚sel[1], pin_46 //状态控制引脚led[0], pin_19//0—15个LED灯显示引脚led[1], pin_24led[2], pin_25led[3], pin_26led[4], pin_27led[5], pin_28led[6], pin_29led[7], pin_30led[8], pin_31led[9], pin_36led[10], pin_37led[11], pin_38led[12], pin_39led[13], pin_40led[14], pin_41led[15], pin_44四、系统调试与结果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,ModelSim SE 6.0分频芯片: SN74HC04N—2,SN74LS393N—4片LED灯 16个LED灯,电脑一台六、课程设计体会与建议6.1、设计体会通过这次对跑马灯控制电路的设计与制作,让我了解了设计电路的程序,也让我了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。

但是最后的成品却不一定与仿真时完全一样,因为,电路模拟与仿真是在理想的环境下,在实际中因为芯片本身的特性而能够成功。

所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。

此外,本实验也可通过EDA软件Quartus6.0和modelSim SE 6.0实现。

通过这次学习,让我对各种电路的设计和控制都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。

6.2、设计建议我希望老师在我们动手制作之前应先告诉我们一些关于所做电路的资料、原理,以及如何检测电路的方法,还有关于检测芯片的方法。

这样会有助于我们进一步的进入状态,完成设计。

七、参考文献[1][美].Palnitkar.VerilogHDL数字设计与综合.北京:电子工业出版社,2010年;[2]袁俊泉.verilog HDL数字系统设计及其应用.西安:西安电子科技大学出版社,2003年;[3]黄继业.EDA技术实验教程.北京:科学出版社.[4]夏宇闻.verilog数字系统设计教程.北京:北京航空航天大学出版社,2008年;[5]贺敬凯.基于FPGA的专用CPU的设计.深圳: 深圳信息职业技术学院学报,2008年;[6]潘松.EDA技术与VHDL.北京:清华大学出版社,2007年;[7] 贺敬凯. verilog HDL数字设计教程.西安:西安电子科技大学出版社,2010年;[8]李洪伟.基于QuartusⅡ的FPGA/CPLD设计.北京:电子工业出版社,2010年.。

相关主题