微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 怎么验证verilog写的希尔伯特滤波器对不对

怎么验证verilog写的希尔伯特滤波器对不对

时间:10-02 整理:3721RD 点击:
最近在用verilog实现希尔伯特滤波器。该滤波器是一种全通滤波器,只对频率做90度相移,不改变幅度。采用的方法是:将输入数据移位存入和滤波器系数一样多的寄存器里面,然后将寄存器中的值和系数对应相乘,将相乘以后的数据相加,得到输出数据。滤波器为25阶,滤波器系数是从matlab里导出来的,是浮点数,浮点乘法采用先扩大2的n次方,然后右移n位还原的方法。

尝试过给定输入数据为1到25,比较verilog和matlab输出结果,结果差很远,matlab结果是49个数,最大值不超过25,且正负都有,是浮点数,而verilog显示数值很大,最大到900多,全是正数,也是49个值。这个结果不知道是我滤波器的功能写的不对,还是给的数值不对,还是matlab和verilog在处理这种问题上本来就存在的差异。
现小女子存在的问题主要有:
实现滤波器的思路是否有问题?
现在编译通过了,不知道怎么去验证滤波器的功能对不对?
写滤波器有什么更好的方法吗?

恳求各位高手指点指点,十分感谢。

   

我也不懂


不过
不知道
verilog 一般要如何写出
filter?

以前找过
delta sigma的
sincfilter ,

但是看不懂

自己顶

求大神解答

verilog使用补码表示负数,你看看你转换以后是不是和matlab的一样呢?



   我在改代码中有关负数运算的地方,还没完成,谢谢您的建议。

在matlab中将滤波器系数变成定点数,输入正弦信号后,verilog的输出还是正弦吗?

首先你要把matlab的模型搭好。
先是浮点模型,然后在满足精度要求下把模型定点化。
有了定点换模型,再开始搞verilog代码。
verilog代码不对,就对着定点化模型调试比较。

希尔伯特可正交化,你输入实信号,可输出复信号查看频谱,即可验证

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top