用FPGA+DAC输出“心”形波

1.前言

  之前在做信号处理的时候整了一下活,用FPGA+DAC(数模转换器),输出了一个爱心形状的波形,今天整理资料的时候偶然发现了他,现在把他分享出来。当时将DAC的输出接在示波器上显示如下图所示:

2.原理

  爱心波形的函数表达式如下:
f ( x ) = x 2 3 + 1 3 e ( π − x 2 ) 1 2 sin ⁡ ( a π x ) f(x)=x^\frac{2}{3} + \frac{1}{3}e(\pi-x^2)^\frac{1}{2}\sin(a\pi x) f(x)=x32+31e(πx2)21sin(x)
  其中,e为自然对数,a为参数 π \pi π为圆周率。首先在Matlab当中,画出上述函数的波形,不断调整a的值,使其更逼近我们想要的“爱心”形状。经过试验,作者觉得 a = 10 a=10 a=10时比较像,图像如下:


  然后将图像进行采样和量化,存为coe文件,导入到FPGA的ROM中:
  (1)打开IP Catalog:

  (2)IP核选择Block Memory Generator:

  (3)选择Single Port ROM,即单口ROM:

  (4)修改位宽和深度与coe文件保持一致,选择端口始终使能:

  (5)添加coe文件:

  IP配置核配置完成点击确定即可。仿真效果如下:

3.DAC

  当时我使用的是ADI的AD9122进行输出,下面讲一下AD9122的电路设计:

