使用FPGA数据捕获从Intel FPGA板捕获音频信号
这个例子展示了如何使用FPGA数据捕获和现有的HDL代码来读取FPGA内部信号。从现有的FPGA设计开始,该设计实现了片上模数转换器(ADC)来采样音频信号。ADC IP公开Avalon®内存映射(MM)从接口用于控制和Avalon流接口用于数据输出。这个FPGA设计已经包含一个阿瓦隆MM主启动ADC。使用FPGA数据捕获功能从Avalon流接口收集ADC输出数据到MATLAB®工作空间。
要求和前提条件
MATLAB
高密度脂蛋白校验™
用于Intel®FPGA板的HDL验证支持包
定点设计师™
Intel Quartus®Prime软件,支持的版本列在支持EDA工具和硬件
Arrow®DECA MAX®10 FPGA开发板
组建FPGA开发板
1.确认电源开关处于关闭状态。
2.在FPGA开发板和上位机之间连接JTAG下载线缆。
3.(可选)通过3.5 mm音频线将FPGA板的输入接口与音频源(如手机)连接。如果跳过此步骤,则捕获的数据是随机噪声。
准备示例资源
设置Intel Quartus。本例假设Intel Quartus可执行文件位于该文件中C: \ \ 18.0 \负责第四的\ bin \ quartus.exe
.如果可执行文件的位置不同,请使用您的路径。
hdlsetuptoolpath('ToolName','Altera Quartus II',…“路径”、“C: \ \ 18.0 \负责第四的\ bin \ quartus.exe ');
生成FPGA数据采集组件
启动FPGA数据捕获组件生成器在MATLAB中执行该命令。
generateFPGADataCaptureIP
这个示例监视来自音频系统现有HDL设计的两个信号:12位adc_out
8位计数器
.的adc_out
信号是音频输入信号的数字样本。下一个信号计数器
是一个8位自由运行计数器。要配置数据捕获组件以对这两个信号进行操作,请遵循以下步骤。
1.添加一行到港口表。添加按钮一次。
2.说出第一个信号adc_out
第二个信号是计数器
.
3.将两个信号的位宽分别更改为12和8。
4.选择FPGA供应商作为阿尔特拉
.
5.选择生成的IP语言作为Verilog
.
6.选择样本深度作为1024
.这个值是每次检测到触发器时,数据捕获工具返回给MATLAB的每个信号的样本数量。
7.选择最大触发级作为2
.此值是在数据捕获期间可以添加的最大触发阶段数,以提供多个触发条件。
该图显示了这些工具设置。
单击,生成FPGA数据采集组件生成.一个报告显示生成的结果。
集成FPGA数据捕获HDL IP
您必须将生成的HDL IP核包含到示例FPGA设计中。您可以从生成的报告中复制模块实例代码。在本例中,将生成的HDL IP与ADC输出和8位自由运行计数器连接起来。
打开adc_top.v
此示例提供的文件。取消注释此代码。
数据捕获u0 (.clk(adc_clk), .clk_enable(adc_valid), .ready_to_capture(), .adc_out(adc_out), .counter(counter[7:0]));
保存adc_top.v
,编译修改后的FPGA设计,使用下面的Tcl脚本创建FPGA编程文件。
System ('quartus_sh -t adc_deca_max10. sh ')tcl &”)
本例中包含的Tcl脚本执行这些步骤。
1.创建一个新的Quartus项目。
2.将示例HDL文件和生成的FPGA数据捕获HDL文件添加到项目中。
3.编译设计。
4.FPGA编程。
请等待Quartus进程成功完成后,再执行下一步。这个过程大约需要5 ~ 10分钟。
捕获数据
进入FPGA数据捕获组件的生成目录。
cd hdlsrc
启动FPGA数据采集工具。此工具是为数据捕获信号定制的。
launchDataCaptureApp
单击,开始数据采集捕获数据.数据捕获对象从FPGA请求一个捕获数据缓冲区。默认设置是立即捕获,而不等待触发条件。
捕获的数据被保存到一个结构中,dataCaptureOut
,在MATLAB工作空间中。如果您有DSP系统工具箱™软件,捕获的数据也显示为信号波形逻辑分析仪工具。
使用触发器缩小数据捕获范围
控件中的触发条件可从FPGA捕获围绕特定事件的数据FPGA数据采集工具。例如,只有在计数器达到某个值后才捕获音频数据。
选择触发级数作为1
.在触发阶段1部分中,选择信号作为计数器
.按钮启用此触发信号+按钮。选择相应的触发条件值(价值),10
.触发模式自动变为在触发.这个变化告诉FPGA在捕获和返回数据之前等待触发条件。该图显示了这些工具设置。
点击捕获数据一次。这一次,数据捕获IP返回1024个样本,当它检测到计数器等于10时捕获。
为了从FPGA捕获触发值中特定位的数据,而不考虑其他位,您可以使用位掩码值配置触发条件。
例如,若要仅在计数器的第七个位为1时捕获音频数据,则设置触发条件值(价值)0 bx1xxxxxx
如图所示。
点击捕获数据一次。
数据捕获IP触发器捕获范围为[64,127]和[192,255]的计数器值的音频数据。
捕获事件的多次发生
若要从FPGA捕获循环事件,请配置捕获窗口的数量在FPGA数据采集工具。
例如,要捕获八个不同时隙的音频数据,请选择捕获窗口的数量作为8
.该图显示了更新后的工具设置。
点击捕获数据.数据捕获IP返回8个窗口,每个窗口有128个样本,总共是1024个样本深度。
窗口深度=样本深度/捕获窗口数;
的逻辑分析仪该工具将此结果显示为触发八次,每次记录128个样本的音频数据。
的信号捕获窗口
而且触发位置
分别指示相应的窗口号和触发器位置。
在多个触发阶段捕获数据
这个场景解释了如何通过在多个触发阶段中提供一系列触发条件来捕获数据。要在多个触发条件下捕获数据,必须选择触发级数类型中大于1的值FPGA数据采集工具。
例如,要在计数器值在5个时钟周期内从0到5时捕获音频数据,请遵循以下步骤。
1.选择触发级数作为2
.
2.在触发阶段1部分中,选择信号作为计数器
.按钮启用此触发信号+按钮。选择相应的触发条件值(价值),0
.
3.在触发阶段2节,选择“信号为”计数器
.按钮启用此触发信号+按钮。选择相应的触发条件值(价值),5
.选择触发超时并设置为5
.
修改后的工具设置如图所示。
点击捕获数据.数据捕获IP在5个时钟周期内检测到触发阶段2中的触发条件时捕获1024个样本,在此之前检测到触发阶段1中的触发条件。