毫米波雷达器件ADC原始数据捕获

4 篇文章 2 订阅
3 篇文章 0 订阅

毫米波雷达器件ADC原始数据捕获

摘要

本应用程序报告演示了如何解释使用Capture Demo或Mmwave Studio捕获的原始模数转换器(ADC)数据。针对不同的硬件设置,分别讨论了获取原始ADC数据的格式。Matlab代码片段提供给需要开发自定义代码进行数据处理的工程师。

内容

介绍、先决条件、查看和保存原始数据使用捕获演示和CCS、捕获演示使用CCS的原始数据格式、xWR12xx xWR14xx DCA1000数据格式、在MATLAB中解释二进制文件、总结、参考文献

1介绍

 mmwave雷达(xWRxxxx)的原始数据可以使用mmwave SDK中提供的Capture Demo捕获,或使用mmwave Studio GUI工具中提供的mmwave Studio捕获。所涵盖的主要主题包括如何使用Code Composer Studio™(CCS)保存捕获演示的原始数据,使用捕获演示捕获的数据的原始数据格式,使用Mmwave Studio捕获的数据的原始数据格式,以及如何在MATLAB中解释数据。本文档假设用户知道如何运行Capture Demo和Mmwave Studio。关于如何运行捕获演示,请参考mmWave SDK演示安装指南,在TI资源管理器mmWave培训演示文件夹中找到。关于如何使用Mmwave Studio获取数据的信息,请参考Mmwave Studio GUI工具中的Mmwave Studio用户指南。

请注意,Mmwave Studio,以前称为Radar Studio,支持两个不同的平台。其中一个是DCA1000EVM数据采集卡用户指南,它与xWRxxxx EVM具有接口,使用户能够通过以太网传输ADC数据。另一个平台是TSW140x高速数据采集/模式生成卡,它需要Mmwave devPack EVM和高速数据转换器Pro GUI用户指南。TSW1400 EVM通过串行外设接口(SPI)传输捕获的数据到PC(通过板载USB到SPI转换器)。雷达工作室(旧版本的Mmwave工作室)只支持TSW1400 EVM与HSDC Pro。有关更多信息,请参阅雷达工作室用户指南的设备固件包和使用TSW1400板获取mmWave传感器原始数据的培训视频。

关于DCA1000 EVM和TSW1400 Mmwave Studio的用户界面的差异,请参见Mmwave Studio用户指南。DCA1000设计基于Lattice FPGA, LVDS数据通过以太网流进行采集。基于Altera FPGA的tsw1400evm采集不同格式的LVDS数据。数据格式也取决于毫米波设备的类型。因此,不同的格式需要单独讨论。

应用报告的组织如下—第2节列出了先决条件。第3节介绍如何使用capture demo和CCS运行和保存ADC数据。第4节讨论了捕获演示和CCS保存的数据格式。章节5、章节6、章节7、章节8分别详细描述了Mmwave Studio为使用DCA1000和TSW1400的不同xWRxxxx设备保存的数据格式。第9节提供了处理Mmwave Studio捕捉到的数据的Matlab脚本示例。

2先决条件

本文档假设用户已经安装了Capture Demo, Mmwave Studio的必要前提条件,并且熟悉如何使用该软件的说明。本文档已经测试SDK 1.01.00.02, CCSv7.3, Mmwave Studio 1.0.0.0。要了解如何运行Capture Demo和任何必要的先决条件,请安装mmWave SDK。也可以查看mmWave SDK用户指南,找到C:\ti\mmwave_sdk_\docs。关于如何运行Mmwave Studio和任何必要的先决条件,安装Mmwave Studio GUI工具。也可以查看Mmwave Studio用户指南,在C:\ti\mmwave_studio_\docs找到

3使用Capture Demo和CCS查看和保存原始数据

本节讨论如何使用mmWave SDK中提供的Capture Demo查看和保存原始ADC数据。本节以用户熟悉如何使用CCS运行Capture Demo为例。关于如何运行Capture Demo的信息,请参考mmWave SDK用户指南,可以在C:\ti\mmwave_sdk_ docs找到。

