在雷达、导航等军事领域中,由于信号带宽宽,要求ADC的采样率高于30MSPS,分辨率大于10位。目前高速高分辨率ADC器件在采样率高于10MSPS时,量化位数可达14位,但实际分辨率受器件自身误差和电路噪声的影响很大。在数字通信、数字仪表、软件无线电等领域中应用的高速ADC电路,在输入信号低于1MHz时,实际分辨率可达10位,但随输入信号频率的增加下降很快,不能满足军事领域的使用要求。 ADC(Analog-to-Digital Converter)是将模拟信号转换为数字信号的关键部件,在现代电子系统中扮演着至关重要的角色。高速高分辨率ADC尤其在雷达、导航等军事领域中有着广泛的应用,因为这些系统通常需要处理宽频带信号,对ADC的采样率和分辨率有较高要求。通常,采样率需超过30MSPS(百万样本每秒),分辨率至少为10位。当前的高速高分辨率ADC技术已经能够实现超过10MSPS采样率时的14位量化位数。 然而,实际分辨率受到ADC器件本身的误差和电路噪声的影响。在数字通信、数字仪表和软件无线电等领域,当输入信号频率较低时,例如低于1MHz,可以达到10位的分辨率,但随着输入信号频率的增加,分辨率会迅速下降,无法满足军事应用的需求。 本篇文章重点探讨了在不依赖过采样、数字滤波和增益自动控制等高级技术的情况下,如何提高高速高分辨率ADC的实际分辨率,以最大程度地接近ADC器件自身的理论分辨率,进而提升ADC电路的信噪比(Signal-to-Noise Ratio, SNR)。 ADC的信噪比是衡量其性能的重要指标,它直接影响到转换结果的精度。有效位数(Effective Number of Bits, ENOB)常用来表示ADC的实际分辨率。对于不采用过采样的情况,ENOB与ADC的信噪失真比(SINAD)有关,公式(1)给出了ENOB与SINAD的关系。SNR则是指输入信号有效值与ADC输出信号噪声的有效值之比,它与总谐波失真(THD)有关。当THD恒定时,SNR越高,ENOB越大。 影响ADC SNR的因素众多,包括量化误差(量化噪声)、非线性误差(如积分非线性误差INL和微分非线性误差DNL)、孔径抖动以及热噪声等。量化误差是ADC固有的,非理想ADC的量化间隔不均匀(DNL)会导致SNR下降。孔径抖动是由采样时钟不稳定引起的,它导致信号采样不一致,进而引入误差。热噪声源自半导体器件内部的分子热运动。 理想ADC的SNR可以通过计算量化噪声与输入信号电压有效值的比例得到,而实际ADC的SNR还会受到DNL、孔径抖动和热噪声等的影响。DNL会导致量化间隔不均匀,从而增加噪声;孔径抖动引起信号非均匀采样,增加误差;热噪声主要来源于半导体材料的热运动,对SNR也有负面影响。 通过深入理解这些影响因素,并在电路设计和器件选择上进行优化,文章中提出了一种高速高分辨率ADC电路。实测结果显示,当输入信号频率分别为0.96MHz和14.71MHz时,该电路的实际分辨率分别达到了11.36位和10.88位,显著提高了在高频信号下的转换精度。 提高ADC的信噪比和实际分辨率是一项复杂的任务,涉及到理论分析、电路设计和器件选择等多个层面。通过不断优化,可以克服高速高分辨率ADC在处理高频信号时分辨率下降的问题,从而更好地服务于军事和其他对信号质量有严格要求的领域。
2025-04-11 09:54:42 166KB ADC信噪比 高分辨率 ADC电路
1
基于ZYNQ的FPGA数据DMA传输至以太网教学框架:高效实现数据采集与千兆网传输,适用于工程师与在校学生。,基于zynq的以太网传输工程教学。 内容:这是一个框架 将fpga获得的数据通过dma存入ddr 再从处理器端将数据从ddr读取并通过千兆网传输给电脑 意义:作为一个开发框架 继续这个框架可以半天就能实现数据采集功能 对于基于adc或者dac项目的验证开发非常高效 缩短开发周期 今后类似项目全部可以复用 重新开发工作量小于20% 适合人群:模拟半导体芯片的测试或应用工程师、FPGA ZYNQ需要的嵌入式工程师或者在校学生老师 FPGA工程 + vitis rtos 工程 + 工程说明文档 ,基于zynq;以太网传输;数据采集;fpga开发;zynq应用;框架复用。,基于Zynq的FPGA以太网传输教学框架:快速实现数据采集与复用开发
2025-04-07 19:52:45 136KB
1
在本文中,我们将深入探讨基于STM32FL103微控制器的系统设计,该设计涉及传感器数据采集、低功耗操作以及通过LoRa通信。关键组件包括ADXL362三轴加速度计、RM3100磁强计以及使用RTC(实时时钟)模块实现的周期性待机和唤醒功能。 STM32FL103是一款基于ARM Cortex-M3内核的微控制器,具有丰富的外设接口和强大的计算能力,适合于各种嵌入式应用。在这个项目中,它被用来控制整个系统的运行,包括传感器数据读取、处理和无线传输。 ADXL362是一款超低功耗的三轴加速度计,常用于运动检测和唤醒事件。它能测量设备的线性加速度,为系统提供姿态变化、振动或冲击等信息。通过I²C或SPI接口与STM32FL103通信,可以配置传感器参数并读取数据。 RM3100是一款磁场传感器,用于测量地球磁场强度,常用于电子罗盘或方向感测。结合加速度计的数据,可以计算出精确的角度值,从而确定设备的方向或倾斜。同样,RM3100也通过I²C或SPI与微控制器交互。 LoRa是一种长距离、低功耗的无线通信技术,适用于物联网应用。在这个项目中,STM32FL103通过LoRa模块将ADXL362和RM3100采集到的角度值发送出去,这使得数据能够在较远距离上传输,而无需大量电源。 RTC(实时时钟)模块在系统中扮演了重要的角色,它不仅提供了准确的时间基准,还支持设置闹钟功能。周期待机和唤醒功能是通过RTC的闹钟事件来实现的。在待机模式下,系统进入低功耗状态,仅保持RTC运行,当设定的闹钟时间到达时,RTC触发唤醒事件,使系统恢复工作,继续进行数据采集和传输。 "keilkill.bat"可能是一个批处理文件,用于关闭Keil IDE进程,确保编译和调试时资源的释放。"Output"文件夹通常包含编译后的目标文件和可执行文件。"User"可能包含用户自定义的配置或代码。"Listing"文件夹可能包含汇编语言级别的代码清单。"Libraries"则包含项目使用的库文件,如STM32、LoRa和传感器驱动。"Doc"可能包含项目的文档资料,如设计规范或用户手册。"Project"文件夹可能包含工程配置文件。 这个项目利用STM32FL103、ADXL362、RM3100和LoRa构建了一个集成环境监测系统,实现了低功耗、周期性的数据采集和远程通信,具有广泛的应用前景,如物联网设备、健康监测和运动追踪等领域。
2025-04-05 14:16:04 6.23MB stm32fl03 ADXL362 lora
1
This dissertation proposes three circuit design techniques for successive-approximation register (SAR) analog-to-digital converters (ADCs). According to the measurement results of the proof-of-concept prototypes, the proposed techniques are able to improve the operating speed and achieve excellent energy efficiency. The proposed techniques and chip measurement results are sketched as follows: The first technique is a monotonic capacitor switching procedure. Compared to converters that use the conventional procedure, the average switching energy and total sampling capacitance are reduced by about 81.3% and 50%, respectively. A 10-bit, 50-MS/s SAR ADC with the proposed monotonic capacitor switching procedure is implemented in a 0.13-μm 1P8M CMOS technology. The prototype ADC consumes 0.92 mW from a 1.2-V supply, and the effective number of bit (ENOB) is 8.48 bits. The resulting figure of merit (FOM) is 52 fJ/conversion-step. However, the signal-dependent offset caused by the variation of the input common-mode voltage degrades the linearity of ADC. We proposed an improved comparator design to avoid the linearity degradation. Besides, to avoid a clock signal with frequency higher than sampling rate, we used an asynchronous control circuit to internally generate the necessary control signals. The revised prototype is also implemented in a 0.13-μm 1P8M CMOS technology. It consumes 0.826 mW from a 1.2-V supply and achieves an ENOB of 9.18 bits. The resultant FOM is 29 fJ/conversion-step.
2025-04-04 20:42:28 3.09MB ADC
1
STM32 HAL 库实现乒乓缓存加空闲中断的串口 DMA 收发机制 STM32 HAL 库实现乒乓缓存加空闲中断的串口 DMA 收发机制,轻松跑上 2M 波特率。 STM32 中一般的 DMA 传输方向有内存->内存、外设->内存、内存->外设。通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART),在嵌入式开发中一般称为串口,通常用于中、低速通信场景,波特率低有 6400 bps,高能达到 4~5 Mbps。 在 STM32 中使用 DMA 收发数据,可以节约可观的 CPU 处理时间。特别是在高速、大数据量的场景中,DMA 是必须的,而双缓冲区、空闲中断以及 FIFO 数据缓冲区也是非常重要的成分。 在本文中,我们将使用 STM32CubeMX 配置串口,首先使能高速外部时钟,然后设置时钟树。接下来配置串口,选择一个串口,设置模式为 Asynchronous,设置波特率、帧长度、奇偶校验以及停止位长度。然后添加接收和发送的 DMA 配置,注意在 RX 中将 DMA 模式改为 Circular,这样 DMA 接收只用开启一次,缓冲区满后 DMA 会自动重置到缓冲区起始位置,不再需要每次接收完成后重新开启 DMA。 在串口收到数据之后,DMA 会逐字节搬运到 RX_Buf 中。当搬运到一定的数量时,就会产生中断(空闲中断、半满中断、全满中断),程序会进入回调函数以处理数据。全满中断和半满中断都很好理解,就是串口 DMA 的缓冲区填充了一半和填满时产生的中断。而空闲中断是串口在上一帧数据接收完成之后在一个字节的时间内没有接收到数据时产生的中断,即总线进入了空闲状态。 现在网络上大部分教程都使用了全满中断加空闲中断的方式来接收数据,不过这存在了一定的风险:DMA 可以独立于 CPU 传输数据,这意味着 CPU 和 DMA 有可能同时访问缓冲区,导致 CPU 处理其中的数据到中途时 DMA 继续传输数据把之前的缓冲区覆盖掉,造成了数据丢失。所以更合理的做法是借助半满中断实现乒乓缓存。 乒乓缓存是指一个缓存写入数据时,设备从另一个缓存读取数据进行处理;数据写入完成后,两边交换缓存,再分别写入和读取数据。这样给设备留足了处理数据的时间,避免缓冲区中旧数据还没读取完又被新数据覆盖掉的情况。 但是出现了一个小问题,就是 STM32 大部分型号的串口 DMA 只有一个缓冲区,要怎么实现乒乓缓存呢?没错,半满中断。现在,一个缓冲区能拆成两个来用了。看这图我们再来理解一下上面提到的三个中断:接受缓冲区的前半段填满后触发半满中断,后半段填满后触发全满中断;而这两个中断都没有触发,但是数据包已经结束且后续没有数据时,触发空闲中断。 举个例子:向这个缓冲区大小为 20 的程序传送一个大小为 25 的数据包,它会产生三次中断,如下图所示。程序实现原理介绍完成,感谢 ST 提供了 HAL 库,接下来再使用 C 语言实现它们就很简单了。首先开启串口 DMA 接收。 #define RX_BUF_SIZE 20 uint8_t USAR_RX_Buf[RX_BUF_SIZE]; 在上面的例子中,我们定义了一个大小为 20 的缓冲区 USAR_RX_Buf,並将其设置为串口 DMA 的接收缓冲区。然后,我们可以使用 HAL 库提供的函数来开启串口 DMA 接收。 HAL_UART_Receive_DMA(&huart1, USAR_RX_Buf, RX_BUF_SIZE); 在串口收到数据之后,DMA 会逐字节搬运到 RX_Buf 中。当搬运到一定的数量时,就会产生中断(空闲中断、半满中断、全满中断),程序会进入回调函数以处理数据。在回调函数中,我们可以将数据写入 FIFO 中供应用读取。 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { // 将数据写入 FIFO 中 FIFO_Put(USAR_RX_Buf, RX_BUF_SIZE); } 在上面的例子中,我们使用 HAL 库提供的回调函数 HAL_UART_RxCpltCallback 来处理数据。在这个函数中,我们将数据写入 FIFO 中供应用读取。这样,我们就可以轻松地实现高速的串口收发机制。 使用 STM32 HAL 库可以轻松地实现高速的串口收发机制,轻松跑上 2M 波特率。同时,我们还可以使用乒乓缓存和空闲中断来避免数据丢失和提高系统的可靠性。
2025-04-04 19:14:28 1.22MB stm32
1
基于FPGA的Cortex-M3 MCU系统:带AHB APB总线与UART硬件RTL源码,支持ARMGCC与SWD仿真调试,扩展功能丰富的MCU开发平台(暂不含DMA和高级定时器),基于FPGA的Cortex-M3 MCU系统:RTL源码工程,含AHB APB总线、UART串口、四通道定时器,配套仿真与驱动,可扩展用户程序与IP调试功能(非DMA和高级定时器版本),FPGA上实现的cortex-m3的mcu的RTL源码,加AHB APB总线以及uart的硬件RTL源代码工程 使用了cortex-m3模型的mcu系统,包含ahb和apb总线,sram,uart,四通道基本定时器,可以跑armgcc编译的程序。 带有swd的仿真模型。 可以使用vcs进行swd仿真读写指定地址或寄存器。 带有的串口uart rtl代码,使用同步设计,不带流控。 带有配套的firmware驱动,可以实现收发数据的功能。 带有的四通道基本定时器,可以实现定时中断,具有自动reload和单次两种模式。 用于反馈环路实现、freertos和lwip等时基使用。 暂时不包括架构图中的DMA,高级定时器和以太网,后期
2025-04-02 15:33:06 11.35MB 柔性数组
1
设计了一个高速电压比较器,比较器由前置放大器和带复位端的动态比较器组成。采用charted 公司的0.35um/3.3v 模型,通过CADENCE 进行模拟仿真,电路获得了高速、高分辨率的特性。在100Ms/s 的工作频率下电路消耗0.29mw 的功耗,并且具有6.5mv 的低失调电压。因此,该电压比较器可适用于流水线ADC。
2025-04-02 10:31:27 226KB 数据转换
1
STM32是一款基于ARM Cortex-M内核的微控制器,由意法半导体公司(STMicroelectronics)生产。在本文中,我们将深入探讨如何使用STM32的硬件SPI(Serial Peripheral Interface)和DMA(Direct Memory Access)功能来高效地控制OLED(Organic Light-Emitting Diode)显示屏。 OLED屏幕是一种自发光显示技术,无需背光,因此具有更高的对比度和更低的功耗。在STM32上驱动OLED屏幕通常涉及通过SPI接口发送命令和数据,而DMA可以极大地减轻CPU负担,提高系统效率。 1. **STM32硬件SPI**:SPI是一种同步串行通信协议,用于微控制器与外部设备间的数据传输。STM32内建了多个SPI接口,每个都支持主模式和从模式。在控制OLED屏幕时,STM32通常作为主机,OLED驱动芯片作为从机。配置SPI时,需要设置时钟极性(CPOL)、时钟相位(CPHA)、数据位宽、波特率等参数。 2. **DMA功能**:DMA是一种允许数据在内存和外设之间直接交换的技术,无需CPU干预。在STM32中,有多个DMA通道可以分配给不同的外设,如SPI。通过设置DMA传输请求源、传输数据大小、地址增量方式等,可以实现数据的批量传输,显著提高系统性能。 3. **配置OLED屏幕**:OLED屏幕通常使用I2C或SPI接口,这里我们关注SPI。需要初始化OLED驱动芯片,发送初始化序列,包括设置显示模式、分辨率、对比度等。这些命令通过STM32的SPI接口发送。 4. **DMA与SPI的配合**:在STM32中,设置SPI接口为DMA模式,指定相应的DMA通道。当SPI发送缓冲区为空时,DMA会自动从内存中读取数据并发送,直到所有数据传输完毕。这样,CPU可以执行其他任务,而不是等待SPI传输完成。 5. **数据传输**:在显示图像或文本时,需要将数据加载到内存中的一个缓冲区,然后通过DMA传输到SPI接口。STM32的库函数或HAL(Hardware Abstraction Layer)可以简化这个过程。 6. **中断处理**:为了确保数据正确发送,还可以设置SPI的中断,例如传输完成中断。当DMA传输结束时,中断处理函数会被调用,进行必要的清理工作,如重置传输标志,准备下一次传输。 7. **代码示例**:使用STM32CubeMX生成初始的SPI和DMA配置,然后在用户代码中编写OLED屏幕的初始化和数据传输函数。例如,使用HAL_SPI_Transmit_DMA()启动一个DMA传输,并在中断服务程序中处理传输完成事件。 8. **优化考虑**:在实际应用中,还需要考虑电源管理、显示刷新率、屏幕旋转等功能。同时,为了防止数据竞争,需要正确管理和同步SPI和DMA的访问。 总结,通过STM32的硬件SPI和DMA,我们可以高效地控制OLED屏幕,实现流畅的显示效果,同时降低CPU的负载,提升整个系统的响应速度和能效。理解和熟练掌握这些技术,对于开发基于STM32的嵌入式系统至关重要。
2025-03-31 20:43:47 7.82MB STM32
1
Sigma-Delta ADC Matlab模型集合:包含CTSD调制器、FFT分析、动态静态特性仿真与教程,方便入门学习,Continuous-Time Sigma-Delta ADC Matlab模型集成包:实例丰富,涵盖多种MATLAB代码与Simulink模型,Sigma-Delta ADC Matlab Model 包含实例和说明,多种MATLAB代码和simulink模型都整合在里面了。 包含一个3rd 3bit-9level 10MHz 400MSPS CTSD Modulator Matlab Simulink Model 模拟ic设计,adc建模 ADC的动态fft,静态特性inl、dnl仿真 教程,动态静态参数分析。 东西很多,就不一一介绍了。 打开有惊喜 Continuous-Time Sigma-Delta ADC Matlab Model,有的地方也不是特别严谨,不过可以方便入门学习。 这是一个3rd 3bit-9level 10MHz 400MSPS CTSD Modulator Matlab Simulink Model,包含: 1. CTSDM_3rd3
2025-03-30 08:58:31 1.82MB scss
1
ADS54J60高速采集卡:原理图、PCB、代码及FPGA源码集成,4通道1Gbps 16bit高速ADC与直接制板功能,ADS54J60高速采集卡:四通道FMC子卡原理图、PCB及FPGA源码设计,直接制板应用,ADS54J60 高速采集卡 FMC 1G 16bit 4通道 采集子卡 FMC子卡 原理图&PCB&代码 FPGA源码 高速ADC 可直接制板 ,核心关键词:ADS54J60; 高速采集卡; FMC 1G 16bit 4通道; 采集子卡; FMC子卡; 原理图; PCB; 代码; FPGA源码; 高速ADC; 可直接制板。,“基于FPGA的高速采集子卡设计:ADS54J60四通道FMC 1G ADC板”
2025-02-26 11:31:24 573KB 正则表达式
1