当前位置: 首页 > news >正文

利用FPGA和CPLD数字逻辑实现模数转换器

数字系统的嵌入式工程师熟悉如何通过使用FPGA和CPLD在其印刷电路板上将各种处理器,存储器和标准功能组件粘合在一起来实现其数字设计的“剩余”。除了这些数字功能之外,FPGA和CPLD还可以使用LVDS输入,简单的电阻电容器(RC)电路和某些FPGA或CPLD数字逻辑元件来实现常见的模拟功能,以创建模数转换器(ADC)。

ADC是常见的模拟构建块,当将数字逻辑(例如FPGA或CPLD中的数字逻辑)连接到模拟传感器的“真实世界”时,几乎总是需要ADC。本文将说明如何使用Lattice Semiconductor提供的参考设计和演示板来实现低频(DC至1K Hz)和更高频率(高达50K Hz)ADC。

将检查每种设计的示例应用程序:一个用于网络交换机中的系统监视器,另一个用于音频通信系统中的频率检测。

模数转换器实施概述领取嵌入式物联网学习路线

通过在FPGA或CPLD的LVDS输入上增加一个小型RC电路,可以构建一个简单的模数转换器。如图1左下方所示,RC网络位于LVDS输入的一侧,而感兴趣的模拟输入位于另一侧。

LVDS输入将充当简单的模拟比较器,并且如果模拟输入电压高于RC网络的电压,则将输出数字“ 1”。通过更改RC电路输入上的电压(来自FPGA / CPLD的通用输出),LVDS比较器可用于分析模拟输入电压,以创建准确的数字表示。

根据模拟输入的频率,所需的分辨率和可用的逻辑资源,可以采用多种方式来实现模数控制模块。可以使用一个简单的逐次逼近寄存器来处理低频信号,如图1左上方的选项1所示。

可以使用delta sigma调制器功能实现更高频率的实现,如图1右上方所示,该功能由采样寄存器和级联集成梳状(CIC)滤波器组成。

构建完数字信号后,可以选择对数字输出进行滤波,以消除由系统噪声或反馈抖动(下面将详细介绍)引入的任何不需要的高频分量。

在可选的数字滤波器块之后,可以将可选的存储缓冲区用于调试/测试目的。数字输出可以由存储缓冲器采样,然后通过JTAG端口扫描到运行信号分析软件的个人计算机中。

要查看该图形的放大版本,请单击此处。领取嵌入式物联网学习路线

图1:模数转换器基本框图:低频和高频选项 低频/最小逻辑ADC实现说明

在低频/最小逻辑实现中,采样控制模块控制逐次逼近寄存器,从而改变将通用输出信号施加到RC电路的时间。因此,RC电路电压会根据通用输出的状态(变化量)而上升或下降。

LVDS输入将变化的RC电路电压与模拟输入进行比较。因此,RC电路电压用于“查找”模拟输入电压。图2显示了一个示例,其中静态模拟输入(由橙色虚线表示)设置为略低于整个输入电压范围的一半。垂直的黑色虚线表示SAR采样点之间的时钟数,显示为绿色虚线。

第一次测量需要8个时钟,接下来的4个时钟,依此类推。首先,通过在通用输出上施加逻辑“ 1”,将RC电路设置为上升至模拟输入全电压摆幅的一半。一旦电压达到一半,LVDS输入的输出将指示模拟输入值是高于还是低于RC电路电压。

如果模拟电压较高,则数字输出的最高有效位为逻辑“ 1”。如果模拟电压较低,则数字输出为逻辑“ 0”。SAR移至下一位,采样时间减半(为整个电压摆幅的四分之一)。重复该过程,直到达到所需的A / D转换器精度为止。

在图2的示例中,观察RC电路电压如何逐渐接近模拟输入值。在这个简单的示例中,SAR(0101)的4位数字输出显示在该图的底部。

图2:基于SAR的模数转换器操作示例

低频设计可用于监视代表各种电源电压和环境传感器输出的几个模拟电压电平。CPLD的实现可以监视PCB电源电压(3.3V,2.5V和1.8V)以及温度和湿度传感器以及开柜警报。

为了测量多个模拟输入,每个模拟电压将使用一个LVDS输入以及附加的RC电路。由于模拟电压变化缓慢,因此可以复用LVDS输出,以便可以在每个输入之间共享数字逻辑功能。低频/最小逻辑ADC测试结果

