1、FIR输出高阻态原因
上一节说错了,不是因为c_address在11-16之间无法识别我将HLS中的阶数改成16阶汸真时地址仍然有几个时钟的高阻态,所以我认为地址出现高阻态的原因是因为在这几个时钟内要计算输出y这一段时间是时延,c_address在此时間内不操作观察HLS内的仿真可以看到,在c_address为高阻态时滤波器系数在此阶段保持上一时刻的值;而在VIVADO中调用BRAM时,若地址为高阻态X则输出為高阻态,这样计算y时就有高阻态数据存在所得输出y为高阻态。
ram_out下列代码段的输出结果是作用:当ram的输出为高阻态时ram_out输出0(即此时滤波系数为0),否则将ram的输出寄存一个时钟后输出这样ram的输出波形就能和HLS仿真中的一致(延时了1个时钟),而不再会因为滤波器系数存在高阻态造成滤波输出为高阻态
记住IP存放的位置,后面调用时去这个位置找
按照这样仿真给定8MHz和12MHz信号,发现按照上述操作滤出的y不再是高阻态将波形调成模拟显示,发现波形不对当给定波形200KHz叠加20MHz信号信号时发现完美滤波,滤波后的波形频率恰好为200KHz实验后发现当低频波形小于1MHz时都能在滤波后获得低频的波形。但是仔细想想后发现不对这样滤出的低频波形属于加性叠加才能用LPF滤出的波形,但是我的叠加方式是乘性叠加是调制,应该积化和差这样看结果是错的!
下篇博客找错误点(其实是数据的时钟问题,没有好好理解FIR的时域公式)
发布了37 篇原创文章 · 获赞 66 · 访问量 8万+