基于FPGA的多功能数字钟课程设计.docx

上传人:b****5 文档编号:28507835 上传时间:2023-07-18 格式:DOCX 页数:12 大小:252.94KB
下载 相关 举报
基于FPGA的多功能数字钟课程设计.docx_第1页
第1页 / 共12页
基于FPGA的多功能数字钟课程设计.docx_第2页
第2页 / 共12页
基于FPGA的多功能数字钟课程设计.docx_第3页
第3页 / 共12页
基于FPGA的多功能数字钟课程设计.docx_第4页
第4页 / 共12页
基于FPGA的多功能数字钟课程设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于FPGA的多功能数字钟课程设计.docx

《基于FPGA的多功能数字钟课程设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的多功能数字钟课程设计.docx(12页珍藏版)》请在冰豆网上搜索。

基于FPGA的多功能数字钟课程设计.docx

基于FPGA的多功能数字钟课程设计

FPGA课程设计报告

(实现多功能数字钟)

 

 

 

一、标题:

设计多功能数字钟控制电路

二、任务书:

用MAX+PLUSⅡ软件及VerilogHDL语言设计

一个多功能的数字钟,包括有时、分、秒的计

时,以及校时(对小时、分钟和秒能手动调整以校准时间)、正点报时(每逢整点,产生“嘀嘀嘀嘀-嘟”,4短一长的报时音)等附加功能。

三、关键词:

24进制、60进制、正点报时、校时、数字钟

四、总体方案:

多功能数字钟控制电路框图是由三部分组成的,即秒分时控制电路、整点报时控制电路、时段控制电路。

用VerilogHDL硬件描述语言完成编译和仿真。

五、原理框图如下:

建立设计工程项目名和顶层图形文件。

六、VerilogHDL硬件描述语言编写的功能模块:

/*秒计数器m60*/

modulem60(M,CP60M,CPM,RD);

output[7:

0]M;

outputCP60M;

inputCPM;

inputRD;

reg[7:

0]M;

wireCP60M;

always@(negedgeRDorposedgeCPM)

begin

if(!

RD)

beginM[7:

0]<=0;

end

else

begin

if((M[7:

4]==5)&&(M[3:

0]==9))

begin

M[7:

0]<=0;

end

else

begin

if(M[3:

0]==9)

begin

M[3:

0]<=0;

if(M[7:

4]==5)

beginM[7:

4]<=0;end

elseM[7:

4]<=M[7:

4]+1;

end

elseM[3:

0]<=M[3:

0]+1;

end

end

end

assignCP60M=~(M[6]&M[4]&M[3]&M[0]);

endmodule

/*分计数器m60*/

modulem60(M,CP60M,CPM,RD);

output[7:

0]M;

outputCP60M;

inputCPM;

inputRD;

reg[7:

0]M;

wireCP60M;

always@(negedgeRDorposedgeCPM)

begin

if(!

RD)

beginM[7:

0]<=0;

end

else

begin

if((M[7:

4]==5)&&(M[3:

0]==9))

begin

M[7:

0]<=0;

end

else

begin

if(M[3:

0]==9)

begin

M[3:

0]<=0;

if(M[7:

4]==5)

beginM[7:

4]<=0;end

elseM[7:

4]<=M[7:

4]+1;

end

elseM[3:

0]<=M[3:

0]+1;

end

end

end

assignCP60M=~(M[6]&M[4]&M[3]&M[0]);

endmodule

/*小时计数器m24*/

modulem24(H,CPH,RD);

output[7:

0]H;

inputCPH,RD;

reg[7:

0]H;

always@(negedgeRDorposedgeCPH)

begin

if(!

RD)H[7:

0]<=0;

else

begin

if((H[7:

4]==2)&&(H[3:

0]==3))

begin

H[7:

0]<=0;

end

else

begin

if(H[3:

0]==9)

beginH[3:

0]<=0;

H[7:

4]<=H[7:

4]+1;

end

elseH[3:

0]<=H[3:

0]+1;

end

end

end

endmodule

/*秒分时控制计数器xiaoshi2*/

modulexiaoshi2(CPM,CPH,CPS,CP60M,CP60S,SWM,SWH);

outputCPM,CPH;

inputSWM,SWH;

inputCPS,CP60S,CP60M;

regCPM,CPH;

always@(SWMorSWHorCPSorCP60SorCP60M)

begin

case({SWM,SWH})

2'b01:

beginCPM<=CPS;CPH<=CP60M;end

2'b10:

beginCPM<=CP60S;CPH<=CPS;end

default:

beginCPM<=CP60S;CPH<=CP60M;end

endcase

end

endmodule

/*时段控制器sdkz*/

modulesdkz(h,sk);

input[7:

0]h;

outputsk;

regsk;

always@(h)

begin

if((h<=5)||(h>=19))

sk<=1;

else

sk<=0;

end

endmodule

/*报时计数器baoshi*/

modulebaoshi(m6,m4,m3,m0,s6,s4,s3,s0,dy,gy,bshi);

inputm6,m4,m3,m0,s6,s4,s3,s0,dy,gy;

outputbshi;

wirebm;

regbshi;

assignbm=m6&m4&m3&m3&m0&s6&s4&s0;

always@(bmors3ordyorgy)

begin

if(bm&s3)

bshi<=gy;

elseif(bm)

bshi<=dy;

else

bshi<=0;

end

endmodule

七:

各模块原理图及仿真波形:

24进制原理图:

60进制原理图:

电路原理图:

时段控制:

报时:

1、秒计数器仿真波形

2、分计数器的仿真波形

3、小时计数器的仿真波形

4、秒分时控制电路的仿真波形

5、时段控制的仿真波形

6、报时器的仿真波形

 

八、顶层文件及仿真波形

顶层文件的仿真波形:

九:

选用ACEX1K芯片中的EP1K30TC144-3型号,对芯片管脚号的分配如下:

十:

课程设计结论:

此次课程设计通过最终下载及编译可实现以上功能,在七段显示器上可实现秒、分计数器60进制,时计数器24进制显示,以及调节CLK1、CLK2的频率可使计数器上数字延时显示。

在正点报时中,当秒计数器进入56秒时,就会听到“嘀嘀嘀嘀-嘟”的声音。

十一:

心得体会:

两天的课程设计已经结束了,虽然开始的时候为此感到焦头烂额,但总算在同学和老师的帮助下坚持了下来,圆满的完成了此次FPGA课程设计。

通过这两天的学习,让我们更加熟练地掌握了MAXPLUS软件的使用以及VerilogHDL语言的逻辑编写。

特别锻炼了我们的团队合作,如在最后编译的时候,实现正点报时时怎么也出现不了声音,当时我仔细研究重新分析了一遍仍然找不到问题出在哪,最后在同学的帮助下才发现78号管脚忘了分配,修正后如愿听到了正点报时“嘀嘀嘀嘀-嘟”的声音。

总之,此次课程设计让我感受颇丰,学到了很多东西。

为我以后从事这方面的工作做了一个好的开始。

十二:

参考文献:

数字系统设计与VerilogHDL(第2版)王金明电子工业出版社

《FPGA原理及应用》赵雅兴天津大学出版社

《VHDL硬件描述语言与数字逻辑设计》侯伯亨西安电子科技大学出版社

FPGA设计网论坛

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1