基于FPGA的多功能数字钟课程设计.doc
FPGA课程设计报告
(实现多功能数字钟)
专业班级:07通信2班
姓名:朱绍兴
学号:070103021136
时间:2009.12.30
标题:设计多功能数字钟控制电路
任务书:用MAX+PLUSⅡ软件及VerilogHDL语言设计
一个多功能的数字钟,包括有时、分、秒的计
时,以及校时(对小时、分钟和秒能手动调整以校准时间)、正点报时(每逢整点,产生“嘀嘀嘀嘀-嘟”,4短一长的报时音)等附加功能。
关键词:24进制、60进制、正点报时、校时、数字钟
四、总体方案:多功能数字钟控制电路框图是由三部分组成的,即秒分时控制电路、整点报时控制电路、时段控制电路。用VerilogHDL硬件描述语言完成编译和仿真。
五、原理框图如下:
建立设计工程项目名和顶层图形文件。
建立设计工程项目名和顶层图形文件。
↓设计底层各模块
设计底层各模块*.v文件,仿真底层各模块*.v文件,仿真波形正确并打包
↓
用Max+plus
用Max+plusⅡ对打包好的文件进行管脚分配。
↓
在FPGA实验板上下载并观察功能
在FPGA实验板上下载并观察功能
六、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;
inpu