建设银行企业版网站,让wordpress支持ssl,做网站优惠,兰州开发公司目录
1.课题概述
2.系统仿真结果
3.核心程序与模型
4.系统原理简介
5.完整工程文件 1.课题概述
基于FPGA的电子万年历系统开发,包含各模块testbench。主要包含以下核心模块#xff1a;
时钟控制模块#xff1a;提供系统基准时钟和计时功能。
日历计算模块#xff1a…目录
1.课题概述
2.系统仿真结果
3.核心程序与模型
4.系统原理简介
5.完整工程文件 1.课题概述
基于FPGA的电子万年历系统开发,包含各模块testbench。主要包含以下核心模块
时钟控制模块提供系统基准时钟和计时功能。
日历计算模块处理年月日的计算和闰年判断。
秒表模块实现精确到 0.01 秒的计时功能。
2.系统仿真结果
FPGA仿真测试 当输入的i_run信号为1的时候秒表开始运行从上面我们可以看到最高位Num6的计数结果其余几位由于速度很快所以被缩小了看不清楚当i_set为1的时候秒表暂停。 这个模块主要是一个以秒为计数单位的计数器秒计数满60分累加1分计数满60的时候小时累加1小时计数满24的时候产生一个时钟信号用来确定日期加1。 这个模块主要是一个计数器当计数器计数到24小时的时候年月日模块计数器会自动加1表示日期往前累积1日。 这里我们分两个小模块来设计一个是日月模块一个是年模块当计数器计数到12月31日的时候那么年模块则进一。即年份增加一。
3.核心程序与模型
版本vivado2022.2
timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 14:45:46 04/09/2014
// Design Name:
// Module Name: tops
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module tops(i_clk,i_rst,i_Function_Controller,i_sel,i_set,i_run,o_Num1,o_Num2,o_Num3,o_Num4,o_Num5,o_Num6,o_Num7,o_Num8);input i_clk;
input i_rst;
input[1:0] i_Function_Controller;
input i_sel;
input i_set;
input i_run;
output[3:0]o_Num1;
output[3:0]o_Num2;
output[3:0]o_Num3;
output[3:0]o_Num4;
output[3:0]o_Num5;
output[3:0]o_Num6;
output[3:0]o_Num7;
output[3:0]o_Num8; wire Clock_mb;
wire Clock;clock_div clock_div_u(.i_clk (i_clk), .i_rst (i_rst), .i_sel (1b0), .o_clock1 (Clock_mb), .o_clock2 (Clock));//
wire CLK_Year;
wire[3:0]ym_Num1;
wire[3:0]ym_Num2;
wire[3:0]ym_Num3;
wire[3:0]ym_Num4;
wire[3:0]ym_Num5;
wire[3:0]ym_Num6;
wire[3:0]ym_Num7;
wire[3:0]ym_Num8;
year_month year_month_u(.i_clk (CLK_Year), .i_rst (i_rst), .i_sel (i_sel), .i_set (i_set), .o_Num1 (ym_Num1), .o_Num2 (ym_Num2), .o_Num3 (ym_Num3), .o_Num4 (ym_Num4), .o_Num5 (ym_Num5), .o_Num6 (ym_Num6), .o_Num7 (ym_Num7), .o_Num8 (ym_Num8));//
wire[3:0]tm_Num1;
wire[3:0]tm_Num2;
wire[3:0]tm_Num3;
wire[3:0]tm_Num4;
wire[3:0]tm_Num5;
wire[3:0]tm_Num6;
wire[3:0]tm_Num7;
wire[3:0]tm_Num8;
times times_u(.i_clk (Clock), .i_rst (i_rst), .i_run (i_run), .i_sel (i_sel), .i_set (i_set), .o_Num1 (tm_Num1), .o_Num2 (tm_Num2), .o_Num3 (tm_Num3), .o_Num4 (tm_Num4), .o_Num5 (tm_Num5), .o_Num6 (tm_Num6), .o_CLK_Year (CLK_Year), .CNT ());assign tm_Num7 4d0;
assign tm_Num8 4d0;//
wire[3:0]mb_Num1;
wire[3:0]mb_Num2;
wire[3:0]mb_Num3;
wire[3:0]mb_Num4;
wire[3:0]mb_Num5;
wire[3:0]mb_Num6;
wire[3:0]mb_Num7;
wire[3:0]mb_Num8;
miaobiao miaobiao_u(.i_clk (Clock_mb), .i_rst (i_rst), .i_run (i_run), .i_pause (i_set), .i_clear (i_sel), .o_Num1 (mb_Num1), .o_Num2 (mb_Num2), .o_Num3 (mb_Num3), .o_Num4 (mb_Num4), .o_Num5 (mb_Num5), .o_Num6 (mb_Num6));
assign mb_Num7 4d0;
assign mb_Num8 4d0;//
reg[3:0]o_Num1;
reg[3:0]o_Num2;
reg[3:0]o_Num3;
reg[3:0]o_Num4;
reg[3:0]o_Num5;
reg[3:0]o_Num6;
reg[3:0]o_Num7;
reg[3:0]o_Num8;
always (posedge i_clk or posedge i_rst)
beginif(i_rst)begino_Num1 4d0;o_Num2 4d0;o_Num3 4d0;o_Num4 4d0;o_Num5 4d0;o_Num6 4d0;o_Num7 4d0;o_Num8 4d0;end
else beginif(i_Function_Controller 2b00)begino_Num1 ym_Num1;o_Num2 ym_Num2;o_Num3 ym_Num3;o_Num4 ym_Num4;o_Num5 ym_Num5;o_Num6 ym_Num6;o_Num7 ym_Num7;o_Num8 ym_Num8;endif(i_Function_Controller 2b01)begino_Num1 tm_Num1;o_Num2 tm_Num2;o_Num3 tm_Num3;o_Num4 tm_Num4;o_Num5 tm_Num5;o_Num6 tm_Num6;o_Num7 tm_Num7;o_Num8 tm_Num8; endif(i_Function_Controller 2b11)begino_Num1 mb_Num1;o_Num2 mb_Num2;o_Num3 mb_Num3;o_Num4 mb_Num4;o_Num5 mb_Num5;o_Num6 mb_Num6;o_Num7 mb_Num7;o_Num8 mb_Num8; end end
endendmodule
00X6_004m
4.系统原理简介
系统顶层框图如下 1.该系统的基本功能
时钟显示时、分24 小时制
日历显示年、月、日
秒表功能精确到 0.01 秒支持开始 / 暂停 / 复位
2.模式切换功能
我们的控制输入有5个脚分析功能如下所示
i_Function_Controller0显示年月日
i_sel选择需要调整的某位数字。
i_set计数器调整需要调整的位置的数字。
具体调整的时候首先选择i_sel按键按一下需要调整的位置会移动一次然后移动到需要调整的位置上然后松开i_sel然后按下i_set调整显示的数字。
i_run不使用
i_Function_Controller1显示时间小时分秒
i_sel
i_set
i_run
正常工作的时候上面三个设置分别输入0,0,1
当需要调整时间的时候设置i_run0然后设置i_sel选择对应的需要调整的数字位然后设置i_set设置具体的值其中秒位置如果设置i_set。那么秒直接清零。
注意因为时间部分计数到24小时的时候年月日才被加1所以在年月日这里i_run不使用他是靠日期模块来驱动的。
i_Function_Controller3秒表的控制
i_sel清零
i_set暂停
i_run开始秒表计时
5.完整工程文件
v
v