案例说明
1. kintex-7 fpga使用srio ip核作为initiator,通过ad9613模块采集ad数据。ad9613采样率为250msps,双通道12bit,12bit按照16bit发送,因此数据量为16bit * 2 * 250m = 8gbps;
2. ad数据通过srio由kintex-7发送到c6678 dsp(target)的0x0c3f0000~0x0c3f7fff的地址空间,数据量为32kbyte,使用swrite方式,期间每传16kbyte数据后就发送一个doorbell信息,让c6678做乒乓处理。kintex-7通过srio与c6678连接,共4个lane,每个lane的通信速率为5gbps,数据有效带宽为20gbps * 80% = 16gbps;
3. 采集到的ad数据可分别通过xilinx vivado和ti ccs软件查看波形,并在c6678做fft处理。
此开发案例基于创龙kintex-7+c6678评估板tl6678f-easyevm展开。
观看视频请点击:ad采集处理案例视频
案例框图
案例演示
硬件连接
(1) 将创龙ad9613高速ad模块tl9613/9706f(此模块集成高速da,da芯片为ad9706)通过fmc接口与评估板连接。
(2) 信号发生器设置成两路正弦波输出,幅度设置:1.5vpp以及无直流偏置,频率设置:1mhz。
(3) 信号发生器的两路输出分别连接到模块的adc_cha、adc_chb。
1.fpga端
参考tl6678f-easyevm评估板光盘用户手册《基于下载器的程序固化与加载》文档中“vivado下bit文件加载步骤”章节,将tl_fmc_ad9613_srio_tl6678f_xc7k325t.bit文件烧录到fpga。烧写bit文件时,指定调试文件tl_fmc_ad9613_srio_tl6678f_xc7k325t.ltx,可以观察到ila调试信号,查看adc采样波形。
adc两路信号在ila内嵌逻辑分析仪中均设置为有符号数、模拟波形显示,如下图所示:
ila触发抓取两路adc采样波形,如下图所示(两路正弦波形):
2.dsp端
参考tl6678f-easyevm评估板光盘用户手册《ccs工程的生成与加载》文档,在“tl-fmc-ad9613-srio/dsp/src”目录下建立ccs工程并导入到ccs软件中编译生成tl-srio-fft.out文件,通过仿真器加载tl-srio-fft.out文件到dsp端。将tl-srio-fft.out下载到c6678 core0 ~ core7核中,在tl-srio-fft.c窗口中红色框标注的地方创建breakpoint,使dsp程序运行后能暂停,如下图所示:
因为core0负责系统初始化,为确保其他核跟core0是同步开始传输,所以core0核最后运行(core0核可查看原始波形以及振幅波形,其他核仅可查看原始波形)。运行程序,dsp程序正常暂停,可通过图像波形形式查看数据,使用graph工具,输入下述配置,查看channel a波形数据。
若出现波形显示不正常或没有波形产生,请参考以下操作:
1.请确保已正常加载gel文件。
2.请确保breakpoint设置成功,dsp程序能够暂停。
3.请硬件断电重启后重新烧写fpga和dsp程序。
频率计算
fft变换点数n=512,ad采样率fs为250msps。某点n所表示的频率为:fn=n*(fs/n) (n 》=0)。当n=0时,fn为0,因为第一点表示的是直流分量,所以频率为0,幅值也为0,因为该正弦波没有直流分量。
从上面的fft振幅波形图中可以看出,channel a在第6个点处有信号,所以对应的频率为fn = 6 * (fs/n) = 6 * 250mhz / 512 = 2.9296875 mhz。对应原始信号3mhz。
此处存在误差,目前采样点为512个,一个点表示fs/n= 488.281khz,所以如果需要提高精度,用户可以提高采样点。
通过查看串口输入数据,也可查看处理结果。其中peak point代表振幅图峰值点横坐标;amplitude代表振幅图幅值;input frequency根据振幅图计算的输入频率。
关键代码说明
1.管脚约束
例程管脚约束文件位于vivado工程“srcconstraints”目录下。
2.fpga端的代码
顶层文件tl_fmc_ad9613_srio.v的主要功能:
(1)端口定义。
(2)使用startupe2原语提供的eos作为系统复位信号,使用startupe2原语提供的内部65mhz时钟cfgmclk作为系统时钟。
可以查看生成的rtl原理图:
3.dsp端的代码
(1)main函数初始化srio子系统,hwi中断注册。
(2)srio_db_isr响应srio doorbell中断,以邮箱方式通知core0 ~ core7核同时进行fft运算。
(4)tl_fft_amplitude任务等待信号量置位,core0核进行fft振幅运算,通过串口打印数据处理结果。
block design说明
block design如下
1.select io ip核配置说明
参考tl6678f-easyevm评估板光盘tl-fmc-ad9613例程的ip核与模块介绍章节。
2.srio ip配置说明
srio链路宽度设置为4个lane,通信频率为5gbps(即每个lane均为5gbps),参考时钟为125mhz;设置8bit位宽的id,且id=0xff。
port i/o style选择为initiator/target模式,其中condensed i/o接收和发送均使用一个axi4-stream通道,initiator/target接收和发送采用不同的axi4-stream通道。
i/o format:i/o端口配置使用hello格式包。
其他参数保持保持默认值即可。
更详细说明请查阅ip核手册:《pg007_srio_gen2.pdf》。
3.data_to_srio rtl模块功能
(1)连续不停地将ad9613采集的数据写入fifo。
(2)控制fifo读操作,每次从fifo读取完指定的数据并通过axi4-stream接口传输到srio ip。其中本例程每发送16kbyte的数据就发送一个doorbell信息,通知target(dsp)对数据做处理。
双击block degin中的模块,可配置:
doorb triger threshold: 门铃触发阈值,本例设置为16384bytes = 16kb,即通过srio发送16kb的数据后就发送一个doorbell信息。
srio doorb info1:发送完doorb triger threshold个字节的数据之后发送的门铃信息。
srio doorb info2:发送完2倍的doorb triger threshold个数据之后发送的门铃信息。
srio target addr:srio target的内存地址。(本例设置的为dsp的msmc地址0x0c3f0000)
srio target id:srio target的id。
srio local id:srio iitiator的id。
代码解释
(1)端口定义
(2)fifo原语
配置fifo大小为36 byte,读写数据的位宽为64bit(fifo深度为512)。
almost_empty_offset和almost_full_offset配置为0x20,即32;即当fifo写入数据个数大于32个,almost_full输出高电平。
本例fifo设置位宽为64bit,所以64bit * 32 / 8 = 256 byte,即当fifo写入数据大于256 byte,almost_full会输出高电平。
因为srio的package最大有效数据为256 byte,为了确保srio能传输完整的数据包,所以设置fifo的门限值为256byte.
fifo原语详细说明请查阅:《ug473_7series_memory_resources.pdf》。
(3)fifo写控制
因为ad9613输出的ad数据为双通道的24bit,所以分别将两个通道的数据补成16bit。然后保存到data_in_store中。
因为fifo的位宽64bit,而上个步骤将ad的双通道数据补成了32bit,所以每存够两个32bit的ad数据,凑成64bit的data_in_store,再使能fifo_wr_en信号,把64bit的数据写入fifo。
后写入的数据存在高32位,发送到srio target端(dsp),方便其按顺序处理数据。
其中wr_cnt为一个1bit,计数只有0和1两个值。
(4)读取fifo数据并打包hello格式发送数据
hello包头拼接:
(6)状态切换
本例设置的total_data_size为32kbyte,即每发送16kbyte的数据包之后发送一个门铃信息。
资料下载
点击以下链接或扫描二维码,获取本案例源码及tl6678f-easyevm评估板详细资料。
http://site.tronlong.com/pfdownload
点击链接:tl6678f-easyevm评估板
助推智能网联汽车融合发展 贸泽电子2023技术创新周首期活动来袭
8K与Wi-Fi 6都将成为使用者的刚需
贝佐斯离婚告一段落,亚马逊市值有望再次冲刺万亿美元!
你为什么需要了解高镍三元电池
米家279元羽绒服开卖!网友:衣服丑,模特照好评 男模特帅
FPGA+DSP的高速AD采集处理开发详解
华为云数据库 RDS for MySQL 的读写分离,凭什么打破企业数据瓶颈?
湖北加快布局新一代人工智能 加速推动高质量发展
电力电子实时仿真实验室,助力高等教育信息化建设
第三方支付谁更胜一筹?大数据告诉你支付宝和微信到底谁更强?搅局的都走开
嵌入式OPC UA网关BL102的作用是什么
在LabVIEW中创建Actor Framework的抽象消息及接口
MediaTek ASIC服务推出硅验证的7nm制程112G远程SerDes IP
MT8195安卓核心板_MTK8195规格性能介绍
ABB工业机器人在机器人市场中的地位
人工智能技术包括哪些
颜值和音质都在线的AKG耳机
如何使用 Java 原生格式化Instant
高通发布物联网专用数据机9205 LTE,推进5G物联网进程
华为P11最新消息汇总:华为P11蓄势待发拯救华为P10闪存门事件,华为P11各种黑科技配置!