MATLAB的实现
1、DUC
编辑
产生一个10Mhz的正弦信号,与50Mhz载波进行。进行matlab仿真与FPGA仿真。
编辑
编辑
2、DDC
编辑
3、滤波
滤波去掉高频信号
首先设计fir滤波器
编辑
其中有一个density factor,他的含义是:
【转载】等波纹滤波器中density factor参数的解释_liweinjit的博客-CSDN博客
这里需要注意的是输出信号的前面一段是无效的。该段的长度为滤波器阶数的一半。
输出有延迟,FIR滤波器的特性,阶数越大延迟越高,延迟为(N-1)/2,这个问题有待后续研究,为什么不是N呢,N更符合直觉哎。这个是由公式推导出了的,具体过程在书上有
通过FIR滤波器的输出,出现信号的延迟,校正信号的延迟量_conv函数fir_清泉_流响的博客-CSDN博客
编辑
接下来是在FPGA上的实现
FPGA上的实现
1、关于fifo的读写计数器为什么会比实际值大两个,这个是与fifo的读取模式有关,first word fall through模式下actual depth就是会多两个。
带你快速入门AXI4总线--AXI4-Stream篇(3)----详解XILINX IP AXI4 STREAM DATA FIFO_孤独的单刀的博客-CSDN博客
2、观察到fifo的packet模式存在问题,输入给了last信号后并没有激活输出
原因是last信号也需要valid才能生效
3、想把仿真结果拿出来用matlab跑一跑看看,现在有三个方案,一是在仿真里记录,二是在板子上用ila记录,三是用ip自带的c model。
在使用仿真保存数据的时候,发现并不是从第一个数据就开始保存的,可能是因为创建文件需要时间吧。
并不是文件创建的时间,而是保存的触发条件设置的慢了。tvlaid_out出来的慢
正在上传…重新上传取消
编辑
FPGA的结构
编辑
fpga仿真结果:
编辑