3.1电源

  单板的供电方式是通过一个DC-DC的电源接头输入一个5.0V的直流电压,经过一个大电容滤波后,再分别由相应的电源芯片降压,产生AVDD33(3.3V)、DVDD18((1.8V)、CVDD18(1.8V)、LOVDD(1.8V),这些电源在经过滤波后给相应部件供电。

电源设计原理图

3.2低通滤波器

  为了保证输出波形更平滑,需要在输出端口接一个低通滤波器。这里采用五阶巴特沃斯低通滤波器,其转折频率为300MHz。

低通滤波器原理图

3.3 AD9122

AD9122外围电路原理图

AD9122 PCB布局

AD9122硬件实物图

3.4 通过串行端口SPI配置AD9122功能寄存器

3.4.1 SPI协议简述

  SPI端口由三个引脚组成:串行时钟引脚(SCLK)、串行数据输入/输出引脚(SDIO)和片选引脚(CSB),这被称为三线模式。一些芯片把串行数据输出引脚(SDO)作为可选引脚,如果包含它,它仅用于从设备读取数据,一般地,为了减少引脚数量,大多数芯片都省略了这个引脚。

SPI通信三线模式单设备控制

  (1)串行时钟(SCLK):SCLK用于同步串行接口读取和写入。输入数据记录在该时钟的上升沿,输出数据传输记录在下降沿。

  (2)串行数据输入/输出(SDIO):SDIO引脚是一个双重用途的引脚。这个引脚可作为是输入或输出,具体取决于发送的指令(读或写)在时序帧中的相对位置(指令或数据相位)。在写或读的第一阶段,这个引脚作为输入传递信息到内部状态机。如果确定该命令为读命令,状态机将此引脚(SDIO)更改为输出,然后将数据传回控制器。如果设备包含一个SDO引脚,并且配置寄存器使能,那么SDO将变为串行数据输出端口,而SDIO只作为串行数据输入端口。

  (3)片选信号(CSB):CSB是一个有效的低电平控制,用于控制读写周期。当该线路为低电平时,将选择该设备,并处理SCLK和SDIO线路上的信息。如果此引脚为高电平,器件会忽略SCLK和SDIO线路上的任何信息。通过这种方式,多个设备可以连接到SPI端口。如果只连接了一个器件,可以选择将CSB线拉低,使该器件永久有效。

3.4.2 AD9122串行端口操作

  当CS引脚上的电平由逻辑高电平到逻辑低电平,串行端口时序将复位至指令周期的初始状态。从这个状态开始,接下来的前八个SCLK上升沿代表当前输入输出操作的指令位,后八个SCLK上升沿进行数据的传输。也就是说,控制器与AD9122的通信周期分为两个阶段:阶段1是指令周期(将指令字节写入器件),与前八个SCLK上升沿一致,指令字节定义了即将到来的数据传输是读还是写,以及数据传输第一个字节的起始寄存器地址;通信周期的第2阶段是指令字节向串行端口控制器提供有关数据传输周期的信息,向寄存器写入数据,改变寄存器的值,来配置自己所需要的功能,或者对寄存器的值进行访问,以判断器件此刻的工作状态。

串行端口接口时序

  指令字节的第7位,决定了在指令字节写入后是进行读数据传输还是写数据传输。逻辑1表示读操作,逻辑0表示写操作。A6至A0是指令字节的位6至位0,决定在通信周期的数据传输部分访问的寄存器的地址。

串行端口指令字节

  ADI的数模转换器(DAC)和模数转换器(ADC)使用起来都差别不大,基本都可以使用SPI去读写其寄存器。我这里用的是AD9122,你搞明白了,只要会看datasheet也能很快上手。

代码

获取代码和工程请点此链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1409786.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

雅思备考经验(个人向)

IELTS备考经验(个人向) 备考时长约1个月, 首考6.5(6), 虽然没考到小分6.5, 我也接受了, 过段时间再考吧. 机考or纸笔 雅思有机考也有传统的纸笔考试形式, 个人更推荐机考, 原因如下: 机考口语和笔试一般都在同一天, 而纸笔的口语和笔试一般不在同一天, 有时候可能会差一个…

工业三废数据集(工业烟粉尘排放量、工业二氧化硫排放量、工业废水排放量)2006-2021年

01、数据介绍 工业三废是指工业生产过程中排出的废气、废水和废渣 工业二氧化硫排放量指企业在燃料燃烧和生产工艺过程中排入大气的二氧化硫数量。 工业烟粉尘排放量是指企业在生产工艺过程中排放的烟尘和粉尘等颗粒物重量。 工业废水排放量是指企业在生产过程中产生的废水…

GEE必须会教程—植被覆盖度(FVC)计算(代码分享)

植被覆盖度(FVC)的计算是遥感上非常重要的一个研究领域,因事务繁忙,今天小编先带来FVC的全文代码,给大家试试,后期会出一期专栏进行代码的详细介绍: 今天福利满满,直接上代码&#…

信息技术内涵及意义

一、信息技术及其演进趋势 (一)信息技术概况概念 信息技术(Information Technology,IT)指“应用在信息加工和处理中的科学、技术与工程的训练方法与管理技巧;上述方法和技巧的应用;计算机及其…

【氮化镓】GaN器件在航天器高可靠正向转换器中应用

文章是发表在《IEEE Journal of Emerging and Selected Topics in Power Electronics》2022年10月第10卷第5期上的一篇关于GaN(氮化镓)器件在航天器高可靠性正向转换器中应用的研究。文章的作者是匹兹堡大学电气与计算机工程系的Aidan Phillips, Thomas Cook和Brandon M. Gra…

【C语言视角】数据结构之~二叉树

前言:总所周知~数据结构的二叉树对于初学者来说是一个十分难理解的知识点。接下来,请阅读本人对二叉树拙劣的理解~ 目录 1.二叉树概念及结构 和性质 二叉树的结构 二叉树的存储结构 2.二叉树顺序结构 3.二叉树链式结构的实现 二叉树层序遍历 1.二叉树…

Flask路由的使用

Flask 是一个轻量级的 Python Web 框架,其简洁的设计使得构建 Web 应用变得轻而易举。其中,路由是 Flask 中至关重要的一部分,它定义了 URL 与视图函数之间的映射关系,决定了用户请求的处理方式。在本文中,我们将深入探…

服务运营 | 精选:用药难?用药贵?运筹学与统计学视角下的药物研发与管理

作者设计了一个多阶段博弈论模型来针对罕见病的不同补贴方案,分析政府、联盟、制药商和患者之间的相互作用。 制药商补贴为 α C \alpha C αC,其中 C C C是研发成本, α ∈ [ 0 , 1 ) \alpha \in [0,1) α∈[0,1)是政府总成本的比例。患者补…

ASP.NET淘宝店主交易管理系统的设计与实现

摘 要 淘宝店主交易管理系统主要采用了ASPACCESS的B/S设计模式,通过网络之间的数据交换来实现客户、商品、交易的管理和对客户、商品、交易统计工作,从而提高淘宝店主在管理网店过程中的工作效率和质量。 系统分为基本资料模块,统计资料模…

系统调用 int 86 的过程

该图借鉴与 Linux系统调用全过程详解-高性能服务器开发,向作者致敬。

Vue 之 在当前页面的实现分页效果

目录 场景实现 场景 假设,我们现在有这么一个需求: 上述图片的空白内容是活动的,由下面的两个按钮控制上一页、下一页;我们应该可以怎么去实现? 实现 思路: 其实这个问题,我们仿照其他的UI框…

关于远程桌面与3389端口的深度解析

当我们谈论远程桌面和3389端口时,我们实际上是在探讨Windows操作系统的一个核心功能,该功能允许用户通过网络从任何地点远程控制和管理计算机。而3389端口,正是这一功能所依赖的通信端口。 一、远程桌面的工作原理 远程桌面协议(R…

AppWeb 身份验证绕过漏洞 (CVE-2018-8715)

一、docker的相关操作(默认安装了docker-compose) 在相应的文件夹位置打开终端后进行如下操作 运行此靶场 sudo docker-compose up -d 查看启动环境 sudo docker ps 关闭此靶场环境 sudo docker-compose down 二、漏洞描述 AppWeb 是一个嵌入式 Web 服…

数组克隆/复制

数组的复制/克隆 1.浅克隆2.深克隆3.使用System.ArrayCopy()方法4.使用Arrays.copyOf()方法5.使用Arrays.copyOfRange()方法6.使用Object.clone()方法 1.浅克隆 将原来数组的地址赋值给新数组,两个数组名指向了同一个数组,修改其中一个中的元素&#xff…

jvm面试题30问

什么是JVM的跨平台? 什么是JVM的语言无关性? 什么是JVM的解释执行 什么是JIT? JIT:在Java编程语言和环境中,即时编译器(JIT compiler,just-in-time compiler)是一个把Java的字节码(…

【精选文献】JAG|基于时序Sentinel-1 SAR影像小农耕作区烟草空间分布制图

目录 文章简介 01 文章摘要 02 研究背景、目标及创新点 03 研究区域与数据集 04 研究方法 05 研究结果 06 研究讨论 07 研究结论 08 文章引用 文章简介 论文名称:Mapping tobacco planting areas in smallholder farmlands using Phenological-Spatial-Te…

【自用】在ipad上安装.ipa文件

借助爱思助手在ipad上安装.ipa文件 爱思助手官网(www.i4.cn) 对于不能上架 App Store 的应用,可以使用证书签名或使用 Apple ID 签名后正常安装到设备。准备好证书或 Apple ID以及需要签名的 IPA 文件,使用爱思助手就可以快速完成…

54.HarmonyOS鸿蒙系统 App(ArkTS)tcp socket套接字网络连接

54.HarmonyOS鸿蒙系统 App(ArkTS)tcp socket套接字网络连接 import socket from ohos.net.socket; import process from ohos.process; import wifiManager from ohos.wifiManager;import common from ohos.app.ability.common;let tcp socket.constructTCPSocketInstance();…

[数据结构]———交换排序

目录 ​编辑 ​编辑 1.交换排序 第一个定义了一个名为Swap的函数 第二个三数取中 2.冒泡排序 代码解析 冒泡排序的特性总结: 3.快速排序 1. hoare版本 2. 挖坑法 代码解析 3. 前后指针版本 代码解析 1.交换排序 基本思想:所谓交换&#xff0…

Gromacs软件进行蛋白-配体体系MD模拟

1、进行能量最小化 下载官方提供的参数文件:em.mdp ,或者直接复制这里: ; LINES STARTING WITH ; ARE COMMENTS title Minimization ; Title of run; Parameters describing what to do, when to stop and what to save integrator …