FPGA课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

F P
G A课程设计报告
(实现多功能数字钟)
专业班级: 07通信2班
******
学号:************
时间:2009.12.30
一、标题:设计多功能数字钟控制电路
二、任务书:用MAX+PLU SⅡ软件及Verilog HDL语言设计
一个多功能的数字钟,包括有时、分、秒的计
时,以及校时(对小时、分钟和秒能手动调整
以校准时间)、正点报时(每逢整点,产生“嘀
嘀嘀嘀-嘟”,4短一长的报时音)等附加功能。

三、关键词:24进制、60进制、正点报时、校时、数字钟
四、总体方案:多功能数字钟控制电路框图是由三部分组成
的,即秒分时控制电路、整点报时控制电路、
时段控制电路。

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

五、原理框图如下:



六、Verilog HDL硬件描述语言编写的功能模块:
/*秒计数器m60*/
module m60(M,CP60M,CPM,RD);
output [7:0]M;
output CP60M;
input CPM;
input RD;
reg [7:0]M;
wire CP60M;
always@(negedge RD or posedge CPM)
begin
if(!RD)
begin M[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)
begin M[7:4]<=0;end
else M[7:4]<=M[7:4]+1;
end
else M[3:0]<=M[3:0]+1;
end
end
end
assign CP60M=~(M[6]&M[4]&M[3]&M[0]); endmodule
/*分计数器m60*/
module m60(M,CP60M,CPM,RD);
output [7:0]M;
output CP60M;
input CPM;
input RD;
reg [7:0]M;
wire CP60M;
always@(negedge RD or posedge CPM) begin
if(!RD)
begin M[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)
begin M[7:4]<=0;end
else M[7:4]<=M[7:4]+1;
end
else M[3:0]<=M[3:0]+1;
end
end
end
assign CP60M=~(M[6]&M[4]&M[3]&M[0]); endmodule
/*小时计数器m24*/
module m24(H,CPH,RD);
output [7:0]H;
input CPH,RD;
reg [7:0]H;
always@(negedge RD or posedge CPH) 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)
begin H[3:0]<=0;
H[7:4]<=H[7:4]+1;
end
else H[3:0]<=H[3:0]+1;
end
end
end
endmodule
/*秒分时控制计数器xiaoshi2*/
module xiaoshi2(CPM,CPH,CPS,CP60M,CP60S,SWM,SWH);
output CPM,CPH;
input SWM,SWH;
input CPS,CP60S,CP60M;
reg CPM,CPH;
always@(SWM or SWH or CPS or CP60S or CP60M)
begin
case({SWM,SWH})
2'b01: begin CPM<=CPS;CPH<=CP60M;end
2'b10: begin CPM<=CP60S;CPH<=CPS;end
default: begin CPM<=CP60S;CPH<=CP60M;end endcase
end
endmodule
/*时段控制器sdkz*/
module sdkz(h,sk);
input [7:0]h;
output sk;
reg sk;
always@(h)
begin
if((h<=5)||(h>=19))
sk<=1;
else
sk<=0;
end
endmodule
/*报时计数器baoshi*/
module baoshi(m6,m4,m3,m0,s6,s4,s3,s0,dy,gy,bshi); input m6,m4,m3,m0,s6,s4,s3,s0,dy,gy;
output bshi;
wire bm;
reg bshi;
assign bm=m6&m4&m3&m3&m0&s6&s4&s0; always@(bm or s3 or dy or gy)
begin
if(bm&s3)
bshi<=gy;
else if(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软件的使用以及Verilog HDL语言的逻辑编写。

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

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

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

十二:参考文献:
数字系统设计与Verilog HDL(第2版) 王金明电子工业出版社
《FPGA原理及应用》赵雅兴天津大学出版社
《VHDL硬件描述语言与数字逻辑设计》侯伯亨西安电子科技大学出版社
FPGA设计网论坛。

相关文档
最新文档