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