您的当前位置:首页正文

EDA课程设计之八路彩灯控制系统方案

2020-10-30 来源:步旅网
. . .. . .

目 录

1前言 ....................................................................................................................... 2 2 总体方案设计 ...................................................................................................... 3

2.1方案比较 ........................................................................................................................ 3 2.2方案论述 ........................................................................................................................ 4 2.3方案选择 ........................................................................................................................ 4 3单元模块设计 ....................................................................................................... 5

3.1时钟信号模块 ............................................................................................................... 5 3.2节拍快慢控制模块 ...................................................................................................... 6 3.3彩灯控花型控制模块 ................................................................................................. 7 4软件设计 ............................................................................................................... 9

4.1 Quartus Ⅱ简介 .......................................................................................................... 9 4.2 Qartus Ⅱ设计开发流程 ........................................................................................ 10 5系统调试 ............................................................................................................. 11 6系统功能及指标参数 .......................................................................................... 12 7设计总结与体会 .................................................................................................. 13 8参考文献 ............................................................................................................. 14 附录1总设计图及仿真图 ..................................................................................... 15 附录2 Verilog HDL源程序 ................................................................................. 16

. 专业 专注 .

. . .. . .

1前言

在经济和商业高度发达的今天,彩灯已经成为人民日常生活不可或缺的一部分,已经逐渐为越来越多的人们所关注,在家庭中的普及率不断提高,大大的丰富和点缀了人民的生活。彩灯由不同的颜色的LED灯组成,通过控制不同颜色的灯的亮与灭,呈现给人们不同的花塑和图案,极大的点缀了单调的都市夜景,让城市成为了多姿多彩的不夜城。

当今社会是数字化的社会,也是数字集成电路广泛应用的社会,数字本身在不断的进行更新换代。它由早起的电子管、晶体管、小中规模集成电路发展到超大规模集成电路以及许多具有特定功能的专用集成电路。而EDA技术就是以微电子技术为物理层面,现代电子设计为灵魂,计算机软件技术为手段,最终形成集成电子系统或专用集成电路ASIC为目的的一门新兴技术。

Verilog HDL是一种应用较为广泛的HDL语言,能对范围广泛的各种复杂的网络在不同的抽象级加以描述,而且在整个设计过程中可使用同一种语言。采用Verilog HDL作为HDL综合设计的优点有:标准语言,即设计者可在不同环境下进行设计;仿真和综合均可采用同一种语言进行;Verilog HDL中提供的大量的资源模块,简化了设计者的开发工作;由Verilog HDL描述的源文件既是程序文件又可作为设计的文档。

. 专业 专注 .

. . .. . .

2 总体方案设计

彩灯控制器的核心设计部分是彩灯花型的控制模块,显示部分相对比较容易。分频器的设计方法多种多样,我设计的是比较常见的一种。外接clk为始终输入基准信号,彩灯节奏的快慢用选择开关select[1:0]。针对课题要求设计了如图2.1所示总体框图。

. 专业 专注 .

. . .. . .

图2.1八路彩灯总体框图

2.1方案比较

该设计主要是以FPGA为基础,通过硬件描述语言Verilog HDL灵活多变的改变彩灯显示的花型以及宽快慢,对此这几了以下两个方案。

方案一:总体电路共分三大块。第一块实现时钟信号的产生;第二块实现花型的控制及节拍控制;第三块实现花型的演示。主题框图如图2.2所示。

图2.2八路彩灯设计框图

方案二:在方案一的基础上将整体电路分为四个模块。第一块实现花型的演示;第二块实现花型的控制;第三块实现节拍快慢控制;第四块实现时钟信号的产生。并在部分电路的设计上与方案一采用了完全不同的方法,如花型的控制。如图2.3所示。

图2.3八路彩灯模块化框图

2.2方案论述

方案一与方案二最大的不同就在,前者将花型控制与节拍控制两种功能融合在一起,是考虑到只要计数器就可以实现其全部功能的原因,且原理相对简