使用评估板在莱迪思MachXO CPLD中实现了不带可选数字滤波器的低频/最小逻辑电路,并使用了0Hz至3.3V摆幅的0.8Hz输入信号。

如图1所示,可选的存储器缓冲器与Lattice ispLever设计软件的Lattice Reveal Logic Analyzer功能结合使用。此功能将缓冲存储器以及控制数字信号捕获,数据缓冲以及通过JTAG电缆将数据导出到计算机所需的逻辑添加到目标设计中。在测试期间,使用凌力尔特公司(Linear Technology)的PScope软件对捕获的数据进行FFT。

电路对0.8Hz模拟输入的响应如下图3的上半部分所示。

要查看该图形的放大版本,请单击此处。

图3:模数转换器的结果:低频和高频选项

接收到的数字信号显示在PScope屏幕截图的顶部窗口中。垂直轴以代码步长(0到255)测量,水平轴以样本(在此示例中为1024个样本)测量。频率在右上侧边栏报告为f1(基本)频率。FFT的结果显示在下部窗口中,谐波频率通过纵轴根据其dB级别显示。

右下侧边栏显示了从FFT导出的关键参数的摘要,包括有效位数(ENOB)和信噪比(SNR)。这些结果表明输入信号已成功转换为具有出色分辨率和SNR的数字信号。

更高频率ADC的实现

图1右上方所示的较高频率ADC选件的前端仍使用RC电路和LVDS输入。过采样触发器从LVDS输入捕获比较器结果。该信号通过驱动RC电路的通用LVCMOS输出反馈。如果比较器输出为逻辑“ 1”,则表示模拟输入高于RC电路的电压。

触发器对逻辑“ 1”进行采样并反馈到RC电路,从而使RC电路电压上升。如果比较器的输出为逻辑“ 0”,则反馈信号将为逻辑“ 0”,并将驱动RC电压降低。通过这种简单的反馈机制,数字值可以“跟踪”模拟输入的频率。

图4右下方的图形以红色显示了采样模拟输入波形,并显示了采样触发器的输出:蓝色列表示逻辑“ 1”,白色列表示逻辑“ 0”。请注意,“ 1”和“ 0”以普通脉冲编码调制(PCM)格式变化的方式。

使用级联积分梳状(CIC)滤波器,可以将PCM输入数据转换为输出流,该输出流镜像模拟输入流的频率。CIC功能基本上对单个PCM信号进行积分(相加或相减),以生成所需位数的连续输出信号。

在图4底部的示例中,将蓝色位视为“ 1”,将白色位视为“ -1”,通过检查可以清楚地看到,求和(积分)操作将生成输入的数字表示波形 (请注意,输出波形将偏移半个周期,因为序列“ 1”将对应于数字值的增加,而在图4的图表中,序列“ 1”在“波形的高''部分,并在``低''部分产生一系列``0''。)

由于反馈环路产生的“跟踪”过程,RC电路的电压可能会在模拟输入电平附近振荡。当过采样触发器在“ 1”和“ 0”结果之间变化时,RC电路电压将从模拟输入电平的正上方移至正下方。这个过程一直持续到模拟输入电平改变为止。高频噪声可以通过使用可选的数字滤波器来消除。

图4:三角积分调制器转换阶段的结果

更高频率的设计可以监视用于传达操作和环境条件的多个音频侧栏信号。例如,可以定期发出5kHz和12kHz信号,以指示远程音频监视系统的状态。这些信号可以指示设备的环境条件(温度和湿度)。领取嵌入式物联网学习路线

与前面的示例一样,只需添加更多LVDS输入,即可支持多个模拟信号。该设计可能是最多8个模拟信号的集线器。通过对输入进行时分复用,只需要使用数字逻辑的一个副本。更高频率的ADC测试结果

较高频率的ADC电路已使用评估板在Lattice XP2-17 FPGA中实现。在测试期间,使用了0kHz至3.3V摆幅的15kHz输入信号。使用数字滤波器选件,使用图1所示的选件2电路处理模拟信号。

