EDA跑马灯设计.docVIP

  • 24
  • 0
  • 约4.77千字
  • 约 13页
  • 2017-06-26 发布于湖北
  • 举报
EDA跑马灯设计

目录 任务书 第一章 系统分析与设计方案 1 1.1 设计原理 1 第二章 子模块设计及程序 2 2.1 分频器 2 2.2显示模式模块 4 2.3 显示LED灯模块 6 第三章 调试仿真及结果 7 3.1顶层原理图 7 3.2 仿真图 7 3.2.1 引脚锁定图 7 3.2.2 波形仿真图 8 第四章 心得体会 11 系统分析与设计方案 1.1 设计原理 在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,以及平时实验的具体操作内容,利用硬件描述语言HDL,EDA软件QuartusⅡ进行一个简单的电子系统设计,本次试验我所完成的内容是跑马灯的设计,下面我简单的进行一下原理的阐述。 跑马灯课程设计的要求是控制8个LED进行花样显示,设计四种显示模块:第一种显示是从左向右逐个点亮LED。第二种显示:从右向左逐个点亮LED。第三种显示:从两边向中间逐个点亮LED。第四种显示:从中间到两边逐个点亮LED。四种显示模式循环切换,并带有一位复位键控制系统的运行停止。为了完成要求的效果显示,由于要求比较简单,所以不用分为很多模块来具体控制,所以我先择利用赋值语句来完成灯的点亮,根据了解我们实验箱上的LED灯属于共阴极接法,当给于高电平时点亮,那么当我们需要点亮某位LED灯时,只需在该位上赋予高电平即可,比如:如果我们要实现8个数码灯从左到右依次点亮,那么我们就可以给这8个数码灯分别赋经过一段时间的延时后再给其赋再经过一段时间延时后再给其赋依次类推,则最后一种赋值状态这样就得到了相应的现象。同理,要实现数码灯从右向左依次点亮,从中间向两端依次点亮,从两端向中间依次点亮都可以采用这样赋值的方法。在延时的程序编写的过程中,我们采用计数时钟脉冲个数的方式来实现。结合具体程序来说就是,在每个时钟上升沿将clk_cnt变量加一,当达到499999后,就进入显示进程做下一步的赋值操作以显示相应接续的状态。为了达到四种显示模式循环切换的目的,可以将以上的所有赋值语句以顺序语句的形式置于进程中,这样在完成了一种显示方式后就会自动进入下一种设定好的显示模式,如此反复循环。当需要程序复位时,只需按下rst键即可,程序不管走都那里,执行那条语句,只要确定复位键按下时,程序立刻返回到程序执行语句的第一步,程序接着进行新的循环点亮。系统工作流程如下图所示,在没有外界输入控制时,中央控制器将反复循环输入预先设定的编码,因此8个数码灯将在四种显示模式中循环显示。若复位端被置0,则系统被重置,无论当前处于什么状态,都重新从最开始的状态开始重新执行。 图1 总体设计框图 第二章 子模块设计及程序 2.1 分频器 输入一个CLK信号,通过分频器模块分别输送到显示模式模块和显示LED模块生成分频器程序: module FPQ(rst,clk,sel,fp); input clk,rst;input [1:0]sel; output fp; reg[1:0]temp; reg fp; always@(posedge clk or negedge rst) if(!rst) begin temp=0;fp=0; end else case(sel) 2b00: if(temp==2)begin fp=1;temp=0; end Else begin temp=temp+1; fp=0; end 2b01: if(temp==3)begin fp=1;temp=0; end Else begin temp=temp+1;fp=0; end 2b10: if(temp==1) begin fp=1;temp=0; end Else begin temp=temp+1;fp=0; end 2b11:fp=clk; endcase endmodule 图2 分频器模块 2.2显示模式模块 在实验箱上显示彩灯运行的模式,分别有1-4种模式生成数码管显示程序: module moshi(state,led,rst,clk,); input [1:0] state; input rst,clk; output[7:0] led; reg [7:0]led; reg [2:0]temp; always@(posedge clk or negedge rst) if(!rst)

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档