. 专业 专注 .

. . .. . .

单。这样设计,其优点在于:设计思想比较简单。元件种类使用少,且都较熟悉易于组装电路。缺点则是:中间单元电路连线过于繁多,容易出错。且可能出现线与关系。要避免这些,则势必造成门电路使用过多。导致电路不稳定,抗干扰能力下降。而后者则将以上两种功能分开设计,各单元电路只实现一种功能。其优点在于:电路设计模块化,易于检查电路,对后面的电路组装及电路调试带来方便。缺点则是:节拍控制电路采用可编辑逻辑电路,原理相对复杂,不易理解。花型控制电路简单,花型也比较简单。

2.3方案选择

方案一主要设计过程简单明了,而且花型控制和快慢结合在一起,用一个计数器就能而过轻松地实现功能,但是细节太多容易出错。方案二虽然多了一个步骤,但是每个模块只完成一个功能,相对更容易上手。所以基于以上原因,加上为了确保短时间内完成课程设计,我选择了连线少,易于调试的方案二。

3单元模块设计

3.1时钟信号模块

时钟信号控制模块的主要功能是将输出的标准时钟进行分频,以此控制八路彩灯的快慢节奏变化。时钟信号控制在本设计中起着至关重要的作用,它以彩灯闪动快慢节奏的变化实现了八路彩灯绚丽多彩的花型节奏变化。时钟控制是整个设计中的一个分模块,它的设计对八路彩灯控制器的顺利完成起着决定性作用。对时钟控制程序封装如图3.1所示。

. 专业 专注 .

. . .. . .

图3.1分频器模块

设计的标准时钟输入时50M Hz,但是在Quartus Ⅱ中仿真时由于计数次数太多以至于不能正常得到分频后的波形,所以此处的仿真波形非标准时钟,仅用来表示分频的结果。

图3.2分频仿真时序图

图3.2仿真波形图中,out是对基准时钟的4分频,out1是对基准时钟的8分频,out2是对基准时钟的16分频,out3是对基准时钟的32分频。

3.2节拍快慢控制模块

节拍快慢控制模块即一个4选1数据选择器,它的功能是将分频器分出来的四个时钟信号通过我们外部输入而选择其中一个输出到下一个模块中,这样就可以控制彩灯显示的快慢。它的真值表如表3.1所示。

. 专业 专注 .

. . .. . .

表3.1 4选1数据选择器真值表 select[1:0] 0 0 1 1

4选1数据选择器仿真波形和封装模型分别如下:

0 1 0 1 输出 Out1 Out2 Out3 Out4

图3.3数据选择模块

图3.4 4选1数据选择器仿真图

. 专业 专注 .

. . .. . .

图3.4数据选择器仿真波形中,输入的选择信号sel是2'b01即选择输入的第二个波形,所以输出的波形即是第二个波形。

3.3彩灯控花型控制模块

彩灯控制模块是整个设计的核心,彩灯控制模块能够进行彩灯图案的控制,它负责整个设计的输出效果即各种彩灯图案的样式变化。在仿真时序中高电平代表灯亮,低电平代表灯灭,由高低电平按不同规律组合就代表不同的花型,同时选择不同的频率,从而实现多种图案多种频率的花样功能显示。此时Verilg HDL硬件描述语言的优势就展现出来,使用者可以按自己的需求改变源程序从而改变显示的花型,而不用更换显示设备,这样不但经济而且环保。程序封装图及仿真图分别如图所示。

图3.5彩灯控制系统程序封装图

. 专业 专注 .

. . .. . .

图3.6彩灯控制系统功能仿真图

图3.6中,在第一个上升沿输出8个高电平即8个彩灯全亮,下一个上升沿全部为低电平表示彩灯全部熄灭。之后隔一个时钟周期产生一个高电平,即彩灯依次点亮。最后四个高电平和低电平相间,表示8个彩灯亮灭相间。