ADC数据存储在L3中,可以通过CCS的内存浏览器进行查看和保存。要访问Memory Browser,打开View选项卡并选择Memory Browser选项,如图1所示。

 图1所示。在CCS中打开内存浏览器

在“内存浏览器”窗口中,可以通过指定L3内存的起始地址来查看L3内存的内容。起始地址由capture.h文件中的CAPTURE_L3RAM_DATA_MEM_ADDRESS指定,随SDK版本不同而不同。保留用于存储ADC数据的内存总大小由capture.h中的CAPTURE_L3RAM_DATA_MEM_SIZE指定。另外,在将配置文件发送到设备之前,会在CCS控制台的最后一行输出L3地址和大小。

要保存原始ADC数据,请单击Memory Browser窗口右上角的save Memory按钮,如图2所示。

 图2。内存浏览器保存内存按钮

在Save Memory菜单中,指定文件路径和文件名,并选择TI Data作为文件类型,如图3所示。

 图3。保存内存和文件类型

单击Next并指定格式、起始地址和长度。对于格式,选择16位十六进制TI风格。数据的长度取决于用户的啁啾配置。要计算单词的长度,可以使用以下公式。首先,找出以字节为单位生成的ADC数据的总大小。

总大小(以字节为单位) = Num ADC 样本 × Num RX 通道 × Num 帧 × Num Chirps × Num Bytes Per Sample       (1)

每个样本的字节数基于传感器配置中的adcCfg参数指定的输出格式。对于复杂的输出格式,每个样本有4个字节:实部2个字节,虚部2个字节。对于真正的输出格式,每个样本有2个字节。一旦以字节为单位确定了数据的总大小,就可以通过总大小除以16找到单词的数量;这假设用户以16位十六进制TI风格格式保存。

 字的长度=总大小/每个字2字节   (2)

一旦保存了数据,就可以使用capture_demo在MATLAB中查看它。m文件位于C:\mmwave_sdk_\packages\ti\demo xwr14xx\capture\gui用于xWR1xx,并位于C: ti\mmwave_sdk_01_00_00_05\packages\ti\demo xwr16xx\capture\gui用于xwr16xx。该文件绘制了原始ADC数据和ADC数据的1D FFT。可以修改此代码以完成对数据的额外后处理。要进行进一步的后期处理,您必须了解如何格式化输出数据,如第4节所示。

4 CCS采集演示原始数据格式

通过Capture Demo捕获的数据可以以交错或非交错的方式存储,具体可通过传感器配置中的adcbufCfg命令指定。对于xWR14xx设备,建议使用交错模式,但也可以使用非交错模式。对于xWR16xx/IWR6843设备,只能使用非交错模式。交织模式默认配置为xWR14xx,非交织模式默认配置为xWR16xx/IWR6843。有关交织的更多信息,请参阅aw1xxx数据路径程序员指南。数据以16位2补码的格式存储。

图4显示了4个RX、3个RX、2个RX天线交织模式下的复杂数据输出数据。

 图4。交错复杂数据格式使用捕获演示

图4表示了当文件保存为TI数据格式文件时,使用16位十六进制TI风格时数据是如何保存的。在图4中,RX0 I(0)表示RX0接收到的真实数据的第一个样本,RX0 Q(0)表示RX0接收到的虚拟数据的第一个样本。RX0 I(1)表示在RX0接收到的真实数据的第二个样本,以此类推。

数据也可以仅作为真实数据来捕获。图5显示了数据如何与4个RX、3个RX和2个RX天线的实际数据保存为交错模式。

 图5。交错的真实数据格式使用捕获演示

数据也可以以非交错格式存储。对于xWR16xx/IWR6843,数据只能以非交错格式存储。但是,对于xWR14xx,推荐交错模式。图6显示了非交错复杂数据的输出格式。

 图6。非交错复杂数据格式使用捕获演示

在非交错格式中,给定RX的所有数据存储在单个内存块中,下一个RX的所有数据存储在另一个内存块中。例如,所有RX0数据按顺序存储,然后是所有RX1数据。要确定每个RX占用的内存量,请使用公式3。

