跑马灯控制电路设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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)

begin

if(rst) begin cnt1<=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;

cnt1<=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

cnt2<=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

cnt2<=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

cnt3<=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

cnt3<=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

四、系统调试与结果

1、LED灯和波形结果显示结果如图2,3,4,5,6,7所示

相关文档
最新文档