跑马灯设计EDA课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
跑马灯设计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进行一个简单的电子系统设计,本次课程设计采用Verilog HDL硬件描述语言编写控制程序,应用Quartus Ⅱ软件实现仿真测试。采用FPGA芯片对LED灯进行控制,使其达到流水跑马灯显示的效果,LED灯采用共阳极接法,当给它一个低电平时,LED点亮,我们利用移位寄存器使各输出口循环输出高低电平,达到控制的目的。
第二章设计原理
2.1设计原理及设计流程
本次试验我所完成的内容是跑马灯的设计,下面我简单的进行一下原理的阐述。
跑马灯课程设计的要求是控制8个LED进行花样显示,设计四种显示模块:第一种显示是从左向右逐个点亮LED。第二种显示:从右向左逐个点亮LED。第三种显示:从两边向中间逐个点亮LED。第四种显示:从中间到两边逐个点亮LED。四种显示模式循环切换,并带有一位复位键控制系统的运行停止。为了完成要求的效果显示,由于要求比较简单,因此不用分为很多模块来具体控制,因此我先择利用移位寄存器来完成灯的点亮,我们将LED 灯采用共阳极接法,当给于低电平时点亮,那么当我们需要点亮某位LED灯时,只需在该位上赋予低电平即可,比如:如果我们要实现8个数码灯从左到右依次点亮,那么我们就能够给这8个数码灯分别赋值10000000,经过
一段时间的延时后再给其赋值01000000,再经过一段时间延时后再给其赋值00100000,依次类推,则最后一种赋值状态为00000001,这样就得到了相应的现象。同理,要实现数码灯从右向左依次点亮,从中间向两端依次点亮,从两端向中间依次点亮都能够采用这样赋值的方法。为了达到四种显示模式循环切换的目的,能够将以上的所有赋值语句以顺序语句的形式置于进程中,这样在完成了一种显示方式后就会自动进入下一种设定好的显示模式,如此重复循环。当需要程序复位时,只需按下rst键即可,程序不论走都那里,执行那条语句,只要确定复位键按下时,程序马上返回到程序执行语句的第一步,程序接着进行新的循环点亮。
第三章设计程序
3.1 Verilog HDL程序
module ceshi(clk,rst,Q,DIN,CLK,a);
input clk,rst;
input [1:0]DIN; //DIN为变换速度档output signed[7:0]Q; //Q为7个LED output [6:0]a; //a为数码管显示模式output CLK; //自定义时钟parameter DOUT=8'b0111_1111;
reg CLK;
reg [6:0]x;
reg [1:0]cs;
reg [7:0]Q;
reg [6:0]a;
always@(posedge clk)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;