跑马灯设计EDA专业课程设计.docx
《跑马灯设计EDA专业课程设计.docx》由会员分享,可在线阅读,更多相关《跑马灯设计EDA专业课程设计.docx(10页珍藏版)》请在冰点文库上搜索。
跑马灯设计EDA专业课程设计
第一章设计内容和设计方案
1.1课程设计内容
控制8个LED进行花样性显示。
设计4种显示模式:
s0,从左到右逐一点亮LED;s1,从右到左逐一点亮LED;s2,从两边到中间逐一点亮LED;s3,从中见到两边逐一点亮LED。
4种模式循环切换,复位键(rst)控制系统运行停止。
数码管显示模式编号。
可预置彩灯变换速度,4档快、稍快、中速、慢速,默认工作为中速。
1.2设计方案
在掌握常见数字电路功效和原理基础上,依据EDA技术课程所学知识,和平时试验具体操作内容,利用硬件描述语言HDL,EDA软件QuartusⅡ和硬件平台cycloneⅡFPGA进行一个简单电子系统设计,
此次课程设计采取VerilogHDL硬件描述语言编写控制程序,应用QuartusⅡ软件实现仿真测试。
采取FPGA芯片对LED灯进行控制,使其达成流水跑马灯显示效果,LED灯采取共阳极接法,当给它一个低电平时,LED点亮,我们利用移位寄存器使各输出口循环输出高低电平,达成控制目标。
第二章设计原理
2.1设计原理及设计步骤
此次试验我所完成内容是跑马灯设计,下面我简单进行一下原理叙述。
跑马灯课程设计要求是控制8个LED进行花样显示,设计四种显示模块:
第一个显示是从左向右逐一点亮LED。
第二种显示:
从右向左逐一点亮LED。
第三种显示:
从两边向中间逐一点亮LED。
第四种显示:
从中间到两边逐一点亮LED。
四种显示模式循环切换,并带有一位复位键控制系统运行停止。
为了完成要求效果显示,因为要求比较简单,所以不用分为很多模块来具体控制,所以我先择利用移位寄存器来完成灯点亮,我们将LED灯采取共阳极接法,当给于低电平时点亮,那么当我们需关键点亮某位LED灯时,只需在该位上给予低电平即可,比如:
假如我们要实现8个数码灯从左到右依次点亮,那么我们就能够给这8个数码灯分别赋值10000000,经过一段时间延时后再给其赋值01000000,再经过一段时间延时后再给其赋值00100000,依次类推,则最终一个赋值状态为00000001,这么就得到了对应现象。
同理,要实现数码灯从右向左依次点亮,从中间向两端依次点亮,从两端向中间依次点亮全部能够采取这么赋值方法。
为了达成四种显示模式循环切换目标,能够将以上全部赋值语句以次序语句形式置于进程中,这么在完成了一个显示方法后就会自动进入下一个设定好显示模式,如此反复循环。
当需要程序复位时,只需按下rst键即可,程序不管走全部那里,实施那条语句,只要确定复位键按下时,程序立即返回到程序实施语句第一步,程序接着进行新循环点亮。
第三章设计程序
3.1VerilogHDL程序
moduleceshi(clk,rst,Q,DIN,CLK,a);
inputclk,rst;
input[1:
0]DIN;//DIN为变换速度档
outputsigned[7:
0]Q;//Q为7个LED
output[6:
0]a;//a为数码管显示模式
outputCLK;//自定义时钟
parameterDOUT=8'b0111_1111;
regCLK;
reg[6:
0]x;
reg[1:
0]cs;
reg[7:
0]Q;
reg[6:
0]a;
always@(posedgeclk)begin
x<=7'b0000000;CLK=0;
case(DIN)
0:
begin
x<=x+1'b1;
if(x==20)begin
x<=7'b0;
CLK=~CLK;
end
end
1:
begin
x<=x+1'b1;
if(x==15)begin
x<=7'b0;
CLK=~CLK;
end
end
2:
begin
x<=x+1'b1;
if(x==10)begin
x<=7'b0;
CLK=~CLK;
end
end
3:
begin
x<=x+1'b1;
if(x==5)begin
x<=7'b0;
CLK=~CLK;
end
end
defaultbegin
x<=x+1'b1;
if(x==20)begin
x<=7'b0;
CLK=~CLK;
end
end
endcase
end
always@(posedgeCLKornegedgerst)begin
if(!
rst)begin
Q<=DOUT;cs<=2'b00;a=7'b000_0000;
end
elsebegin
case(cs)
0:
beginQ<=Q>>1;Q[7]<=1'b1;a=7'b0111111;
if(Q==8'b1111_1110)begin
Q<=8'b1111_1101;
cs<=2'b01;
end
end
1:
beginQ<=Q<<1;Q[0]<=1'b1;a=7'b0000_110;
if(Q==8'b0111_1111)begin
Q<=8'b0111_1110;
cs<=2'b10;
end
end
2:
beginQ[7:
4]<=Q[7:
4]>>1;
Q[3:
0]<=Q[3:
0]<<1;
Q[7]<=1'b1;
Q[0]<=1'b1;a=7'b1011_011;
if(Q==8'b1110_0111)begin
Q<=8'b1101_1011;
cs<=2'b11;
end
end
3:
beginQ[7:
4]<=Q[7:
4]<<1;
Q[3:
0]<=Q[3:
0]>>1;
Q[4]<=1'b1;
Q[3]<=1'b1;a=7'b100_1111;
if(Q==8'b0111_1110)begin
Q<=8'b0111_1111;
cs<=2'b00;
end
end
defaultbegin
Q<=DOUT;
cs<=2'b00;
a=7'b0000_000;
end
endcase
end
end
endmodule
第四章设计结果及仿真波形
4.1设计结果
图1顶层文件原理图
4.2仿真波形
4.3仿真结果分析
当输入DIN为00时选择慢速档,CLK周期大约为20us,伴随CLK上升沿到来输出Q做移位改变,开始从左向右移,数码管段码输出a显示0,然后从右向左移,数码管段码输出a显示1,然后从中间向两边移,数码管段码输出a显示2,然后从两边向中间移,数码管段码输出a显示3,以后循环显示,当按下复位键rst时系统运行停止,第一个灯点亮,数码管无显示。
当输入DIN为01时选择中速档,CLK周期大约为15us,实施以上循环显示。
当输入DIN为10时选择稍快档,CLK周期大约为10us,实施以上循环显示。
当输入DIN为11时选择快速档,CLK周期大约为5us,实施以上循环显示。
第五章设计总结
经过这次有相关EDA技术课程设计学习和应用,我们基础了解了EDA技术相关应用,也掌握了EDA设计相关软件Quartus7.2最基础使用方法,丰富了我们设计手段,也让我了解了更多仿真方法。
在上机操作过程中,刚开始我们碰到了很多困难,对软件不熟悉和对原理掌握不透彻,使得刚开始时候举步维艰,不过经过对最简单模型设计及仿真练习过后,我们基础掌握了软件使用方法,经过软件仿真及对各个参数设置,我们不停调试仿真出来波形。
这期间我们也了解到,即使软件仿真功效很强大,不过还是需要操作人员仔细进行观察及调试,不然也轻易出现仿真错误。
这次学习开阔了我们视野,使我们了解了更多专业方面实际应用,在生产应用方面用处等,和专业方面发展方向等……伴随微电子技术和计算机技术不停发展,在包含通信、国防、航天、工业自动化、仪器仪表等领域电子系统设计工作中,EDA技术含量正以惊人速度上升,它已成为当今电子技术发展前沿之一。
EDA技术发展迅猛,完全能够用日新月异来描述。
EDA技术应用广泛,现在已包含到各行各业。
EDA水平不停提升,设计工具趋于完美地步,所以我们愈加应该多多掌握这方面知识。
第六章参考文件
[1]潘松、黄继业编著.EDA技术和VHDL,北京:
清华大学出版社
[2]边计年主编.用VHDL设计电子线路,北京:
清华大学出版社
[3]王金明,杨吉斌编著.数字系统设计和VerilogHDL.北京:
电子工业出版社
[4]徐志军,徐光辉编著.CPLD/FPGA开发和应用.北京:
电子工业出版社
[5]叶天迟主编.EDA实用技术试验及课程设计指导书.长春:
自编试验指导书