. 专业 专注 .

. . .. . .

4软件设计

4.1 Quartus Ⅱ简介

QuartusⅡ可编程逻辑开发软件是Altera公司为其FPGA/CPLD芯片设计的集成化专用开发工具,是Altera最新一代功能更强的集成EDA开发软件。使用QuartusII可完成从设计输入,综合适配,仿真到下载的整个设计过程。 Max+plusⅡ是Altera公司早期的开发工具,曾经是最优秀的PLD开发平台之一,现在正在逐步被QuartusⅡ代替。并且Max+plusⅡ已经不再支持Altera公司的新器件,同时,QuartusH也放弃了对少数较老器件的支持。QuattusII界面友好,具有MAX+PLUSⅡ界面选项,这样MAX的老用户就无须学习新的用户界面就能够充分享用QuartusⅡ软件的优异性能。所以,无论是初学者,还是Max+plusⅡ的老用户,都能较快的上手。

QuartusⅡ根据设计者需求提供了一个完整的多平台开发环境,它包含蕞个FPGA和CPLD设计阶段的解决方案。QuarmsⅡ软件提供的完整,操作简易的图形用户界面可以完成整个设计流程中的各个阶段。QuartusⅡ集成环境包括以下内容:系统级设计,嵌入式软件开发,可编程逻辑器件(PLD)设计,综合,布局和布线,验证和仿真。

QuartusⅡ也可以直接调用Synplify Pro,LeonardoS~ctmm以及ModelSim等第三方EDA工具来完成设计任务的综合与仿真。QualtusⅡ与

. 专业 专注 .

. . .. . .

MATLAB和DSPBuilder结合可以进行基于FPGA的DSP系统开发,方便且快捷,还可以与SOPCBuilder结合,实现SOPC系统的开发。

4.2 Qartus Ⅱ设计开发流程

QuanusⅡ设计的主要流程有:创建工程、设计输入、编译、仿真验证、下载,其进行数字电路设计的一般流程如图4.1所示。

图4.1 QuartusⅡ设计开发流程

设计输入:包括原理图输入、HDL文本输入、EDIF网表输入等几种方式。 编译:先根据设计要求设定编译方式和编译方略,如器件的选择、逻辑综合方式的选择等。然后根据设定的参数和策略对设计项目进行网表提取,逻辑综合器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真和编译使用。

仿真:仿真包括功能仿真、时序仿真和定时分析,用以验证设计项目的逻辑功能和时序关系是否正确。

编程与验证:用得到的编程文件通过编程电缆配置PLD,加入实际激励,进行在线测试。

. 专业 专注 .

. . .. . .

再设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重复上述过程。

5系统调试

在进行系统调试时首先要建一个项目,将我们以前设计的各个子模块工程添加到该项目中并且创建模块。之后新建一个顶层原理图文件,将我们所创建的所有子模块添加进去,再添加相应的输入输出模块,连接好线,编译之后便可以仿真。具体顶层文件图和仿真图如下所示。

图5.1 顶层文件总线图

. 专业 专注 .

. . .. . .

图5.2 彩灯功能仿真图

6系统功能及指标参数

本设计主要是设计一个显示三种花型的八路彩灯控制系统。它能够通过外部选择调节彩灯显示的快慢,也可以通过更改Verilog HDL源程序改变所要现实的花型,从而获得不同的显示效果。

本设计是基于Quartus Ⅱ中的EP2S15F672C3芯片,基本完成了课程设计任务书上的所有功能要求,但还是有一些不足的地方,我以后会尽量改进。

. 专业 专注 .

. . .. . .

7设计总结与体会

通过本次实验的学习和实践,我对DEA这门课程有了感性的认识,并且对仿真软件Quartus II 有了深刻的了解和学会运用软件建立工程仿真实验,对硬件描述语言Verilog HDL有了较为基础的了解和认识,深刻体会到该语言方面的设计在生活中应用范围之广泛。

