[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-25 ADC模块FEP-DAQ9248采集显示波形方案

软件版本:Anlogic -TD5.9.1-DR1_ES1.1

操作系统:WIN10 64bit

硬件平台:适用安路(Anlogic)FPGA

实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板

板卡获取平台:https://milianke.tmall.com/

登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!

目录

1 概述

2 系统框图

3 AD9248产品介绍

3.1 硬件参数概述

3.2 引脚定义

3.2.1 SMA 引脚定义

3.2.2 AD9248芯片功能引脚定义

3.3 数据模式设置

4 硬件电路分析

5 程序源码

5.1 AD9248采集驱动

5.2 顶层模块调用程序

6 测试结果

6.1 硬件接线

6.2 测试结果


1 概述

本方案通过把DAQ9248采集到的数据,通过前面已经完成的示波器显示驱动进行在屏幕上显示ADC采集的波形数据。

2 系统框图

本方案中,把前面测试程序中的数据改为从ADC采集的数据

3 AD9248产品介绍

DAQ_FMC3002是一款14bits双通道20/65MSPS ADC采集模块,该方案采用了ADI的AD9248芯片。

3.1 硬件参数概述

硬件参数

ADC 芯片

AD9248

DAC芯片

AD9767

采样精度

14bit

采样精度

14bit

IO 电平

1.8~3.3V可调

IO 电平

1.8~3.3V可调

模拟通道

2路

更新速率

0~125M

数字通道

2路

模拟通道

2路

输入电平

-5V~+5V

输出电平

-5V~+5V

采样频率

AD9248-65 0~65M

数字输出范围

0~16383

数据格式

偏移二进制(0~16383)

功耗

500MW

信噪比(SNR)

71.6 dBc

占用 IO 数量

33个GPIO

无杂散动态范围(SFDR)

80 dBc(至 Nyquist 频率,AD9248-65)

功耗

800MW

占用 IO 数量

35个GPIO

3.2 引脚定义

3.2.1 SMA 引脚定义

引脚号

引脚名称

描述

PA

DAI

模拟输入通道 1

PB

DBI

模拟输入通道 2

TA

TriA

双向触发输入/输出 1

TB

TriB

双向触发输入/输出 2

3.2.2 AD9248芯片功能引脚定义

AD9248 工作于 LVCMOS 模式, 数据接口简单,下图为芯片引脚定义以及采样时序。。

非符合复合模式,一个数据通道采样1个模拟通道,采用 LVCMOS SDR数据时序

复合模式,一个数据通道采样2个模拟通道,采用LVCMOS DDR数据时序,这种工作模式下当MUX_SELECT  为逻辑高时,通道A数据被定向到通道 A 输出总线,通道B数据被定向到通道B输出总线。当MUX_SELECT为逻辑低电平时,通道数据取反,即通道A数据导向通道B输出总线,通道B数据导向通道A输出总线。通过切换 MUX_SELECT位,复用数据可在任一输出数据端口上使用。

3.3 数据模式设置

AD9248 可以通过配置 DFS 实现数据格式的设置

DFS 脚电平

数据模式

低电平

偏移二进制和并行 LVCMOS SDR

高电平

二进制补码和并行 LVCMOS SDR

4 硬件电路分析

硬件接口和子卡模块请阅读“附录 1”

配套工程的 FPGA PIN 脚定义路径为 fpga_prj/uisrc/04_pin/ fpga_pin.xdc。

5 程序源码

关于HDMI输出IP的部分这里不再介绍,VTC时序设计部分这里也不详细介绍。如果读者这些基础知识不清楚的,请阅读前面的实验。

5.1 AD9248采集驱动

AD9248为并行ADC,每一个时钟输出一个采样点,因此驱动不需要编写,直接通过时钟同步过来的数据。

5.2 顶层模块调用程序

`timescale 1ns / 1ns//仿真时间刻度/精度module wave_test
(
input           I_sysclk,         //系统时钟输入  
output          O_ad9248_clka,      //A通道时钟输出   
input           I_ad9248_ora,       
input  [13:0]   I_ad9248_da,        //A通道数据输入output          O_ad9248_clkb,      //B通道时钟输出  
input           I_ad9248_orb,
input  [13:0]   I_ad9248_db,        //B通道数据输入
output          O_card_power_en,    //子卡电源使能 output          O_hdmi_clk_p,       //HDMI时钟输出 P端
output          O_hdmi_clk_n,       //HDMI时钟输出 N端
output [2:0]    O_hdmi_tx_p,        //HDMI数据输出 P端
output [2:0]    O_hdmi_tx_n         //HDMI数据输出 N端
);assign O_card_power_en = 1'b1; //子卡上电//上电延迟复位
reg [7:0]    rst_cnt=0; //复位计数器 
wire  rstn = rst_cnt[7];//用高位复位
wire pclkx1,pclkx5,adc_clk,locked; //MMCM/PLL时钟信号    wire vtc_rstn,vtc_clk,vtc_vs,vtc_hs,vtc_de,vtc2_grid_de_o,vtc2_de_o;
wire [23:0] rgb_o; //RGB颜色寄存器assign vtc_clk  = pclkx1;//像素时钟
assign vtc_rstn = locked;
assign S_rst = ~locked;//PLL时钟管理IP 输出 pclkx1和pclkx5以及locked信号
pll U_pll(
.refclk   ( I_sysclk    ),//系统时钟输入
.reset    ( !rst_cnt[7] ),
.lock     ( locked      ),//PLL LOCKED
.clk0_out ( pclkx1      ),//像素时钟
.clk1_out ( pclkx5      ),//HDMI IO的serdes 时钟 5倍的像素时钟
.clk2_out ( adc_clk     )//100M时钟,给ADC采集用
); always @(posedge I_sysclk)beginif (rst_cnt[7])rst_cnt <=  rst_cnt;elserst_cnt <= rst_cnt+1'b1;
end//ad9248 ip相关信号
assign O_ad9248_clka = adc_clk;
assign O_ad9248_clkb = adc_clk;//hdmi 输出IP
hdmi_tx#(//HDMI视频参数设置       
.H_ActiveSize       (1280), //视频时间参数,行视频信号,一行有效(需要显示的部分)像素所占的时钟数,一个时钟对应一个有效像素
.H_SyncStart        (1280+88), //视频时间参数,行同步开始,即多少时钟数后开始产生行同步信号 
.H_SyncEnd          (1280+88+44),//视频时间参数,行同步结束,即多少时钟数后停止产生行同步信号,之后就是行有效数据部分
.H_FrameSize        (1280+88+44+239), //视频时间参数,行视频信号,一行视频信号总计占用的时钟数.V_ActiveSize       (720),//视频时间参数,场视频信号,一帧图像所占用的有效(需要显示的部分)行数量,通常说的视频分辨率即H_ActiveSize*V_ActiveSize
.V_SyncStart        (720+4),//视频时间参数,场同步开始,即多少行数后开始产生场同步信号 
.V_SyncEnd          (720+4+5), //视频时间参数,场同步结束,多少行后停止产生长同步信号  
.V_FrameSize        (720+4+5+28),  //视频时间参数,场视频信号,一帧视频信号总计占用的行数量               .VIDEO_VIC          ( 16       ),
.VIDEO_TPG          ( "Disable"),//设置disable,用户数据驱动HDMI接口,否则设置eable产生内部测试图形
.VIDEO_FORMAT       ( "RGB444" )//设置输入数据格式为RGB格式
)u_hdmi_tx
(
.I_pixel_clk        ( pclkx1           ),//像素时钟
.I_serial_clk       ( pclkx5           ),//串行发送时钟
.I_rst              ( S_rst              ),//异步复位信号,高电平有效//.I_video_in_user    ( vtc_user         ),//视频输入帧起始信号
//.I_video_in_valid   ( vtc_de_valid     ),//视频输入有效信号
//.I_video_in_last    ( vtc_last         ),//视频输入行结束信号
//.I_video_in_data    ( video_hdmi_data  ),//视频输入数据.I_video_rgb_enable (1'b1               ),//是否使能RGB输入接口,设置1使能,否则采用stream video时序接口  
.I_video_in_vs      (vtc_vs            ),//RGB 输入VS 帧同步
.I_video_in_de      (vtc_de       ),//RGB 输入de有效
.I_video_in_data    (rgb_o), //视频输入数据     .O_hdmi_clk_p       ( O_hdmi_clk_p       ),//HDMI时钟通道
.O_hdmi_tx_p        ( O_hdmi_tx_p        )//HDMI数据通道
);//此VTC IP 用于产生绘制波形的有效区域,波形绘制区域大小未1024*600
uivtc#
(
.H_ActiveSize(1280),          //视频时间参数,行视频信号,一行有效(需要显示的部分)像素所占的时钟数,一个时钟对应一个有效像素
.H_FrameSize(1280+88+44+239), //视频时间参数,行视频信号,一行视频信号总计占用的时钟数
.H_SyncStart(1280+88),        //视频时间参数,行同步开始,即多少时钟数后开始产生行同步信号 
.H_SyncEnd(1280+88+44),       //视频时间参数,行同步结束,即多少时钟数后停止产生行同步信号,之后就是行有效数据部分
.V_ActiveSize(720),           //视频时间参数,场视频信号,一帧图像所占用的有效(需要显示的部分)行数量,通常说的视频分辨率即H_ActiveSize*V_ActiveSize
.V_FrameSize(720+4+5+28),     //视频时间参数,场视频信号,一帧视频信号总计占用的行数量
.V_SyncStart(720+4),          //视频时间参数,场同步开始,即多少行数后开始产生场同步信号 
.V_SyncEnd (720+4+5),         //视频时间参数,场同步结束,即多少场数后停止产生场同步信号,之后就是场有效数据部分
.H2_ActiveSize(1024),         //波形绘制区域行像素大小        
.V2_ActiveSize(256)           //波形绘制区域场像素大小 
)
uivtc_inst
(
.I_vtc_clk(vtc_clk),         //系统时钟
.I_vtc_rstn(vtc_rstn),       //系统复位
.I_vtc2_offset_x(128),         //X坐标相对屏幕的原始坐标的偏移
.I_vtc2_offset_y(200),         //Y坐标相对屏幕的原始坐标的偏移
.O_vtc_vs(vtc_vs),//场同步输出
.O_vtc_hs(vtc_hs),//行同步输出
.O_vtc_de(vtc_de),//视频数据有效
.O_vtc2_de(vtc2_de_o)//绘制波形显示区域的有效区域
);//例化波形显示器 IP,默认支持2个通道数据,可以扩展支持更多通道
uiwave uiwave_inst
(
//波形1
.I_wave1_clk(O_ad9248_clka),//系统时钟输入
.I_wave1_data(I_ad9248_da[13:6]),//ADC只显示高8bits 数据
.I_wave1_data_de(1'b1),//ADC数据有效信号//波形2
.I_wave2_clk(O_ad9248_clkb),//系统时钟输入
.I_wave2_data(I_ad9248_db[13:6]),//ADC只显示高8bits 数据
.I_wave2_data_de(1'b1),//ADC数据有效信号.I_vtc_rstn(vtc_rstn),//时序发生复位
.I_vtc_clk (vtc_clk), //像素时钟
.I_vtc_vs  (vtc_vs),  //场同步输出
.I_vtc_de  (vtc2_de_o),//同步,绘制波形显示区域的有效区域
.O_vtc_rgb(rgb_o)//同步RGB数据 绘制数据输出     );endmodule

6 测试结果

6.1 硬件接线

(该教程为通用型教程,教程中仅展示一款示例开发板的连接方式,具体连接方式以所购买的开发板型号以及结合配套代码管脚约束为准。)

请确保下载器和开发板已经正确连接,并且开发板已经上电。(注意JTAG端子不支持热插拔,而USB接口支持,所以在不通电的情况下接通好JTAG后,再插入USB到电脑,之后再上电,以免造成JTAG IO损坏)

6.2 测试结果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MTK 安卓14 launcher3修改桌面模式,替换某些应用图标,以及定制化Hotseat

原生的launcher的Hotseat如下图(1)所示,我想把效果改成图(2) 图(1) 图(2) 一:定制化HotSeat 修改的类&#xff1a;packages/apps/Launcher3/com/android/launcher3/Hotseat.java &#xff08;1&#xff09;.修改hotseat的宽 Hotseat------->setInsetsOverridepublic void…

Linux cd 和 pwd 命令

目录 1. 更改工作目录 cd 2. 查看当前工作目录 pwd 1. 更改工作目录 cd 打开虚拟机终端的时候&#xff0c;以用户的家目录为默认工作目录&#xff1b; 更多时候需要更改当前的工作目录&#xff08;Change Directory&#xff09;, 语法&#xff1a;cd 【Linux路径】 没有参数…

Java 22 中的4个永久特性

功能处于孵化或预览阶段是什么意思&#xff1f; 实际上&#xff0c;这是向 Java 编程语言添加新功能的新过程&#xff0c;Java 社区使用这种过程来在 API 和工具处于早期实验阶段时从社区获得反馈&#xff08;孵化功能&#xff09;或已经完全指定但尚未永久的阶段&#xff08;…

塔子哥的快乐值-小红书2024笔试(codefun2000)

题目链接 塔子哥的快乐值-小红书2024笔试(codefun2000) 题目内容 塔子哥有许多生活琐事。已知他生活中有n个事件&#xff0c;解决第i个事件需要他花费ti的时间和hi的精力&#xff0c;并能获得ai 的快乐值。 塔子哥想知道&#xff0c;在总花费时间不超过T且总花费精力不超过H的…

操作系统如何高效处理网络请求:IO多路复用技术

在处理大量请求时&#xff0c;各个引擎都会采用线程池的方法&#xff0c;并发处理这些请求&#xff0c;但当一万个请求来的时候&#xff0c;我们要创建一万个线程来处理吗&#xff0c;很显然不会&#xff0c;那假如我创建一千个线程&#xff0c;那一线程该如何处理这个十个请求…

3GPP R18 Multi-USIM是怎么回事?(四)

前几篇主要是MUSIM feature NAS 部分内容的总结,这篇开始看RRC部分相关的内容,由于RRC部分内容过长,也分成了2篇。这篇就着重看下musim gap以及RRC触发UE离开RRC Connected mode相关的内容,直入正题, 上面的内容在overview中有提到,对应的是如下38.300中的描述。 处于网络…

Python -numpy 基础-------1

NumPy&#xff08;Numerical Python&#xff09;是Python的一个开源数值计算扩展库。它支持大量的维度数组与矩阵运算&#xff0c;此外也针对数组运算提供大量的数学函数库。NumPy的数组&#xff08;ndarray&#xff09;对象是一个快速且灵活的多维数组对象&#xff0c;用于存储…

黑龙江等保测评最新资讯:强化安全基线,赋能数字未来

在黑龙江省&#xff0c;随着数字化转型的不断深化&#xff0c;企业对其信息安全的关注也越来越高&#xff0c;而作为保护信息资产的一个重要环节的等保测评&#xff0c;也面临着新的机遇和挑战。 最新政策动向 最近&#xff0c;有关部门下发了《关于加强网络安全等级保护的指导…

基于3D开发引擎HOOPS平台的大型三维PLM系统的设计、开发与应用

产品生命周期管理&#xff08;Product Lifecycle Management&#xff0c;PLM&#xff09;系统在现代制造业中扮演着至关重要的角色。随着工业4.0和智能制造的推进&#xff0c;PLM系统从最初的CAD和PDM系统发展到现在的全面集成、协作和智能化的平台。本文将探讨基于HOOPS平台的…

【python】Numpy运行报错分析:IndexError与形状不匹配问题

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

森林防火,森林防火智能储水罐_鼎跃安全

森林防火是保护森林的重要措施&#xff0c;每年发生的森林火灾都严重威胁着自然安全&#xff0c;对社会经济和生态造成严重的破坏。为了切实有效地预防并扑灭森林火灾&#xff0c;森林防火智能储水罐已成为现代森林防火体系中的重要装备。 储水罐内置传感器和控制系统&#xff…

【CTFWP】ctfshow-web32

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 题目介绍&#xff1a;题目分析&#xff1a;payload&#xff1a;payload解释&#xff1a;flag 题目介绍&#xff1a; <?php/* # -*- coding: utf-8 -*- # Autho…

【每日刷题Day85】

【每日刷题Day85】 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 125. 验证回文串 - 力扣&#xff08;LeetCode&#xff09; 2. 43. 字符串相乘 - 力扣&#xff08;L…

DC系列靶场---DC 2靶场的渗透测试(二)

漏洞利用及探测 rbash逃逸 虽然我们现在已经可以执行切换路径命令了&#xff0c;但是发现还有是很多命令不能用。 我想看看一下目标主机的所有用户&#xff0c;是不能执行的。 那我们就用到了当前shell逃逸。第一种情况&#xff1a;/ 被允许的情况下&#xff1b;直接 /bin/s…

SpringBoot原理解析(二)- Spring Bean的生命周期以及后处理器和回调接口

SpringBoot原理解析&#xff08;二&#xff09;- Spring Bean的生命周期以及后处理器和回调接口 文章目录 SpringBoot原理解析&#xff08;二&#xff09;- Spring Bean的生命周期以及后处理器和回调接口1.Bean的实例化阶段1.1.Bean 实例化的基本流程1.2.Bean 实例化图例1.3.实…

go 协程池的实现

使用场景 这次需求是做一个临时的数据采集功能&#xff0c;为了将积压的数据快速的消耗完&#xff0c;但是单一的脚本消耗的太慢&#xff0c;于是乎就手写了一个简单的协程池&#xff1a; 为了能加快数据的收集速度为了稳定协程的数量&#xff0c;让脚本变得稳定 设计图如下…

微服务分布式事务

1、分布式事务是什么&#xff1f; 微服务架构中的分布式事务是指在多个服务实例之间保持数据一致性的机制。由于微服务通常涉及将业务逻辑拆分成独立的服务&#xff0c;每个服务可能有自己的数据库&#xff0c;因此当一个业务操作需要跨多个服务进行时&#xff0c;确保所有服务…

sbti科学碳目标倡议是什么

在科学界、工业界以及全球政策制定者的共同努力下&#xff0c;一个名为“科学碳目标倡议”&#xff08;Science Based Targets initiative&#xff0c;简称SBTi&#xff09;的全球性合作平台应运而生。这一倡议旨在推动企业和组织设定符合气候科学要求的减排目标&#xff0c;以…

问题记录-SpringBoot 2.7.2 整合 Swagger 报错

详细报错如下 报错背景&#xff0c;我将springboot从2.3.3升级到了2.7.2&#xff0c;报了下面的错误&#xff1a; org.springframework.context.ApplicationContextException: Failed to start bean documentationPluginsBootstrapper; nested exception is java.lang.NullPo…

信息收集Part3-资产监控

Github监控 便于收集整理最新exp或poc 便于发现相关测试目标的资产 各种子域名查询 DNS,备案&#xff0c;证书 全球节点请求cdn 枚举爆破或解析子域名对应 便于发现管理员相关的注册信息 通过Server酱接口接收漏洞信息 https://sct.ftqq.com/ https://github.com/easych…