每个 RX 的字节数 = Num ADC 样本 × Num 帧 × Num Chirps × Num Bytes Per Sample      (3)

 对于复杂数据,每个样本有4个字节。对于真实数据,每个样本有两个字节。对于非交错数据,每个RX的字数可以使用公式4确定。

每RX字数=每RX字节数/每字2字节数                   (4)

图7显示了非交错实际数据的输出格式。

 图7。非交错的真实数据格式使用捕获演示

与处理复杂数据的非交错模式类似,在处理真实数据的非交错模式中,给定RX的所有数据都存储在单个内存块中,下一个RX的所有数据都存储在下一个内存块中。例如,如果每个RX通道有1024个单词,则首先存储RX0的所有1024个单词,然后存储RX1的所有1024个单词,依此类推。

5 xWR12xx和xWR14xx与DCA1000数据格式

除了Capture Demo,还可以使用Mmwave Studio保存ADC数据。本节讨论xWR12xx和xWR14xx使用Mmwave Studio和DCA1000 EVM保存的数据格式。对于xWR12xx和xWR14xx设备,数据通过四个LVDS通道捕获,并以交错格式存储在二进制文件中。DCA1000捕获的数据样本有两个字节长,并且是两个字节的补码格式。每个LVDS通道对应一个给定的接收器。对于真实数据,每个LVDS通道将存储一个真实样本。如果总共有M个啁啾,数据存储从第一个啁啾开始,到第M个啁啾结束。图8显示了当4台接收机启用时,数据如何存储在二进制文件中,用于M个啁啾和每个啁啾N个ADC样本的真实数据。

 图8。使用DCA1000的真实数据格式

任何未使用的LVDS通道将填充0。启用接收器的数量应与LVDS通道的数量相匹配。对LVDS通道的接收机分配是从最小的接收机开始,到最大的接收机结束。例如,如果接收机1和3被启用,LVDS 2和3被启用,则LVDS 2通道将包含来自接收机1的数据,LVDS 3通道将包含来自接收机3的数据。1号和4号车道将用0填充。图9显示了用于复杂数据的二进制文件的数据存储格式。

 图9。xWR14xx复杂数据格式使用DCA1000

对于复杂数据格式,每个样本由实部和虚部组成,每个LVDS通道捕获每个接收器的复杂样本。如果在Mmwave Studio的“IQ Swap”选项中选择了“I first”选项,则每个接收机都先存储实部,然后再存储每个接收机的镜像部。任何未使用的LVDS通道将填充0。例如,如果接收机1和3被启用,LVDS通道1和2被启用,则LVDS通道1将包含来自接收机1的数据,LVDS通道2将包含来自接收机3的数据。3号和4号车道将用0填充。

9、在MATLAB中解释二进制文件

在Mmwave Studio中捕获的数据可以使用Mmwave Studio GUI进行处理。但是,任何自定义的后期处理都需要用户创建自定义脚本。本节包含示例MATLAB代码片段,帮助用户解释使用xWR14xx和xWR16xx捕获的二进制文件,以便进行自定义的后期处理。

Mmwave Studio存储的数据文件位于安装路径下的PostProc文件夹下,默认为adc_data.bin。对于TSW1400,数据直接保存为adc_data.bin。对于DCA1000,按下“DCA1000 ARM”和“触发器帧”后,首先保存原始数据文件adc_data_RAW_0.bin。由于以太网协议的原因,DCA1000 EVM接收的文件可能不包含正确的UDP数据包。在某些情况下,可能会出现数据丢失且未在文件中捕获的情况。数据包重新排序和零填充实用程序需要运行来扫描原始捕获文件,并以正确的顺序重新排列数据包,以防任何丢失的数据包;它将在文件中填充等量的零。此实用程序还删除元数据,输出现在包含由xWRxxxx设备传输的原始ADC数据。通过按“PostProc”按钮,adc_data_RAW_0.bin将进行数据包重排序和零填充,并保存为adc_data.bin。