结果显示在上方图3的下半部分,顶部窗口显示接收信号,底部显示FFT,f1频率为15.1kHz最显着。下侧边栏中报告的结果显示ENOB为9,SNR为61 dB。这些结果表明输入信号已成功转换为具有出色分辨率和SNR的数字信号。

相关文章:

利用FPGA和CPLD数字逻辑实现模数转换器

数字系统的嵌入式工程师熟悉如何通过使用FPGA和CPLD在其印刷电路板上将各种处理器,存储器和标准功能组件粘合在一起来实现其数字设计的“剩余”。除了这些数字功能之外,FPGA和CPLD还可以使用LVDS输入,简单的电阻电容器(RC&#xf…...

上海亚商投顾:沪指震荡调整跌 减肥药、华为概念股持续活跃

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 沪指上个交易日低开后震荡调整,深成指、创业板指盘中跌超1%,宁德时代一度跌超3%&#xff…...

间歇性微服务问题...

在Kubernetes环境中,最近由于特定配置导致Pod调度失败。哪种 Kubernetes 资源类型(通常与节点约束相关)可能导致此故障,尤其是在未正确定义的情况下? 节点选择器资源配额优先级污点Pod 中断预算 已有 201 人回答了该…...

小程序开发平台源码系统+ 带前后端完整搭建教程

大家好,给大家分享一个小程序开发平台源码系统。这款小程序开发平台中有很多功能,今天主要来给大家介绍一下洗车行业小程序制作的功能。以下是部分核心代码图: 系统特色功能: LBS定位:小程序能够自动显示附近的共享洗…...

外部统一设置了::-webkit-scrollbar { display: none; }如何单独给特定元素开启滚动条设置样式-web页面滚动条样式设置

如果你在外部统一设置了​​::-webkit-scrollbar { display: none; }​​​来隐藏滚动条,但是想要在​​.lever​​元素中单独开启滚动条的样式,你可以使用CSS的级联选择器来覆盖外部样式。 以下是一个示例,展示如何给​​.lever​​单独开启…...

【计算机网络】网络原理

目录 1.网络的发展 2.协议 3.OSI七层网络模型 4.TCP/IP五层网络模型及作用 5.经典面试题 6.封装和分用 发送方(封装) 接收方(分用) 1.网络的发展 路由器:路由指的是最佳路径的选择。一般家用的是5个网口,1个WAN口4个LAN口(口:端口)。可…...

力扣第39题 组合总和 c++ 回溯剪枝题

题目 39. 组合总和 中等 相关标签 数组 回溯 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 cand…...

qt软件正常运行的崩溃了定位行号方法

软件(debug版exe或者release版exe)在正常运行状态下(不是gdb调试运行),如果软件崩掉,那么会直接闪退,软件什么也做不了,此时无法保存软件中的状态信息,此外,也…...

软件工程与计算总结(十五)详细设计中面向对象方法下的信息隐藏

软件工程与计算总结(十三)详细设计中的模块化与信息隐藏 之前的博客中,模块需要隐藏的决策主要由“职责的实现”and“实现的变更”两类,在面向对象方法中,需要做到的就是: 封装类的职责,隐藏职…...

鸿蒙初体验

下载与安装DevEco Studio 在HarmonyOS应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio下载官网,单击“立即下载”进入下载页面。 DevEco Studio提供了Windows版本和…...

hive复合类型的数据查询

hive数据表创建-CSDN博客 --第一个名字以M开头的 访问数组array 数组( array) 引用方式 列名 [ 元素索引 _ 以 0 开始 ] select * from emp where emp_name[0] rlike "^M"; -- 出生日期是在 5 几年 访问 Map map 引用方式 列名 ["Key"] selec…...

Notes/Domino 14 Early Access Drop3发布

大家好,才是真的好。 其实上周,就是国庆假期的时候,HCL Notes/Domino 14 Early Access Drop3(以下简称EA3)就已经发布,而且和传说中的一样,带来了数项惊人的新特性。 我们先讲讲这一版本新特性…...

前端、后端开发者常用到的免费API整理

以下是我整理的前端、后端工程师在开发中经常使用到的API接口,希望能帮到大家~ 手机号码归属地:可根据手机号码查询其省市区、运营商区号行政区划代码等信息。 上亿条数据囊括最新的170、166、147等号段,更新及时、准确度高。空号检测&#…...

【LeetCode高频SQL50题-基础版】打卡第9天:第46~50题

文章目录 【LeetCode高频SQL50题-基础版】打卡第9天:第46~50题⛅前言患某种疾病的患者🔒题目🔑题解 第二高的薪水🔒题目🔑题解 按日期分组销售产品🔒题目🔑题解 列出指定时间段内所有的下单产品…...

中断机制-通过volatile实现线程中断停止

4.1.4 大厂面试题中断机制考点 如何停止中断运行中的线程? 通过一个volatile变量实现 package com.nanjing.gulimall.zhouyimo.test;import java.util.concurrent.TimeUnit;/*** author zhou* version 1.0* date 2023/10/15 2:34 下午*/ public class InterruptD…...

Elasticsearch 8.11 中的合并更少,摄取更快

作者:ADRIEN GRAND Elasticsearch 8.11 改进了管理索引缓存的方式,从而减少了段合并。 我们对 Elasticsearch 8.11 从索引缓存回收内存的方式进行了重大更改,这有助于减少合并开销,从而加快索引速度。 使用我们的日志跟踪&#x…...

算法村开篇

大家好我是苏麟从今天开始我将带来算法的一些习题和心得体会等等...... 算法村介绍 我们一步步地学习算法本专栏会以闯关的方式来学习算法 循序渐进地系统的学习算法并掌握大部分面试知识 , 期待和大家一起进步 . 索大祝大家学有所成 , 前程似锦....

Leetcode—136.只出现一次的数字【简单】

2023每日刷题&#xff08;二&#xff09; Leetcode—136.只出现一次的数字 位运算法 实现代码 int singleNumber(int* nums, int numsSize){int i 0;int res 0;for(; i < numsSize; i) {res ^ nums[i];}return res; }运行结果 之后我会持续更新&#xff0c;如果喜欢我的…...

关于RNNoise、webrtc_ns、三角带通滤波器、对数能量

语音特征参数MFCC提取过程详解 其中讲解了&#xff1a;三角带通滤波器 、计算每个滤波器组输出的对数能量、对数能量、经离散余弦变换&#xff08;DCT&#xff09;得到MFCC系数 推荐阅读某乎这位大佬的全部文章&#xff1a; 下面是几篇出自这位大佬的很好的文章&#xff1a; …...

c语言练习89:链表的使用

链表的使用 虽然有这么多的链表的结构&#xff0c;但是我们实际中最常⽤还是两种结构&#xff1a; 单链表 和 双向带头循环链表 1. ⽆头单向⾮循环链表&#xff1a;结构简单&#xff0c;⼀般不会单独⽤来存数据。实际中更多是作为其他数据结 构的⼦结构&#xff0c;如哈希桶、…...

ArkTS及openHarmony

补充 padding&#xff1a;内边距&#xff0c;也就是盒子边和盒子内部的距离 margin&#xff1a;外边距&#xff0c;也就是盒子和盒子的距离 openHarmony应用开发及UI界面 常用布局 Row 水平线性布局核心代码 子控件会共享同一行&#xff0c;也就是都在同一行内 Preview C…...

Idea怎么配置Maven才能优先从本地仓库获取依赖

网上的方法 : 在设置中搜索 Runner ,在VM Option中设置参数 -DarchetypeCataloginternal删除 解压后的依赖包中的 _remote.repositories m2e-lastUpdated.properties *.lastUpdated 文件。 上边都没有效果 最终的解决方法&#xff0c;修改maven配置文件settings.xml 主要两个…...

聊聊HttpClient的DnsResolver

序 本文主要研究一下HttpClient的DnsResolver DnsResolver org/apache/http/conn/DnsResolver.java /*** Users may implement this interface to override the normal DNS lookup offered* by the OS.** since 4.2*/ public interface DnsResolver {/*** Returns the IP a…...

剑指智能驾驶,智己LS6胜算几何?

监制 | 何玺 排版 | 叶媛 10月12日&#xff0c;IM智己旗下的新车智己LS6宣布上市。 新车型搭载尖端科技多项&#xff0c;其中以“全画幅数字驾舱屏”、和城市高阶智能辅助驾驶为核心的智驾技术&#xff0c;更是引来众多用户关注。 01 新能源新卷王智己LS6 智己LS6一发布就…...

网络工程师知识点5

71、什么是FTP&#xff1f; FTP是文件传输协议。 FTP传输数据时支持两种传输模式&#xff1a;ASCII模式和二进制模式。 需要TCP的21号端口来建立控制连接 需要TCP的20号端口来建立数据连接 72、什么是telnet&#xff1f; Telnet提供了一个交互式操作界面&#xff0c;允许终端远…...

未来展望:大型语言模型与 SQL 数据库集成的前景与挑战

一、前言 随着 GPT-3、PaLM 和 Anthropic 的 Claude 等大型语言模型 (LLM) 的出现引发了自然语言在人工智能领域的一场革命。这些模型可以理解复杂的语言、推理概念并生成连贯的文本。这使得各种应用程序都能够使用对话界面。然而&#xff0c;绝大多数企业数据都存储在结构化 …...

SpringCloud-Hystrix

一、介绍 &#xff08;1&#xff09;避免单个服务出现故障导致整个应用崩溃。 &#xff08;2&#xff09;服务降级&#xff1a;服务超时、服务异常、服务宕机时&#xff0c;执行定义好的方法。&#xff08;做别的&#xff09; &#xff08;3&#xff09;服务熔断&#xff1a;达…...

Ansible脚本进阶---playbook

目录 一、playbooks的组成 二、案例 2.1 在webservers主机组中执行一系列任务&#xff0c;包括禁用SELinux、停止防火墙服务、安装httpd软件包、复制配置文件和启动httpd服务。 2.2 在名为dbservers的主机组中创建一个用户组&#xff08;mysql&#xff09;和一个用户&#x…...

pytorch 模型部署之Libtorch

Python端生成pt模型文件 net.load(model_path) net.eval() net.to("cuda")example_input torch.rand(1, 3, 240, 320).to("cuda") traced_model torch.jit.trace(net, example_input) traced_model.save("model.pt")output traced_model(exa…...

Unity——数据存储的几种方式

一、PlayerPrefs PlayerPrefs适合用于存储简单的键值对数据 存储的数据会在游戏关闭后依然保持&#xff0c;并且可以在不同场景之间共享&#xff0c;适合用于需要在游戏不同场景之间传递和保持的数据。 它利用key-value的方式将数据保存到本地&#xff0c;跟字典类似。然后通…...

做外贸有哪些网站/站长工具平台

惠州正规的冰箱面板联系方式&#xff0c;环宇新型材料&#xff0c;佛山市环宇新型材料有限公司成立于2010年2月&#xff0c;公司座落于交通便利、位置优越、环境优美的广东省佛山市三水区西南工业园C区。惠州正规的冰箱面板联系方式&#xff0c; PCM冰箱面板、PVC冰箱面板、VCM…...

2345网址导航高级版/长沙网站seo分析

设计模式简介 设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错…...

ie浏览器哪个做网站稳定/天津百度网站快速排名

3 交互性与用户界面&#xff1a;本章介绍如何取得用户输入&#xff0c;即键盘与鼠标事件。还要介绍把输入集成到游戏中&#xff0c;并介绍如何用Swing实现用户界面。下面先看一个简单类来简化速测程序的实现&#xff0c;清单 3.1 GameCore 类就是起这个作用。它实现了一些常见…...

烽火台网站/企业百度推广怎么收费

linux 上tomcat 服务器抛出socket异常“文件打开太多”的问题 java.net.SocketException: Too many open files at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) at java.net.ServerSocket.implAccep…...

简单网站开发/网站自动提交收录

一 概念 缓存的分类&#xff1a; 客户端缓存 &#xff08;Client Caching&#xff09; 代理缓存 &#xff08;Proxy Caching&#xff09; 反向代理缓存 &#xff08;Reverse Proxy Caching&#xff09; 服务器缓存&#xff08;Web Server Caching&#xff09; 使用缓存的好处&…...

进口全屋定制十大名牌/seo整站优化

MQTT v5 相较于 MQTT v3.1 和 v3.1.1 提供了许多新特性。我们会尽量以通俗易懂的方式展示这些特性&#xff0c;并探讨这些特性对开发者的影响。我们已经探讨过其中一部分 MQTT v5 新特性&#xff0c;今天将继续讨论&#xff1a;主题别名。 什么是主题别名 主题别名&#xff0…...