Quatus II数字钟Word下载.docx

上传人:b****1 文档编号:872080 上传时间:2023-04-29 格式:DOCX 页数:17 大小:90.38KB
下载 相关 举报
Quatus II数字钟Word下载.docx_第1页
第1页 / 共17页
Quatus II数字钟Word下载.docx_第2页
第2页 / 共17页
Quatus II数字钟Word下载.docx_第3页
第3页 / 共17页
Quatus II数字钟Word下载.docx_第4页
第4页 / 共17页
Quatus II数字钟Word下载.docx_第5页
第5页 / 共17页
Quatus II数字钟Word下载.docx_第6页
第6页 / 共17页
Quatus II数字钟Word下载.docx_第7页
第7页 / 共17页
Quatus II数字钟Word下载.docx_第8页
第8页 / 共17页
Quatus II数字钟Word下载.docx_第9页
第9页 / 共17页
Quatus II数字钟Word下载.docx_第10页
第10页 / 共17页
Quatus II数字钟Word下载.docx_第11页
第11页 / 共17页
Quatus II数字钟Word下载.docx_第12页
第12页 / 共17页
Quatus II数字钟Word下载.docx_第13页
第13页 / 共17页
Quatus II数字钟Word下载.docx_第14页
第14页 / 共17页
Quatus II数字钟Word下载.docx_第15页
第15页 / 共17页
Quatus II数字钟Word下载.docx_第16页
第16页 / 共17页
Quatus II数字钟Word下载.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Quatus II数字钟Word下载.docx

《Quatus II数字钟Word下载.docx》由会员分享,可在线阅读,更多相关《Quatus II数字钟Word下载.docx(17页珍藏版)》请在冰点文库上搜索。

Quatus II数字钟Word下载.docx

<

1'

b1;

dout[0]<

=din;

end

cout<

=|dout;

endmodule

500Hz分频模块如下:

moduleint_div500hz(clk,div_out);

inputclk;

outputregdiv_out;

reg[31:

0]clk_div;

parameterCLK_FREQ='

D50_000_000;

//系统时钟50MHz

parameterDCLK_FREQ='

D1000;

//输出频率1000/2Hz

if(clk_div<

(CLK_FREQ/DCLK_FREQ))

clk_div<

=clk_div+1;

=0;

div_out<

=~div_out;

跑表功能需要用到D触发器配合一个sed模块,这里用到的是上升沿触发,当上升沿来到时,输出等于输入。

D触发器:

moduledchufa(d,q,nq,clk);

inputclk,d;

outputnq,q;

regq,nq;

always@(posedgeclk)

q<

=d;

nq<

=~d;

sed模块代码如下:

modulesed(clk100hz,ti,count,stop,rst);

inputclk100hz;

inputstop;

//配合D触发器的特性实现暂停跑表的功能

input[1:

0]count;

inputrst;

output[31:

0]ti;

reg[31:

always@(posedgeclk100hz)

if(count==2'

b11)

ti[31:

24]<

=8'

d4;

if(stop)

ti<

=ti;

if(rst)

ti[23:

0]<

if(ti[3:

0]==4'

d9)

ti[3:

=4'

d0;

if(ti[7:

4]==4'

ti[7:

4]<

if(ti[11:

8]==4'

ti[11:

8]<

if(ti[15:

12]==4'

d5)

ti[15:

12]<

if(ti[19:

16]==4'

ti[19:

16]<

if(ti[23:

20]==4'

20]<

if(ti[27:

24]==4'

ti[27:

28]<

=ti[31:

28]+4'

d1;

elseif(ti[31:

28]==4'

d2&

&

d3)

elseti[27:

=ti[27:

24]+4'

elseti[23:

=ti[23:

20]+4'

elseti[19:

=ti[19:

16]+4'

elseti[15:

=ti[15:

12]+4'

elseti[11:

=ti[11:

8]+4'

elseti[7:

=ti[7:

4]+4'

elseti[3:

=ti[3:

0]+4'

=24'

b0;

需要一个main_control模块来协调整个程序的实现,它负责产生蜂鸣器,key1,key2,key3的响应,同时配合1hz输入(1hz用于产生秒的计时,同时,时和分的转换都在这个模块中)

Main_control:

modulemain_control(count,clk1hz,key1,key2,key3,q,beep,t);

0]count;

inputclk1hz;

inputkey1;

inputkey2;

inputkey3;

outputbeep;

0]q;

0]t;

0]tempq;

regbeep;

always@(posedgeclk1hz)

b00)

q[31:

//

if(q[3:

q[3:

if(q[7:

q[7:

if(q[11:

q[11:

if(q[15:

q[15:

if(q[19:

q[19:

q[23:

=q[23:

elseif(q[23:

elseq[19:

=q[19:

elseq[15:

=q[15:

elseq[11:

=q[11:

elseq[7:

=q[7:

elseq[3:

=q[3:

//xiamianshinaolingfunction

if(t[23:

8]==q[23:

8])

beep<

=1'

elsebeep<

 

elseif(count==2'

b01)

d2;

d9&

key1==1'

b1)

8]+key1;

key2==1'

d3&

16]+key2;

b10)

t[31:

d3;

if(t[11:

b1)//

t[11:

if(t[15:

t[15:

elset[15:

=t[15:

elset[11:

=t[11:

if(t[19:

t[19:

t[23:

=t[23:

elseif(t[23:

elset[19:

=t[19:

//qcontinue

将要实现的4种功能设置为4种模式,用一个mode模块来选择模式

Mode:

modulemode(key0,count,rst);

inputkey0;

output[1:

reg[1:

always@(posedgekey0)//用key0的上升沿来判断

if(!

rst)

count<

b11)//用count变量来计数,显示的数据即为显示的模式

=count+2'

out模块配合segmain模块来控制数码管的显示,这在之前的实验中已经实现

out模块:

moduleout(count,q,ti,clk100hz,qout,t);

input[31:

0]qout;

qout<

=t;

=q;

segmain模块不在赘述。

Pulse模块用于产生脉冲来控制蜂鸣器

Pulse:

modulepulse(clk,d,spk);

input[12:

0]d;

outputspk;

regspk;

if(clk_div<

d)

spk<

=~spk;

最后需要产生乐曲,选择的乐曲为梁祝乐曲,需要一个tonetable模块来产生所发音符所需的分频预置数并且notetable模块中的计数器按照4Hz的时钟速率递增并依次输出分频预置数,并且控制好每个音符的持续时间。

依据课本上前几次实验的经验,对每个模块进行设定,编译,设置顶层等等步骤,最后下载到实验版上实现数字钟。

四、实验小结

通过本次的综合实验我回顾并掌握了之前几次实验的各种方法,对编程语言有了一个非常清楚的认识,并且进一步掌握了FPGA的开发流程,调试方法以及QuatusII软件的使用,QuartusII的涉及输入、仿真方法以及步骤,熟识QuatusII软件基本功能的使用,这对于本次实验的成功十分重要。

本学期的实验虽然只用到了开发板的硬件功能,但为我们今后的进一步学习打下了坚实的基础,而且我们还可以进行进一步的利用verilogHDL语言进行开发,而不仅仅停留在硬件功能上

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2