- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第一章设计内容与设计方案
控制8个LED进行把戏性显示。
设计4种显示模式:s0,从左到右逐个点亮LED;s1,从右到左逐个点亮LED;s2,从两边到中间逐个点亮LED;s3,从中见到两边逐个点亮LED。
4种模式循环切换,复位键〔rst〕控制系统的运行停止。数码管显示模式编号。
可预置彩灯变换速度,4档快、稍快、中速、慢速,默认工作为中速。
在掌握常用数字电路功能和原理的根底上,根据EDA技术课程所学知识,以及平时实验的具体操作内容,利用硬件描述语言HDL,EDA软件QuartusⅡ和硬件平台cycloneⅡFPGA进行一个简单的电子系统设计,
本次课程设计采用VerilogHDL硬件描述语言编写控制程序,应用QuartusⅡ软件实现仿真测试。采用FPGA芯片对LED灯进行控制,使其到达流水跑马灯显示的效果,LED灯采用共阳极接法,当给它一个低电平时,LED点亮,我们利用移位存放器使各输出口循环输出上下电平,到达控制的目的。
第二章设计原理
2.1设计原理及设计流程
本次试验我所完成的内容是跑马灯的设计,下面我简单的进行一下原理的阐述。
跑马灯课程设计的要求是控制8个LED进行把戏显示,设计四种显示模块:第一种显示是从左向右逐个点亮LED。第二种显示:从右向左逐个点亮LED。第三种显示:从两边向中间逐个点亮LED。第四种显示:从中间到两边逐个点亮LED。四种显示模式循环切换,并带有一位复位键控制系统的运行停止。为了完成要求的效果显示,由于要求比拟简单,所以不用分为很多模块来具体控制,所以我先择利用移位存放器来完成灯的点亮,我们将LED灯采用共阳极接法,当给于低电平时点亮,那么当我们需要点亮某位LED灯时,只需在该位上赋予低电平即可,比方:如果我们要实现8个数码灯从左到右依次点亮,那么我们就可以给这8个数码灯分别赋经过一段时间的延时后再给其赋再经过一段时间延时后再给其赋依次类推,那么最后一种赋值状态这样就得到了相应的现象。同理,要实现数码灯从右向左依次点亮,从中间向两端依次点亮,从两端向中间依次点亮都可以采用这样赋值的方法。为了到达四种显示模式循环切换的目的,可以将以上的所有赋值语句以顺序语句的形式置于进程中,这样在完成了一种显示方式后就会自动进入下一种设定好的显示模式,如此反复循环。当需要程序复位时,只需按下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=8b0111_1111;
regCLK;
reg[6:0]x;
reg[1:0]cs;
reg[7:0]Q;
reg[6:0]a;
always@(posedgeclk)begin
x=7b0000000;CLK=0;
case(DIN)
0:begin
x=x+1b1;
if(x==20)begin
x=7b0;
CLK=~CLK;
end
end
1:begin
x=x+1b1;
if(x==15)begin
x=7b0;
CLK=~CLK;
end
end
2:begin
x=x+1b1;
if(x==10)begin
x=7b0;
CLK=~CLK;
end
end
3:begin
x=x+1b1;
if(x==5)begin
x=7b0;
CLK=~CLK;
end
end
defaultbegin
x=x+1b1;
if(x==20)begin
x=7b0;
CLK=~CLK;
end
end
endcase
end
always@(posedgeCLKornegedgerst)begin
if(!rst)begin
Q=DOUT;cs=2b00;a=7b000_0000;
end
elsebegin
case(cs)
0:beginQ=Q1;Q[7]=1b1;a=7b0111111;
if(Q==
文档评论(0)