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