FPGA中怎么实现希尔伯特Hilbert变换?
FPGA中怎么实现希尔伯特Hilbert变换? 那就好好钻研 数字信号处理吧 宽带信号还是窄带信号?窄带信号的话用复数混频器混到零频,然后滤掉镜像就好了。宽带信号的话需要经过一个Hilbert滤波器得到虚部信号,源信号作为实部组合成复数就OK了。Hilbert滤波器可以用FIR结构来近似,怎么获取FIR系数通常的数字信号处理书籍都有说的。 at90s 发表于 2014-3-9 19:28宽带信号还是窄带信号?窄带信号的话用复数混频器混到零频,然后滤掉镜像就好了。宽带信号的话需要经过一个 ...
带宽大约10MHz吧,用xilinx的FIR IP核可以吗? 本帖最后由 haley 于 2014-3-9 20:42 编辑
希尔伯特变换是通过FIR滤波器实现的,抽头系数可以通过matlab计算。我给你做了一个仿真。 用Xilinx的FIR核当然可以。
我不知道你的应用场景,也就不清楚哪个方案是合适的。在实际工作中(无线通信),我碰到的基本都是窄带方案,虽然LTE信号的带宽达到20MHz. haley 发表于 2014-3-9 20:41
希尔伯特变换是通过FIR滤波器实现的,抽头系数可以通过matlab计算。我给你做了一个仿真。 ...
十分感谢! 确实靠滤波器系数,FPGA实现方式与FIR一样,系数不同,输出信号峰点对应原始信号的的斜率极值 haley 发表于 2014-3-9 20:41
希尔伯特变换是通过FIR滤波器实现的,抽头系数可以通过matlab计算。我给你做了一个仿真。 ...
请问你是怎么用matlab实现这种原理图式的仿真的? 传你一个小巧数字滤波器设计工具,有希尔伯特上传失败,你上网找找 Numerix-DSP.Digital.Filter.Plus.v2.2.rar NJ8888 发表于 2014-3-21 10:30
传你一个小巧数字滤波器设计工具,有希尔伯特上传失败,你上网找找 Numerix-DSP.Digital.Filter.Plus.v2 ...
恩恩,谢谢啦 本帖最后由 NJ8888 于 2014-3-21 22:07 编辑
根据我目前理解,I信号是经过延时的原始信号(因为希尔伯特计算导致输出滞后,要补偿,比如你是32阶的希尔伯特,那I就要把原始信号滞后32个时钟),Q信号就是希尔伯特输出 可以的,看Xilinx IP核FIR_Compiler的数据手册,ds795; Mortimer 发表于 2014-3-21 09:26
请问你是怎么用matlab实现这种原理图式的仿真的?
用的是matlab中的simulink呀,我把上面的仿真文件放在附件中了。另外要说的是,FIR滤波器是56阶的,通过FIR的是Q信号,直接延迟28的是I信号,是FIR阶数的一半。 NJ8888 发表于 2014-3-21 22:05
根据我目前理解,I信号是经过延时的原始信号(因为希尔伯特计算导致输出滞后,要补偿,比如你是32阶的希尔 ...
因为要保证是因果系统,所有的响应都是大于等于0的时间出现的,不能有负的时间。所以在FIR实现希尔伯特变换的时候把冲击响应(就是FIR的抽头系数)右移阶数的一半,所以I信号也是要延迟阶数的一半,不是32阶需要延迟32采样时间,而是16。 haley 发表于 2014-3-26 13:56
因为要保证是因果系统,所有的响应都是大于等于0的时间出现的,不能有负的时间。所以在FIR实现希尔伯特变 ...
还有个问题想问一下你,我自己做的为什么希尔伯特滤波器的输出幅度会改变啊? 而且改变信号发生器的sample time后幅度就会改变,不知道是为什么?sample time 的值对整个输出有什么影响吗?
非常感谢你耐心的回答!
你看滤波器带内是有波动的,所以不同频率幅度不同 Mortimer 发表于 2014-3-26 14:40
还有个问题想问一下你,我自己做的为什么希尔伯特滤波器的输出幅度会改变啊? 而且改变信号发生器的sampl ...
这个和数字域的归一化频率有关系,因为有采样定理限制,所以信号频率的最大值对应0.5*Fs,归一化频率以0.5*Fs为1。你可以看一下你生成的FIR滤波器的幅频响应,是0.05到0.95之间的幅度是比较平坦的。而你的采样频率是50k,1k/25k=0.04,只要降低你的采样率就可以了。同时你的滤波器的阶数比较小,频带内波动比较大,可以增加阶数。 haley 发表于 2014-3-26 15:16
这个和数字域的归一化频率有关系,因为有采样定理限制,所以信号频率的最大值对应0.5*Fs,归一化频率以0. ...
恩恩,看来是我的理论功底不够扎实啊~~
非常感谢你耐心的回答了! NJ8888 发表于 2014-3-26 15:04
你看滤波器带内是有波动的,所以不同频率幅度不同
恩恩,跟这个有关系,谢谢啦 Mortimer 发表于 2014-3-27 14:36
恩恩,看来是我的理论功底不够扎实啊~~
非常感谢你耐心的回答了!
不客气,大家共同学习交流! haley 发表于 2014-3-26 15:16
这个和数字域的归一化频率有关系,因为有采样定理限制,所以信号频率的最大值对应0.5*Fs,归一化频率以0. ...
不好意思,我还有一个问题想请教一下你,我想在simulink中看信号的频谱,为什么会出现下图这样的问题?我该怎么解决?实在是拜托了
本帖最后由 haley 于 2014-3-31 17:19 编辑
Mortimer 发表于 2014-3-31 10:27
不好意思,我还有一个问题想请教一下你,我想在simulink中看信号的频谱,为什么会出现下图这样的问题?我 ...
我给你做了一个仿真,加上了解析信号的生成,可以看到在当前频率下,镜像频率的抑制比是多少。 haley 发表于 2014-3-31 17:17
我给你做了一个仿真,加上了解析信号的生成,可以看到在当前频率下,镜像频率的抑制比是多少。 ...
非常感谢了!我能不能问一下你现在是工作了还是在上学? Mortimer 发表于 2014-4-1 10:21
非常感谢了!我能不能问一下你现在是工作了还是在上学?
工作了呀,我matlab只会点皮毛,论坛里高手很多,你用xilinx的FPGA做这个,我也挺有兴趣的。 haley 发表于 2014-4-1 13:12
工作了呀,我matlab只会点皮毛,论坛里高手很多,你用xilinx的FPGA做这个,我也挺有兴趣的。 ...
哦,我今年大四了,多多指教啊! 楼主可不可以用PLL? ctqvsly 发表于 2014-4-2 08:40
楼主可不可以用PLL?
PLL只能对单一频率进行移相,对单一频率移相都是很好办的事情,如果信号中包含多个频率,PLL锁定哪一个频率呢?你说的更像是FPGA中的时钟信号的处理方法,但是不是信号处理的方法。 Mortimer 发表于 2014-4-1 15:12
哦,我今年大四了,多多指教啊!
你好,实在是不好意思,我还有一个问题想问一下你。我把现在的仿真传上来你可不可以帮我看一下,我昨天看了一天也不知道是哪里出了问题。
我做希尔伯特的目的是为了实现多普勒频移,多普勒频移的理论推导后是只存在一个尖峰的(一个频率),但是我做出来却是两个尖峰,貌似是上下变频了。不知道为什么?
这是最后一个问题了,因为我现在是初学者,好多问题找不出来,但是毕设老师一直在催,所以想找你帮忙~~实在是非常感谢了! haley 发表于 2014-4-1 13:12
工作了呀,我matlab只会点皮毛,论坛里高手很多,你用xilinx的FPGA做这个,我也挺有兴趣的。 ...
你好,实在是不好意思,我还有一个问题想问一下你。我把现在的仿真传上来你可不可以帮我看一下,我昨天看了一天也不知道是哪里出了问题。
我做希尔伯特的目的是为了实现多普勒频移,多普勒频移的理论推导后是只存在一个尖峰的(一个频率),但是我做出来却是两个尖峰,貌似是上下变频了。不知道为什么?
这是最后一个问题了,因为我现在是初学者,好多问题找不出来,但是毕设老师一直在催,所以想找你帮忙~~实在是非常感谢了! Mortimer 发表于 2014-4-2 09:36
你好,实在是不好意思,我还有一个问题想问一下你。我把现在的仿真传上来你可不可以帮我看一下,我昨天看 ...
原来你是要做SSB混频的,我给你做的仿真在附件中,因为生成的信号是实信号不是解析信号,所以在FFT后会有一个对称的负频率,只要在FFT显示里面只显示0~Fs/2就好了。正常情况下上边带和下边带幅度差别是很大的,应该在50db以上。你的仿真结果确实有问题。 haley 发表于 2014-4-2 10:57
原来你是要做SSB混频的,我给你做的仿真在附件中,因为生成的信号是实信号不是解析信号,所以在FFT后会有 ...
我感觉理论上应该是不存在上变频或者下变频的啊,计算结果是只会在一个频点上的,不知道为什么上下变频都存在?
还有一个问题就是你刚才给我的那个DSP I/Q发出的信号貌似不是正弦波,是三角波啊~~ 本帖最后由 haley 于 2014-4-2 11:32 编辑
Mortimer 发表于 2014-4-2 11:13
我感觉理论上应该是不存在上变频或者下变频的啊,计算结果是只会在一个频点上的,不知道为什么上下变 ...
根据采样定律,采样频率大于信号频率的两倍,一个正弦周期采样两个点就可以了,你认为采样两个点可以画出一个你认为的完整正弦波吗?不要凭感觉办事,你看到正弦波画得很漂亮的波形的时候,采样频率已经远大于信号频率了。你在之前的仿真都是犯了这样的错误,采样频率远大于信号频率,导致归一化频率以后,超出了滤波器的带宽。 本帖最后由 haley 于 2014-4-2 11:43 编辑
Mortimer 发表于 2014-4-2 11:13
我感觉理论上应该是不存在上变频或者下变频的啊,计算结果是只会在一个频点上的,不知道为什么上下变 ...
实际中的希尔伯特变换和理想情况比是有误差的,如果你FIR滤波器是无限长,能够把希尔伯特变换的全波冲击响应都实现了就可以了。如果幅度和相位有误差,哪怕只是0.1度,都会导致边带抑制不是无穷大。 haley 发表于 2014-4-2 09:29
PLL只能对单一频率进行移相,对单一频率移相都是很好办的事情,如果信号中包含多个频率,PLL锁定哪一个频 ...
嗯,多频点只能用第三类线性相位FIR滤波器{:sweat:} haley 发表于 2014-4-2 09:29
PLL只能对单一频率进行移相,对单一频率移相都是很好办的事情,如果信号中包含多个频率,PLL锁定哪一个频 ...
嗯,多频点只能用第三类线性相位FIR滤波器{:sweat:} haley 发表于 2014-4-2 11:39
实际中的希尔伯特变换和理想情况比是有误差的,如果你FIR滤波器是无限长,能够把希尔伯特变换的全波冲击 ...
哦哦,明白了,非常感谢!
页:
[1]