运行Packet_Reorder_Zerofill.exe也可以得到相同的结果,如Mmwave Studio用户指南中所述。以下所有matlab脚本都用于解码数据文件adc_data.bin——由xWRxxxx设备传输的原始ADC数据。

9.1 DCA1000带xWR12xx和xWR14xx的MATLAB示例

下面的MATLAB代码示例中的函数可以使用DCA1000读取Mmwave Studio和xWR14xx保存的文件。

%%% This script is used to read the binary file produced by the DCA1000 
%%% and Mmwave Studio 
%%% Command to run in Matlab GUI - readDCA1000('')

 
function [retVal] = readDCA1000(fileName) 
%% global variables
 % change based on sensor config 
numADCBits = 16; % number of ADC bits per sample 
numLanes = 4; % do not change. number of lanes is always 4 even if only 1 lane is used. unused lanes 
isReal = 0; % set to 1 if real only data, 0 if complex dataare populated with 0 %% read file and convert to signed number

 % read .bin file 
fid = fopen(fileName,'r'); 
% DCA1000 should read in two's complement data 
adcData = fread(fid, 'int16'); 
% if 12 or 14 bits ADC per sample compensate for sign extension 
if numADCBits ~= 16 
    l_max = 2^(numADCBits-1)-1; 
    adcData(adcData > l_max) = adcData(adcData > l_max) - 2^numADCBits; 
end 
fclose(fid); 

%% organize data by LVDS lane 
% for real only data 
if isReal 
    % reshape data based on one samples per LVDS lane 
    adcData = reshape(adcData, numLanes, []); 
%for complex data 
else 
    % reshape and combine real and imaginary parts of complex number 
    adcData = reshape(adcData, numLanes*2, []); 
    adcData = adcData([1,2,3,4],:) + sqrt(-1)*adcData([5,6,7,8],:); 
end 
%% return receiver data 
retVal = adcData;

前面代码片段中的函数将返回一个矩阵,其中所有接收方数据都存储在行中。numADCBits和isReal的值应该根据所使用的传感器配置进行修改。numLanes的值不应该被修改,因为总会有4个LVDS lanes被使用。未使用的车道将填充0。

函数返回的矩阵应该类似于图17。

 图17。MATLAB脚本输出——xWR14xx与DCA1000

第1行包含来自第一个接收器的所有数据,来自第二个接收器的第2行,来自第三个接收器的第3行,以及来自第四个接收器的第4行。在某些接收器被禁用的情况下,相应的行将被填充为零。每一行包含的列数等于每个啁啾的ADC采样数乘以总啁啾数。这些柱子是由啾啾声组织起来的。例如,如果有256个ADC样本,共有1280个chirps (128 chirps/帧× 10帧),那么每行包含327680列。前256列对应第一个啁啾,后256列对应第二个啁啾,以此类推。前32768列对应第一帧的啁啾,以此类推。然后可以按照用户的要求处理数据。

10总结

本文档概述了如何解释使用Capture Demo或Mmwave Studio捕获的原始ADC数据。对于使用Capture Demo捕获的数据,使用capture_demo。mmWave SDK中提供的m文件,可以使用和修改来处理数据。对于在Mmwave Studio中捕获的数据,可以使用提供的MATLAB代码片段读取二进制文件,并通过接收器将数据组织成行。然后可以添加到代码中,根据需要处理数据。

11引用

• DCA1000EVM Data Capture Card User's Guide

• TSW140x High Speed Data Capture/Pattern Generator Card

• High Speed Data Converter Pro GUI User's Guide

• AWR1xxx Data Path Programmer's Guide

• Industrial Radar Family Technical Reference Manual

• mmWave Sensor Raw Data Capture Using the TSW1400 Board

• mmWave Device Firmware Package

• mmWave Software Development Kit

• mmWave Studio

DCA1000EVM数据捕捉卡用户指南

•TSW140x高速数据捕获/模式发生器卡

•高速数据转换器支持GUI用户指南

•AWR1xxx数据路径程序员指南

•家庭工业雷达技术参考手册

•mmWave传感器原始数据捕获使用TSW1400董事会

•mmWave设备固件包

•mmWave软件开发工具包

mmWave Studio

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值