数字下变频问题请教
对输入的12M信号进行下变频至0中频,时钟频率为48M,然后对该信号进行滤波,其中滤波器参数设置如下:
1、输入信号位宽16bit,系数精度为9bit,采用完全并行结构;
2、设置为低通滤波器,hamming窗;
3、阶数为60,采样频率48MHz,截止频率为6M;
编译完成后,通过signaltap将设计现在入芯片,用信号源输入一12M附近信号,可以观察看I、Q两路信号正交,但是如果改变频率点,则不再正交,用matlab 做FFT后,会产生镜频信号,幅度和真实信号差不多一样大,该现象必须通过重新下载程序才能消除。不知道哪位大侠遇到过这种现象?
等待大侠指点!
你的问题是改变频点会乱掉,相当于复位后就正常了。那考虑下这切换的过程中,可能某些变量的值还在起作用,改变设置后,影响没有马上消除,而是进一步地在作用。
你改变频点后,哪些变量发生变化了?滤波器系数是怎样产生的?是直接固定的呢,还是RAM的方式?这过程里RAM地址有没有乱掉?哪些变量影响是暂时性的,过会儿就会稳定, 哪些变量会乱跑?
这需要CHECK一下。
感谢你的指教,
感觉改变频点时,除了AD采样数据变化外,其他的应该都没有变化;
滤波器是直接调用altera 的IP 核,设置相关参数后直接生成模块,
另外需要补充的是:
1、滤波器的参数设置中,系数缩放比例:选择auto ,9bit;
2、滤波器输出的结果为48MHz数据速率,我用了一级寄存器和12MHz的时钟进行了抽取;
你的数据是怎么采集的?应该是只采集了调整频点后的那么一段数据吧?而不是把调整前后的数据全都采集下来一起用matlab查看。
altera IP生成的FIR我没有用过,里面是否有使能开关,或者你做个使能开关。在你调整频点后,关掉再打开使能,不过这样做也没有用啊,只是数据源改变,若干个时钟周期后就全是干净数据了。
用于四分之一地抽取速度,可以调整下选择哪段抽取不?比如第一个数据,还是中间的数据,还是随机地抽取的?
数据采集时用48M的时钟进行采集,采集深度为2K ,没有所谓的数据头标志或采集开始标志,完全是盲采。
xue xi le
你的数据存储的方法是通过free run,抓取相应部分的数据到sigaltab工具里面的吧? 还是自己做的存储逻辑保存下来数据再导出来的?
有点不好办啊,要么逐段排查吧,因为你重新加载就OK,那尝试下类似的改变有无效果。比如改变频点后,试着把sigaltab工具关掉重新再打开次去抓取数据看看,
或者不要重新加载,而是通过软件发布个reset信号,把相关代码复位再抓数据。
要是这些法子不管用,那进一步分段排查,通过手工添加debug代码的方式,把整个代码分成几个部分,比如前面的IQ数据产生部分,中间的FIR处理部分,后面出来后流向再抓取数据的部分。分成三个debug_reset信号,分段复位,看怎样能起到效果。
往0频搬移的时候,是怎么搬移的 ? 如果是乘以e^(jw), 搬移完是往单个方向搬移的。如果是单单乘以sin的话,是往两个方向搬移,在-12MHz的信号,可能搬移之后有一路在带外,给滤掉。
学习一下
用signaltap采集数据后保存为tbl 文件,然后用matlab的fopen对.tbl文件进行读取
完全不懂。学习学习。
受教了
