CDC Clock Domain Crossing CDC (Clock Domain Crossing) 是指在数字电路设计中,信号从一个时钟域到另一个时钟域的传输过程。这种传输可能会引发时序问题,例如时钟偏移、保持时间冲突等。本文将 CDC 分解为两部分:同步时钟域信号处理和异步时钟域信号处理。 同步时钟域信号处理 在全同步设计中,如果信号来自同一时钟域,各模块的输入不需要寄存。只要满足建立时间、保持时间的约束,可以保证在时钟上升沿到来时,输入信号已经稳定,可以采样得到正确的值。但是,如果模块需要使用输入信号的跳变沿(例如帧同步信号),千万不要直接使用。因为 begin ... end 语句段涉及到多个 D 触发器,无法保证这些触发器时钟输入的跳变沿到达的时刻处于同一时刻。 为了解决这个问题,可以使用边沿检测电路,例如: ```vhdl always @ (posedge Clk) begin inputs_reg <= inputs; if (inputs_reg == 1'b0 && inputs == 1'b1) begin ... end ... end ``` 异步时钟域信号处理 异步时钟域信号处理可以分为单一信号和总线信号处理两部分。 2.1 单一信号处理 如果输入信号来自异步时钟域(例如 FPGA 芯片外部的输入),一般采用同步器进行同步。最基本的结构是两个紧密相连的触发器,第一拍将输入信号同步化,同步化后的输出可能带来建立/保持时间的冲突,产生亚稳态。需要再寄存一拍,减少亚稳态带来的影响。这种最基本的结构叫做电平同步器。 如果需要用跳变沿而不是电平,又可以使用边沿同步器。边沿同步器在电平同步器之后再加一级触发器,用第二级触发器的输出和第三级触发器的输出来进行操作。 2.2 总线信号处理 如果简单的对异步时钟域过来的一组信号分别用同步器,那么对这一组信号整体而言,亚稳态出现的几率将大大上升。基于这一观点,对于总线信号的处理可以有两种方式。 如果这组信号只是顺序变化的话(如存储器的地址),可以将其转换为格雷码后再发送,由于格雷码相邻码字只相差一个比特,上面说的同步器可以很好的发挥作用。 但是如果信号的变化是随机的(如存储器的数据),这种方法便失效了,这时可以采用握手协议来同步总线信号。 CDC Clock Domain Crossing 是数字电路设计中一个非常重要的问题,需要根据具体情况选择合适的同步方法,避免时序问题的出现。
2026-01-28 09:04:19 505KB
1
在当今嵌入式系统开发领域,STM32微控制器家族凭借其高性能、低功耗、丰富的外设支持等特性,得到了广泛应用。为了满足特定项目需求,开发者们经常需要通过定制化的工程配置来实现所需功能。本文档详细记录了如何在STM32平台上,利用STM32CubeMX和ThreadX/USBX模块来生成一个USB CDC ACM(通用串行总线通信设备类抽象模型)虚拟串口项目,同时确保项目不包含电源分配(PD)功能。 文档描述了客户需求:客户正在使用STM32H563微控制器开发产品,需要实现一个不支持PD功能的USB CDC ACM虚拟串口工程。由于STM32CubeH5代码库中默认工程包含PD功能,这就要求开发人员在硬件和软件层面进行适当的调整。 硬件调整方面,文档详细介绍了如何通过修改NUCLEO_H563ZI开发板上的电路来实现不使用PD功能。具体操作包括更换电阻位置以将PA11、PA12连接到开发板的CN12上,从而可以直接连接USB线。同时指出USB连接线应该连接GND、D+、D-三根线,以及在客户开发板设计中,VBUS连接的重要性。 在软件配置方面,文档逐步指导如何使用STM32CubeMX软件进行工程配置,具体步骤包括: 1. 创建一个新的不带trustZone的工程。 2. 配置USB外设,并使能USB全局中断。 3. 配置ThreadX外设,并使能Core。 4. 配置USBX模块,包括启用Core System,选择Device CoreStack FS和Device Controllers FS,选择CDC ACM类,并配置USB基本参数。 5. 选择其它Platform的USB配置。 6. 配置SYS,使用TIM6作为系统滴答时钟的时钟源。 7. 使用GPIO来控制USB的断开和连接,并使能外部中断。 8. 配置系统时钟为250MHz。 文档还强调了在USB CDC ACM虚拟串口项目中,要模拟USB的断开和连接,可以使用一个GPIO引脚(GPIO_EXTI13)来控制,并使能相应的外部中断。 通过对硬件和软件的定制化调整,开发者能够创建出既符合特定项目需求又具备必要功能的USB CDC ACM虚拟串口工程,而无需电源分配(PD)功能。这对于那些需要USB通信但对电源管理有特殊要求的应用场景非常有用。 本文档内容丰富,不仅涵盖了硬件层面的电路调整,还包括了软件层面的详细配置过程,为实际项目开发提供了极其实用的指导和参考。无论是硬件工程师还是软件开发人员,都能从中获取到宝贵的信息和经验,以更好地完成USB CDC ACM虚拟串口的开发工作。
2026-01-22 21:14:08 1.38MB
1
论文提出了一种基于跨尺度动态卷积的YOLO融合网络(CDC-YOLOFusion),用于可见光-红外目标检测。该方法通过跨模态数据交换(CDS)模块生成混合模态图像,增强模型对跨模态相关性的理解。核心创新是跨尺度动态卷积融合(CDCF)模块,该模块利用跨尺度特征增强和双动态卷积融合机制,自适应地提取与数据分布相关的双模态特征。CDCF在跨模态核交互损失(KI Loss)的监督下,使卷积核同时关注模态共同特征和独特特征。实验表明,CDC-YOLOFusion在VEDAI、FLIR和LLVIP三个数据集上均达到最先进性能,mAP最高提升3%,且参数量和推理时间平衡。消融实验验证了CDS和CDCF模块的有效性,其中CDS通过局部区域交换策略提升模型鲁棒性,而CDCF的多尺度特征聚合和动态卷积机制显著改善特征融合效果。 CDC-YOLOFusion是一种先进的跨模态目标检测网络,它整合了可见光和红外图像数据,提供了更全面的检测能力。该网络的核心创新是跨尺度动态卷积融合(CDCF)模块,它通过跨尺度特征增强和动态卷积机制自适应地提取特征,这些特征与数据分布密切相关,并能够同时关注模态间的共同特征和独特特征。CDCF模块在跨模态核交互损失(KI Loss)的指导下工作,有效监督卷积核的行为,使其在特征提取时更为精确。 在数据预处理阶段,CDC-YOLOFusion采用了跨模态数据交换(CDS)模块,该模块通过生成混合模态图像来增强模型对跨模态相关性的理解,进一步提升了模型的鲁棒性。通过局部区域交换策略,CDS模块提升了模型在不同模态下的性能。 在实际应用中,CDC-YOLOFusion在网络架构上实现了mAP的最高提升3%,在性能提升的同时,它还保持了参数量和推理时间的平衡。这一点在实际应用中尤为关键,因为它保证了实时目标检测的可行性。此外,网络的消融实验详细验证了CDS和CDCF模块的有效性,显示出这些模块对于改善特征融合和提高模型性能的重要性。 CDC-YOLOFusion网络的设计理念和性能提升,证明了在跨模态数据处理领域,动态卷积技术与融合网络相结合,可以显著提高目标检测的准确性和鲁棒性。这种模型设计为解决实际中的多模态目标检测问题提供了新的视角和方法论。
2026-01-19 21:38:27 6KB
1
https://blog.csdn.net/weixin_53403301/article/details/145056430 【STM32】HAL库的USB虚拟串口(VPC、CDC)配置及数据传输,USB复位及自动重连的解决方案 STM32微控制器系列由意法半导体(STMicroelectronics)生产,广泛应用于嵌入式系统中。HAL库是ST提供的硬件抽象层库,它提供了一套标准的编程接口,使得开发者可以不必直接与硬件寄存器打交道,从而简化了开发过程。在STM32的HAL库中,实现USB虚拟串口(Virtual COM Port,VCP)和USB通信设备类(Communication Device Class,CDC)的功能,可以让开发者利用USB接口实现串口通信。 USB虚拟串口(VCP)是一个在USB和串行通信之间转换的设备,它允许数据通过USB接口发送和接收,而计算机端的应用程序可以像处理传统串口设备一样处理这些数据。CDC是USB设备的一种类别,专为通信设备设计,常见于USB调制解调器、ISDN适配器等。通过CDC实现的USB通信,可以在不安装额外驱动的情况下与PC端进行通信。 要实现STM32的USB虚拟串口和CDC通信,首先需要在硬件上确保微控制器支持USB功能,并且正确的外设时钟已经配置。之后,通过STM32CubeMX工具或者手动配置方式,在HAL库中初始化USB硬件外设。接下来,需要编写相应的USB通讯协议栈代码,实现VCP或CDC的通信协议。这通常包括USB设备的枚举过程、数据传输、端点的配置和使用等。 数据传输方面,STM32的HAL库通过中断或者轮询的方式从USB接收数据,并将其转发到指定的目的地,同时,也可以将数据从来源地发送到USB接口,通过PC端的应用程序进行接收。在数据处理过程中,开发者需要关注数据的缓冲管理和错误处理机制,以保证数据传输的稳定性和正确性。 USB复位和自动重连机制是指当USB连接出现问题时,系统能够自动执行复位操作,并尝试重新连接。这一机制可以显著提高系统的稳定性和用户体验。在STM32 HAL库中,这通常涉及到USB设备状态机的处理,以及对USB事件的监听和响应。在USB复位事件发生时,系统需要正确处理USB堆栈的清理和重初始化工作,而在检测到USB断开连接后,应该启动定时器或者轮询检测,尝试进行USB重新连接。 在实现上述功能时,开发者需要参考STM32的参考手册、数据手册以及HAL库的文档,这些文档详细描述了库函数的使用方法和USB相关的配置细节。此外,还有许多在线资源和论坛可以提供帮助,比如CSDN博客中的相关文章,它们可以为开发者遇到的问题提供解决方案和调试思路。 STM32的HAL库简化了USB虚拟串口和CDC通信的实现过程,但仍然需要开发者具备一定的USB通信和嵌入式编程的基础知识。在实际应用中,还需要考虑USB供电、通信速率、兼容性和可靠性等因素。通过仔细设计和调试,可以实现一个稳定且高效的USB通信系统。
2026-01-13 18:05:26 23.41MB stm32 USB
1
spyglass 做cdc、lint、power分析的Userguide,包含 1、spyglass cdc、lint、power分析使用流程; 2、spyglass cdc、lint、power分析的规则、methodology、goal等介绍 3、SpyGlass_Explorer_UserGuide、SpyGlass_LintRules_Reference、SpyGlass_LowPowerRules_Reference、SpyGlass_ClockResetRules_Reference、SpyGlass_ConstraintsRules_Reference、SpyGlass_AreaRules_Reference等
2025-11-27 21:26:47 153.52MB spyglass lint 功耗分析
1
STM32F103创建的CDC 但没有虚拟COM口,使用的模式为winsub模式 串口总线模式,使用zadig-2.8修改STM32的驱动为winusb 然后使用test文件夹中的上位机 可以说实现自发自收
2025-10-10 10:53:35 13.75MB WINUSB STM32-USB
1
在当今的电子工程领域,USB(通用串行总线)已成为连接计算机与各种外设的通用接口。AG32VF407VGT6是一款微控制器(MCU),广泛应用于需要高性能处理和丰富外设接口的嵌入式系统中。由于其强大的处理能力和灵活的外设支持,AG32VF407VGT6成为开发各种应用的理想选择,比如开发具有USB功能的虚拟串口。 虚拟串口,从字面理解,即不是真实存在的物理串口,而是通过软件方式模拟出来的串口。在某些情况下,物理串口可能不足以满足工程师的需求,或者为了方便数据的传输与转换,因此需要虚拟串口来实现类似的功能。USB的CDC(通信设备类)功能正是实现这一目的的理想选择。 CDC是一种通信协议,能够让USB设备以虚拟串口的形式与PC进行通信。在AG32VF407VGT6这样的MCU上实现USB CDC功能,可以使设备表现得如同一个标准的串行通信设备。这样,计算机端就可以通过USB接口,利用标准的串口通信协议与之进行数据交换,而无需安装额外的驱动程序,就像与一个真实的串口设备通信一样。 在给出的文件信息中,提到的“example_h407”可能是一个项目名称或者是包含示例代码的文件夹名称。这个文件夹或项目可能包含了用于AG32VF407VGT6微控制器的USB CDC虚拟串口功能的示例代码。开发者可以参考这些示例代码,快速实现类似的功能,或者用于测试和验证自己的USB CDC虚拟串口设计。 开发USB CDC虚拟串口功能,通常需要以下几个步骤: 1. 配置MCU的USB模块,使其工作在CDC模式。 2. 实现USB端点的通信协议,以便能够处理数据的发送和接收。 3. 编写相应的USB描述符,让PC端能够识别设备类型并正确安装驱动。 4. 开发上层的应用程序接口(API),方便用户通过API调用发送和接收数据。 5. 测试整个通信链路,确保数据传输的稳定性和可靠性。 通过这种方式,开发者不仅能够为AG32VF407VGT6微控制器增加USB接口的灵活性,还能为嵌入式设备提供更加友好的与PC通信的接口。这在物联网、工业自动化和消费电子等诸多领域,都是一个非常有价值的功能。 AG32VF407VGT6微控制器的USB CDC虚拟串口功能,允许开发者轻松地将USB通信集成到自己的嵌入式设计中,极大地扩展了设备的兼容性和可用性。它不仅简化了硬件的复杂性,也降低了开发者的开发难度,为设备与计算机之间的通信提供了更多可能性。而具体的代码示例和项目文件则为这一过程提供了必要的参考和便利,是学习和实现USB CDC功能的宝贵资源。
2025-09-14 10:47:50 3.84MB usb 虚拟串口
1
标题 "flink CDC监控PG数据库的demo案例" 涉及到的是使用Apache Flink的Change Data Capture (CDC)功能来实时监控PostgreSQL (PG)数据库的变化。Flink CDC允许我们近乎实时地捕获数据库中的插入、更新和删除操作,然后将这些变更流式传输到各种下游处理系统或数据存储。 在描述中提到的"demo案例"通常包含了一个完整的示例,它展示了如何配置和运行Flink CDC任务来连接到PG数据库并捕获其变更事件。这样的案例对于学习和理解如何在实际环境中实施Flink CDC非常有帮助。 以下是关于Flink CDC监控PG数据库的一些关键知识点: 1. **Apache Flink**:Flink是一个开源的流处理和批处理框架,支持低延迟、高吞吐量的数据处理,具有强大的状态管理和容错能力。 2. **Change Data Capture (CDC)**:这是一种数据库技术,用于捕获数据库中发生的结构化数据变化,以便进行实时数据同步、审计追踪或其他实时分析应用。 3. **PostgreSQL (PG)**:PostgreSQL是一种开源的对象关系型数据库管理系统,广泛应用于企业级数据存储,支持多种编程语言和高级数据库特性。 4. **Flink CDC连接器**:Flink提供了专门的连接器,如`debezium-postgres`,来与PG数据库进行交互,监听逻辑复制槽(logical replication slots)以获取变更事件。 5. **配置过程**:设置Flink CDC通常包括创建PG数据库的逻辑复制槽,配置Flink作业以连接到PG服务器,指定要监听的表以及如何处理变更事件。 6. **数据模型**:Flink CDC将PG数据库的变更事件转化为Flink的DataStream或Table,这使得用户可以使用Flink的API进行进一步的数据处理,如过滤、聚合、窗口等。 7. **实时处理**:捕获的变更事件被实时推送到Flink的执行流中,实现数据的实时分析和快速响应。 8. **下游系统**:处理后的数据可以写回到另一个PG数据库,或者发送到其他系统,如Hadoop HDFS、Kafka、Elasticsearch等。 9. **故障恢复**:Flink的检查点机制确保了即使在任务失败后,也能从一个确定的状态恢复,避免数据丢失。 10. **监控与调试**:Flink提供丰富的监控和日志信息,帮助开发者诊断问题和优化性能。 在压缩包文件"**FlinkCDC-PG-main**"中,可能包含了示例代码、配置文件、README文档等资源,用于指导用户如何设置和运行这个特定的Flink CDC监控PG数据库的案例。通过阅读和运行这些示例,你可以更深入地了解Flink CDC的实际工作流程,并将其应用到自己的项目中。
2025-08-06 13:53:03 8KB flink
1
flink-connector-kb-cdc
2025-04-07 14:12:47 155KB 人大金仓 kingbase 国产数据库
1
STM32F103USB例程,HAL库,包括CDC、HID、MSC、CDC+HID,CDC+HID+MSC。
2024-06-24 15:10:38 5.91MB stm32 usb
1