流音频信号从英特尔FPGA板使用已经准备好,可以捕获信号
这个例子展示了如何使用一个已经准备好,可以捕获信号在一个FPGA数据获取与现有的HDL代码阅读FPGA流信号。这个例子从现有的FPGA设计实现一个片上模拟-数字转换器(ADC)样本一个音频信号。ADC知识产权(IP)公开阿瓦隆®内存映射(MM)奴隶接口控制和一个阿瓦隆为数据输出流接口。现有的示例包含一个简单的阿瓦隆毫米主启动ADC。使用FPGA数据捕获收集从阿瓦隆ADC的输出数据流接口和数据流到MATLAB®工作区。
的ready_to_capture
FPGA信号输出数据捕获HDL IP。这个输出捕捉连续数据提供你地方先进先出(FIFO)的FPGA数据捕获HDL IP和检查ready_to_capture
信号流数据到数据捕获之前IP。您可能还需要检查FIFO不是空的。这个数字说明了连续数据采集工作流程。
阿瓦隆的音频数据流接口写入一个FIFO,和FIFO时阅读ready_to_capture
信号是断言。为了避免数据溢出,FIFO时必须大到足以捕捉数据ready_to_capture
deasserted。在这个例子中,FIFO的深度配置为16 k和音频采样频率是50千赫。
需求和先决条件
MATLAB
高密度脂蛋白校验™
高密度脂蛋白校验支持英特尔金宝app®FPGA板包
定点设计师™
第四的英特尔®'软件中列出支持的版本金宝app金宝appEDA工具和硬件支持
箭头®十马克斯®10 FPGA评估工具
DSP系统工具箱™
建立FPGA开发板
1。确认电源开关是关闭的。
2。连接JTAG下载电缆FPGA开发板和主机之间。
3所示。(可选)的输出端口连接FPGA板和一个音频源,如你的手机,通过3.5毫米音频电缆。如果你跳过这一步,捕获的数据将被随机噪音。
准备资源的例子
建立了英特尔第四的。这个例子假定英特尔第四的可执行文件位于文件C: \ \ 18.0 \负责第四的\ bin \ quartus.exe
。如果你的可执行文件的位置是不同的,而不是用你的路径。
hdlsetuptoolpath (“ToolName”、“阿尔特拉第四的二世”,…“路径”、“C: \ \ 18.0 \负责第四的\ bin \ quartus.exe ');
生成FPGA数据捕捉组件
启动FPGA数据捕捉组件发生器通过执行这个命令在MATLAB工具。
generateFPGADataCaptureIP
这个例子中监控一个音频信号从现有的HDL代码系统。信号是一个12位adc_out
。的adc_out
信号是数字音频样本的输出信号。配置数据捕捉组件来操作这个信号,遵循这些步骤。
1。名字的信号adc_out
在港口表中。
2。改变信号的位宽12。
3所示。选择FPGA供应商作为阿尔特拉
。
4所示。选择生成的IP语言作为Verilog
。
5。选择样本深度作为8192年
。这个值是样品的数量的每个信号数据采集工具返回MATLAB每次检测到一个触发器。
这个图显示了这些工具设置。
生成FPGA数据捕捉组件,点击生成。一份报告显示了生成的结果。
FPGA数据捕获HDL IP集成
您必须包含生成的HDL IP核心FPGA设计的例子。你可以复制模块实例代码生成的报告。在这个例子中,将生成的高密度脂蛋白IP与ADC输出通过一个FIFO。
打开readyToCapture_top.v
这个示例中提供的文件。取消这个代码。
datacapture情况(.clk(时钟),.clk_enable (adc_valid) .ready_to_capture (ready_to_capture) .adc_out (adc_out));
保存readyToCapture_top.v
、编译修改的FPGA设计和创建一个FPGA编程文件通过以下Tcl脚本。
系统(“quartus_sh - t readyToCapture_deca_max10。tcl &”)
Tcl脚本包含在本例中执行这些步骤。
1。创建一个新的第四的项目。
2。添加示例HDL文件和生成的FPGA数据捕获HDL文件到项目。
3所示。编制设计。
4所示。FPGA程序。
等到第四的过程成功完成在下一步。这个过程大约需要5到10分钟。
捕获数据
导航到FPGA的目录数据捕捉组件生成。
cd hdlsrc
你必须设置捕获模式立即使用一个已经准备好,可以捕获的信号在一个FPGA数据捕获。捕捉数据的直接模式,遵循这些步骤。
1。创建一个FPGA数据采集系统对象™和配置这些属性。
DataCaptureObj = datacapture;DataCaptureObj。TriggerPosition = 0;DataCaptureObj。NumCaptureWindows = 1;setRunImmediateFlag (DataCaptureObj, 1);
2。不断捕捉FPGA数据。在这个例子中,捕捉NumberOfSampledepth
快照数据。您可以修改NumberOfSampledepth
根据需要的价值。
NumberOfSampledepth = 10;Sample_depth = 8192;adc_out = int16 (0 (NumberOfSampledepth * Sample_depth, 1));为i = 1: NumberOfSampledepth [~, ~, adc_out(我* Sample_depth - (Sample_depth-1): * Sample_depth)) = (DataCaptureObj)步;结束
3所示。保存捕获音频数据捕获的数据写入. wav
格式。过程或重播捕获的数据在稍后的时间。
audiowrite (“captured_audio_file.wav”,adc_out, 50000)
4所示。捕获的数据视图逻辑分析仪工具。的逻辑分析仪工具可以用几秒钟来加载数据的捕获快照。
范围= dsp.LogicAnalyzer (“NumInputPorts”,1…“DisplayChannelFormat”,“模拟”,…“DisplayChannelHeight”,100);标签= getDisplayChannelTags(范围);modifyDisplayChannel(范围、标记{1}“名字”,“adc_out”);范围(adc_out);
这个图显示了8 k的音频数据样本逻辑分析仪工具。