经过本次作业,我体会到设计对设计人员的基本要求:掌握最基本的知识并且学会灵活运用这些基本知识,大胆创新敢于实践,遵守相关的游戏规则,运用谨慎全面的逻辑思维思考问题、解决问题。具体而言,对VHDL语言的掌

. 专业 专注 .

. . .. . .

握程度更加的深刻,虽不能独立的设计复杂的产品,但对整个流程有了一定的了解,为以后的工作打下了基础,积累了经验。

本次课程不仅是对基础知识的提升,更是对思维方式的扩展有了相当的帮助,我相信知识是在不断的更新,但从本课程学到的思维方式却是对以后的发展大有裨益。

最后要感谢林老师的悉心指导,课程设计中,遇到了不少问题,多亏了老师的悉心指导才能够顺利、及时地解决问题,使得课题能够顺利完成。

8参考文献

[1] 夏宇闻. Verilog数字系统设计教程. 北京: 航空航天大学出版社, 2008.

[2] 吴继华,王诚. Altera FPGA/CPLD设计. 北京: 人民邮电出版社, 2005.

. 专业 专注 .

. . .. . .

[3] 常晓明,李媛媛.Verilog HDL工程实践入门.北京: 航空航天大学出版社,2005.

[4] 常晓明.Verilog HDL实践与应用系统设计. 北京: 航空航天大学出版社,2003.

[5] 王金明,杨吉斌.数字系统设计与Verilog HDL.北京:电子工业出版社.2002.

. 专业 专注 .

. . .. . .

附录1总设计图及仿真图

. 专业 专注 .

. . .. . .

附录2 Verilog HDL源程序

分频模块程序

module

fenpin3(reset,clkin,clkout,clkout1,clkout2,clkout3); input reset,clkin;

output clkout,clkout1,clkout2,clkout3; reg clkout,clkout1,clkout2,clkout3;

reg [1:0] cnt,cnt1,cnt2,cnt3;

always @ (posedge reset or posedge clkin)

if(reset)

begin cnt<=0; clkout<=0; end

else

begin

cnt<=cnt+1'b1; if(cnt==1) begin cnt<=0;

. 专业 专注 .

clkout<=~clkout; end end

always @ (posedge reset or posedge

clkout)

if(reset)

begin cnt1<=0; clkout1<=0;

end

else

begin

cnt1<=cnt1+1'b1; if(cnt1==1) begin cnt1<=0;

clkout1<=~clkout1; end end

. . .. . .

always @ (posedge reset or posedge clkout1)

if(reset)

begin cnt2<=0; clkout2<=0; end

else

begin

cnt2<=cnt2+1'b1; if(cnt2==1) begin cnt2<=0;

clkout2<=~clkout2; end end

always @ (posedge reset or posedge clkout2)

数据选择器程序

module mux4_1(out,in0,in1,in2,in3,sel);

. 专业 专注 .

if(reset)

begin cnt3<=0; clkout3<=0; end

else

begin

cnt3<=cnt3+1'b1; if(cnt3==1) begin cnt3<=0;

clkout3<=~clkout3; end end endmodule

output out; input in0,in1,in2,in3; input [1:0]sel; reg out;

. . .. . .

always @(in0 or in1 or in2 or in3 or sel) case(sel) 2'b00: out=in0; 2'b01: out=in1; 2'b10: out=in2; 2'b11: out=in3; default: out=2'bx; endcase endmodule

彩灯控制程序

module caideng(clk,reset,z); input reset,clk; output reg[7:0] z; reg [5:0] state; parameter

s0='d0,s1='d1,s2='d2,s3='d3,s4='d4,s5='d5,s6='d6,s7='d7,s8='d8,s9='d9,s10='d10,s11='d11,

s12='d12,s13='d13,s14='d14,s15='d15,s16='d16,s17='d17,s18='d18,s19='d19,s20='d20,s21='d21,

