基于FPGA的电子万年历系统开发,包含各模块testbench
目录
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 (1'b0), .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 = 4'd0;
assign tm_Num8 = 4'd0;//======================================================================
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 = 4'd0;
assign mb_Num8 = 4'd0;//=====================================================================
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 <= 4'd0;o_Num2 <= 4'd0;o_Num3 <= 4'd0;o_Num4 <= 4'd0;o_Num5 <= 4'd0;o_Num6 <= 4'd0;o_Num7 <= 4'd0;o_Num8 <= 4'd0;end
else beginif(i_Function_Controller == 2'b00)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 == 2'b01)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 == 2'b11)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_Controller=0;显示年月日
i_sel:选择需要调整的某位数字。
i_set:计数器,调整需要调整的位置的数字。
具体调整的时候,首先选择i_sel,按键按一下,需要调整的位置会移动一次,然后移动到需要调整的位置上,然后松开i_sel,然后按下i_set,调整显示的数字。
i_run:不使用
i_Function_Controller=1;显示时间,小时,分,秒
i_sel:
i_set:
i_run:
正常工作的时候,上面三个设置分别输入0,0,1
当需要调整时间的时候,设置i_run=0,然后设置i_sel,选择对应的需要调整的数字位,然后设置i_set,设置具体的值,其中秒位置,如果设置i_set。那么秒直接清零。
注意,因为时间部分计数到24小时的时候,年月日才被加1,所以在年月日这里i_run不使用,他是靠日期模块来驱动的。
i_Function_Controller=3;秒表的控制
i_sel:清零
i_set:暂停
i_run:开始秒表计时
5.完整工程文件
v
相关文章:
基于FPGA的电子万年历系统开发,包含各模块testbench
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于FPGA的电子万年历系统开发,包含各模块testbench。主要包含以下核心模块: 时钟控制模块:提供系统基准时钟和计时功能。 日历计算模块:…...
上位机知识篇---Web
文章目录 前言 前言 本文简单介绍了Web。...
2025 ISCC 练武赛Pwn-wp(含附件)
前言 去年个人赛报名了忘记打了(笑), 所以这应该算是我第一次参加ISCC, 体验也是非常非常非常非常的cha(第四声)!!! 主办方也是非常幽默,pwn和web都是公用容器,那web最后都被当成玩具玩坏了 下面是这次练武题的pwn所有附件 通过网盘分享的文件…...
LeetCode Hot100刷题——除自身以外数组的乘积
238. 除自身以外数组的乘积 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&a…...
IDEA - Windows IDEA 代码块展开与折叠(基础折叠操作、高级折叠操作)
一、基础折叠操作 折叠当前代码块:Ctrl - # 操作方式按下 【Ctrl】 键,再按下 【-】 键展开当前代码块:Ctrl # 操作方式按下 【Ctrl】 键,再按下 【】 键折叠所有代码块:Ctrl Shift - # 操作方式按下 【Ctrl】…...
javaSE.Map
Map存储映射关系。键值对。key-value 左边值映射着右边的值,左边相当于钥匙,开到右边的门获取得到信息。 get👇put 是否存在该key👇containsKey() map.values👇 entrySet👇 entrySet()获取map中所有的键…...
Python Requests库完全指南:从入门到精通
引言 在Python的生态系统中,requests库以其简洁优雅的API设计和强大的功能,成为HTTP请求处理领域的标杆工具。无论是数据爬虫开发、API接口调用,还是自动化测试场景,requests都能将复杂的网络交互简化为几行可读性极高的代码。相…...
1.QPushBotton 以及 对象树
目录 1. 创建第一个Qt程序 1.1 初始化设置 🍐 选择存储位置 🍊 Kit 🍋 类信息 🍌 项目管理 1.2 代码 🍉 main.cpp 🍇widget.h 🍓 widget.cpp 1.3 .pro文件 🍈 常见模块…...
GO语言语法---For循环、break、continue
文章目录 1. 基本for循环(类似其他语言的while)2. 经典for循环(初始化;条件;后续操作)3. 无限循环4. 使用break和continue5 . 带标签的循环(可用于break/continue指定循环)1、break带标签2、continue带标签…...
网络编程-select(二)
一、I/O多路复用 1、为什么要多路复用 之前开启多线程能实时接收数据,并且也不是一次性连接服务。但毕竟是一请求一连接,每有一个客户端向服务端发起请求,就会创建一个线程,当请求达到上千上万,就会创建上千上万的线…...
2025年PMP 学习十九 第12章 项目采购管理
2025年PMP 学习十九 第12章 项目采购管理 序号过程过程组1规划采购管理规划2实施采购执行3控制采购监控4合同管理- 文章目录 2025年PMP 学习十九 第12章 项目采购管理12 项目采购管理建立战略合作伙伴关系的意义:细化采购步骤 12.1 规划采购管理1. **定义与作用**2…...
10.11 LangGraph多角色Agent开发实战:生产级AI系统架构与性能优化全解析
LangGraph 项目:High-level API for Multi-actor Agents 关键词:LangGraph 多角色 Agent, 状态管理, 持久化机制, 工作流编排, 生产级 AI 系统 1. LangGraph 设计哲学与架构演进 LangGraph 是 LangChain 生态中首个面向 多角色协作 Agent 的高阶 API 框架,其核心设计思想可…...
计算机网络概要
⽹络相关基础知识 协议 两设备之间使⽤光电信号传输信息数据 要想传递不同信息 那么⼆者ᳵ就需要约定好的数据格式 层 封装 继承 多态是计算机的性质 它们⽀持了软硬件分层的实现 同层协议可以ᳵ接通信 同层协议ᳵ不直接通信 是各⾃调⽤下层提供的结构能⼒完成通信 分层…...
Visual Studio已更新为17.14+集成deepseek实现高效编程
01 Visual Studio 2022 v17.14。 此更新侧重于全面提供出色的开发人员体验,侧重于稳定性和安全性以及 AI 改进。 02 GPT-4o代码完成模式 我们非常高兴地宣布,新的 GPT-4o Copilot 代码完成模型现已在 Visual Studio 17.14 中为 GitHub Copilot 用户…...
axios的基本使用
1. Axios概述 Axios 是一个基于 Promise 的 HTTP 客户端库,专为浏览器和 Node.js 设计,用来发送AJAX请求。可以通过npm install -g axios安装axios库。Axios有以下特征: 跨平台兼容性:同一套代码可运行于浏览器和 Node.js。在浏…...
【第三十六周】LoRA 微调方法
LoRA 摘要Abstract文章信息引言方法LoRA的原理LoRA在Transformer中的应用补充其他细节 实验与分析LoRA的使用论文实验结果分析 总结 摘要 本篇博客介绍了LoRA(Low-Rank Adaptation),这是一种面向大规模预训练语言模型的参数高效微调方法&…...
fcQCA模糊集定性比较分析法-学习笔记
模糊集定性比较分析(fsQCA,Fuzzy-set Qualitative Comparative Analysis) 是一种结合了定性和定量元素的研究方法,用于分析中小样本数据中的复杂因果关系。 1. 理解基础概念 QCA的核心思想: 基于集合论和布尔代数&a…...
基于WebRTC的实时语音对话系统:从语音识别到AI回复
基于WebRTC的实时语音对话系统:从语音识别到AI回复 在当今数字化时代,实时语音交互已成为人机界面的重要组成部分。本文将深入探讨一个基于WebRTC技术的实时语音对话系统,该系统集成了语音识别(ASR)、大语言模型(LLM)和语音合成(TTS)技术&am…...
Text2SQL:自助式数据报表开发---0517
Text2SQL技术 早期阶段:依赖于人工编写的规则模板来匹配自然语言和SQL语句之间的对应关系 机器学习阶段:采用序列到序列模型等机器学习方法来学习自然语言与SQL之间的关系 LLM阶段:借助LLM强大的语言理解和代码生成能力,利用提示…...
关于 Web 漏洞原理与利用:1. SQL 注入(SQLi)
一、原理: 拼接 SQL 语句导致注入 SQL 注入的根本原因是:开发者将用户的输入和 SQL 语句直接拼接在一起,没有任何过滤或校验,最终被数据库“当作语句”执行了。 这就像是我们给数据库写了一封信,结果攻击者在我们的…...
【NLP 75、如何通过API调用智谱大模型】
事事忘记,事事等待,事事自愈 —— 25.5.18 一、调用智谱大模型 zhipuai.model_api.invoke():调用智谱 AI 的大模型(如 ChatGLM)进行文本生成或推理,支持同步请求。 参数列表 参数名类型是否必需默认值说…...
【RabbitMQ】 RabbitMQ高级特性(二)
文章目录 一、重试机制1.1、重试配置1.2、配置交换机&队列1.3、发送消息1.4、消费消息1.5、运行程序1.6、 手动确认 二、TTL2.1、设置消息的TTL2.2、设置队列的TTL2.3、两者区别 三 、死信队列6.1 死信的概念3.2 代码示例3.2.1、声明队列和交换机3.2.2、正常队列绑定死信交…...
EMQX开源版安装指南:Linux/Windows全攻略
EMQX开源版安装教程-linux/windows 因最近自己需要使用MQTT,需要搭建一个MQTT服务器,所以想到了很久以前用到的EMQX。但是当时的EMQX使用的是开源版的,在官网可以直接下载。而现在再次打开官网时发现怎么也找不大开源版本了,所以…...
MySQL 数据库备份与还原
作者:IvanCodes 日期:2025年5月18日 专栏:MySQL教程 思维导图 备份 (Backup) 与 冗余 (Redundancy) 的核心区别: 🎯 备份是指创建数据的副本并将其存储在不同位置或介质,主要目的是在发生数据丢失、损坏或逻辑错误时进…...
【数据结构】2-3-4 单链表的建立
数据结构知识点合集 尾插法建立单链表 建立链表时总是将新节点插入到链表的尾部,将新插入的节点作为链表的尾节点 /*尾插法建立链表L*/ LinkList List_TailInsert(LinkList &L) { int x; /*建立头节点*/ L (LNode *)malloc(sizeof(LNode)); /*…...
JVM如何处理多线程内存抢占问题
目录 1、堆内存结构 2、运行时数据 3、内存分配机制 3.1、堆内存结构 3.2、内存分配方式 1、指针碰撞 2、空闲列表 4、jvm内存抢占方案 4.1、TLAB 4.2、CAS 4.3、锁优化 4.4、逃逸分析与栈上分配 5、问题 5.1、内存分配竞争导致性能下降 5.2、伪共享(…...
猫番阅读APP:丰富资源,优质体验,满足你的阅读需求
猫番阅读APP是一款专为书籍爱好者设计的移动阅读应用,致力于提供丰富的阅读体验和多样化的书籍资源。它不仅涵盖了小说、非虚构、杂志等多个领域的电子书,还提供了个性化推荐、书架管理、离线下载等功能,满足不同读者的阅读需求。无论是通勤路…...
Redis 学习笔记 4:优惠券秒杀
Redis 学习笔记 4:优惠券秒杀 本文基于前文的黑马点评项目进行学习。 Redis 生成全局唯一ID 整个全局唯一 ID 的结构如下: 这里的时间戳是当前时间基于某一个基准时间(项目开始前的某个时间点)的时间戳。序列号是依赖 Redis 生…...
C++学习:六个月从基础到就业——C++17:if/switch初始化语句
C学习:六个月从基础到就业——C17:if/switch初始化语句 本文是我C学习之旅系列的第四十六篇技术文章,也是第三阶段"现代C特性"的第八篇,主要介绍C17引入的if和switch语句的初始化表达式特性。查看完整系列目录了解更多内…...
C++跨平台开发经验与解决方案
在当今软件开发领域,跨平台开发已成为一个重要的需求。C作为一种强大的系统级编程语言,在跨平台开发中扮演着重要角色。本文将分享在实际项目中的跨平台开发经验和解决方案。 1. 构建系统选择 CMake的优势 跨平台兼容性好 支持多种编译器和IDE 强大…...
RabbitMQ 工作模式(上)
前言 在 RabbitMQ 中,一共有七种工作模式,我们也可以打开官网了解: 本章我们先介绍前三种工作模式 (Simple)简单模式 P:producer 生产者,负责发送消息 C:consumer 消费者&#x…...
为什么需要加密机服务?
前言 大家好,我是老马。 以前我自己在写工具的时候,都是直接自己实现就完事了。 但是在大公司,或者说随着合规监管的要求,自己随手写的加解密之类的,严格说是不合规的。 作为一家技术性公司,特别是金融…...
【Linux】利用多路转接epoll机制、ET模式,基于Reactor设计模式实现
📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 上篇文章:多路转接epoll,实现echoserver 至此,Linux与…...
c/c++的findcontours崩溃解决方案
解决 Windows 平台 OpenCV findContours 崩溃:一种更稳定的方法 许多在 Windows 平台上使用 OpenCV 的开发者可能会在使用 findContours 函数时,遇到令人头疼的程序崩溃问题。尽管网络上流传着多种解决方案,但它们并非总能根治此问题。 当时…...
机器学习 Day18 Support Vector Machine ——最优美的机器学习算法
1.问题导入: 2.SVM定义和一些最优化理论 2.1SVM中的定义 2.1.1 定义 SVM 定义:SVM(Support Vector Machine,支持向量机)核心是寻找超平面将样本分成两类且间隔最大 。它功能多样,可用于线性或非线性分类…...
npm与pnpm--为什么推荐pnpm
包管理器中 npm是最经典的,但大家都任意忽略一个更优质的管理器:pnpm 1. 核心区别 特性npmpnpm依赖存储方式扁平化结构(可能重复依赖)硬链接 符号链接(共享依赖,节省空间)安装速度较慢&#…...
ollama调用千问2.5-vl视频图片UI界面小程序分享
1、问题描述: ollama调用千问2.5-vl视频图片内容,通常用命令行工具不方便,于是做了一个python UI界面与大家分享。需要提前安装ollama,并下载千问qwen2.5vl:7b 模型,在ollama官网即可下载。 (8G-6G 显卡可…...
济南国网数字化培训班学习笔记-第三组-1-电力通信传输网认知
电力通信传输网认知 电力通信基本情况 传输介质 传输介质类型(导引与非导引) 导引传输介质,如电缆、光纤; 非导引传输介质,如无线电波; 传输介质的选择影响信号传输质量 信号传输模式(单工…...
Kubernetes控制平面组件:Kubelet详解(六):pod sandbox(pause)容器
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
51单片机,两路倒计时,LCD1602 ,Proteus仿真
初始上电 默认2路都是0分钟的倒计时 8个按键 4个一组 一组控制一路倒计时 4个 按键:加 减 开始或者暂停 复位到0分钟相当于停止 针对第一路倒计时 4个 按键2:加 减 开始或者暂停 复位到0分钟相当于停止 针对第2路倒计时 哪一路到了0后蜂鸣器响 对应LED点亮 main.c 文件实现了…...
MySQL之储存引擎和视图
一、储存引擎 基本介绍: 1、MySQL的表类型由储存引擎(Storage Engines)决定,主要包括MyISAM、innoDB、Memory等。 2、MySQL数据表主要支持六种类型,分别是:CSV、Memory、ARCHIVE、MRG_MYISAN、MYISAM、InnoBDB。 3、这六种又分…...
写spark程序数据计算( 数据库的计算,求和,汇总之类的)连接mysql数据库,写入计算结果
1. 添加依赖 在项目的 pom.xml(Maven)中添加以下依赖: xml <!-- Spark SQL --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>3.3.0…...
一:操作系统之系统调用
系统调用:用户程序与操作系统交互的桥梁 在计算机的世界里,应用程序是我们日常接触最多的部分,比如浏览器、文本编辑器、游戏等等。然而,这些应用程序并不能直接控制硬件资源,比如读写硬盘、创建新进程、发送网络数据…...
【ROS2】 核心概念6——通信接口语法(Interfaces)
古月21讲/2.6_通信接口 官方文档:Interfaces — ROS 2 Documentation: Humble documentation 官方接口代码实战:https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Single-Package-Define-And-Use-Interface.html ROS 2使用简化的描…...
SmartETL函数式组件的设计与应用
SmartETL框架主要采用了面向对象的设计思想,将ETL过程中的处理逻辑抽象为Loader和Processor(对应loader模块和iterator模块),所有流程组件需要继承或实现DataProvider(iter方法)或JsonIterator(…...
Spring Security与SaToken的对比与优缺点分析
Spring Security与SaToken对比分析 一、框架定位 Spring Security 企业级安全解决方案,深度集成Spring生态提供完整的安全控制链(认证、授权、会话管理、攻击防护)适合中大型分布式系统 SaToken 轻量级权限认证框架,专注Token会…...
|从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面
🐑 |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面🐑 文章目录 🐑 |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面🐑♈前言♈♈Pyside2环境搭建♈♈做个简单的UI界面♈♒代码实现♒♒QTdesigner设计UI界面♒ ♒总…...
【爬虫】DrissionPage-7
官方文档: https://www.drissionpage.cn/browser_control/get_page_info/ 1. 页面信息 📌 html 描述:返回当前页面的 HTML 文本。注意:不包含 <iframe> 元素的内容。返回类型:str 示例: html_co…...
系统架构设计(十二):统一过程模型(RUP)
简介 RUP 是由 IBM Rational 公司提出的一种 面向对象的软件工程过程模型,以 UML 为建模语言,是一种 以用例为驱动、以架构为中心、迭代式、增量开发的过程模型。 三大特征 特征说明以用例为驱动(Use Case Driven)需求分析和测…...
深入解析Java事件监听机制与应用
Java事件监听机制详解 一、事件监听模型组成 事件源(Event Source) 产生事件的对象(如按钮、文本框等组件) 事件对象(Event Object) 封装事件信息的对象(如ActionEvent包含事件源信息…...