前言
在FPGA开发过程中几乎都要用到仿真的功能,对于一些简单的外部激励(如时钟、复位、简单数据或者信号等)直接在testbench中编写产生就行了,但对于复杂的外部激励数据,很难在testbench中产生,这时就要通过读取外部文件里的数据来实现。通过和matlab的配合使用,基本上可以模拟各种外部激励。
举例来说:输入信号是三个不同频率的正弦波的相加,经过FIR低通滤波器滤除高频分量,输出频率最低的那个正弦信号。这种情况下测试用的输入信号不能通过testbench编写产生。
简单来说有以下两种方法可以模拟输入信号:
在FPGA内部通过DDS产生三个正弦波,然后将三个波形相加作为输入信号。
利用matlab产生输入信号,将数据导出为.txt文件,在仿真时读取文件内的数据作为外部激励。
显然第二种方法更加灵活和便捷。下面,具体介绍一下这种方法的使用。
平台:
Vivado 16.4
Matlab R2017b
Matlab程序编写:
代码如下:
%=============设置系统参数==============%
f1=1e6; %设置波形频率
f2=500e3;
f3=800e3;
Fs=20e6; %设置采样频率
L=1024; %数据长度
N=14; %数据位宽
%=&