. 专业 专注 .

s22='d22,s23='d23,s24='d24,s25='d25,s26='d26,s27='d27,s28='d28,s29='d29,s30='d30,s31='d31,

s32='d32,s33='d33,s34='d34,s35='d35,s36='d36,s37='d37,s38='d38,s39='d39,s40='d40,s41='d41,

s42='d42,s43='d43,s44='d44,s45='d45,s46='d46,s47='d47,s48='d48,s49='d49,s50='d50,s51='d51, s52='d52; always @(posedge clk) begin if (reset) state<=s0; else case (state)

s0: state<=s1; s1: state<=s2;

s2: state<=s3; s3: state<=s4;

s4: state<=s5; s5: state<=s6;

s6: state<=s7; s7: state<=s8;

. . .. . .

s8: state<=s9; s9: state<=s10; s10: state<=s12; s12: state<=s13;

s13:

state<=s11;

s11:

s30: state<=s32; s32: state<=s34; s34: state<=s31; s31:

state<=s33; s33:

state<=s35; s35:

state<=s14; s14: state<=s16; s16: state<=s18; s18: state<=s20; s20: state<=s22; s22: state<=s24; s24: state<=s26; s26: state<=s28; s28: state<=s30;

. state<=s15;

state<=s17;

state<=s19;

state<=s21;

state<=s23;

state<=s25;

state<=s27;

state<=s29;

专业 专注 state<=s36; s15:

s36: state<=s38; s17:

s38: state<=s40; s19:

s40: state<=s42; s21:

s42: state<=s44; s23:

s44: state<=s46; s25:

s46: state<=s48; s27:

s48: state<=s50; s29:

s50: state<=s52;

.

state<=s37; state<=s39; state<=s41; state<=s43; state<=s45; state<=s47; state<=s49; state<=s51; s37:

s39:

s41:

s43:

s45:

s47:

s49:

s51:

. . .. . .

s52: state<=s0; default: state<=s0; endcase end always @(state) begin case (state) s0:z<=8'b00000000; s1:z<=8'b11111111; s3:z<=8'b00000000; s4:z<=8'b11111111; s5:z<=8'b00000000; s6:z<=8'b11111111; s7:z<=8'b00000000; s8:z<=8'b11111111; s9:z<=8'b00000000; s10:z<=8'b10000000; s11:z<=8'b01000000; s12:z<=8'b00100000; s13:z<=8'b00010000; s14:z<=8'b00001000; s15:z<=8'b00000100; s16:z<=8'b00000010;

. 专业 专注 s17:z<=8'b00000001; s18:z<=8'b10000000; s19:z<=8'b01000000; s20:z<=8'b00100000; s21:z<=8'b00010000; s22:z<=8'b00001000; s23:z<=8'b00000100; s24:z<=8'b00000010; s25:z<=8'b00000001; s26:z<=8'b10000000; s27:z<=8'b01000000; s28:z<=8'b00100000; s29:z<=8'b00010000; s30:z<=8'b00001000; s31:z<=8'b00000100; s32:z<=8'b00000010; s33:z<=8'b00000001; s34:z<=8'b10000000; s35:z<=8'b01000000; s36:z<=8'b00100000; s37:z<=8'b00010000; s38:z<=8'b00001000;

.

. . .. . .

s39:z<=8'b00000100; s40:z<=8'b00000010; s41:z<=8'b00000001; s42:z<=8'b00000000; s43:z<=8'b01010101; s44:z<=8'b10101010; s45:z<=8'b01010101; s46:z<=8'b10101010; s47:z<=8'b01010101;

. 专业 专注 s48:z<=8'b10101010; s49:z<=8'b01010101; s50:z<=8'b10101010; s51:z<=8'b01010101; s52:z<=8'b10101010; default z<=8'b00000000; endcase end endmodule

.

因篇幅问题不能全部显示,请点此查看更多更全内容