官方淘宝店 易迪拓培训 旧站入口
首页 > 无线通信 > 通信技术学习讨论 > 求助定点仿真需要考虑的问题

求助定点仿真需要考虑的问题

12-16
前段时间用m文件完成了gardner定时算法的浮点运算仿真,已经成功,想着利用国庆几天假期完成fpga设计,结果,碰到了以下问题:
想先通过matlab的定点仿真再编写verilog程序,结果这个定点仿真里面,取整对环路工作影响真的是非常大,请问大虾这个问题该怎么解决,或者说如何来做好从浮点仿真到定点仿真的转化,因为存在反馈回路,真是郁闷阿,谢谢先。

matlab应该能仿真出来定点导致的误差有多大
实现的位数尽可能宽,...
几天时间恐怕搞不定吧,浮点仿真->定点仿真->verilog->调试。。。

大虾,需要考虑哪些问题,今天一天就发现输入有影响,环路参数有影响,反馈值有影响,然后会恶性循环下去,是不是每个模块都要考虑,尤其是前一个模块的输出到下一个模块的输入之前要做一定的处理?
崩溃了,一天没什么收获,除了一堆问题。

我没做过这个算法,完全不懂
你先用个25位的定点试试,我的经验是25位效果接近浮点
最后下一级比上一级多1bit吧

好的,谢谢!

你直接用matlab生成verilog代码?

不是,还没编呢,我先看看定点运算是不是正确,再编拉。。。。

很牛啦,把仿真,实现全搞定

没有呢,只是完成了定点仿真,下一步就是用verilog 实现,调试,痛苦还在后头啊。。。。
不过今天总算小有收获。。。
真的要很细心,每一小的差错都可能出不来结果。

用Simulink仿真,每个block可以指定fix的位宽的,看对性能多大的影响,而且
simulink可以cosimulation HDL的,可以单个block的HDL放到simulink系统里面跑(modelsim)。新版本可以直接生成HDL的,没用过不知道效率如何。不过那个滤波器的FDA可以直接生成可综合的HDL,可读性和代码效率还过得去。
【 在 hzhiwu (hzhiwu) 的大作中提到: 】
: : :
: 前段时间用m文件完成了gardner定时算法的浮点运算仿真,已经成功,想着利用国庆几天假期完成fpga设计,结果,碰到了以下问题:
: 想先通过matlab的定点仿真再编写verilog程序,结果这个定点仿真里面,取整对环路工作影响真的是非常大,请问大虾这个问题该怎么解决,或者说如何来做好从浮点仿真到定点仿真的转化,因为存在反馈回路,真是郁闷阿,谢谢先。
:
: --
:
※ 来源:·水木社区 newsmth.net·[FROM: 221.216.173]

谢谢!
没用过,准备直接写代码,simulink的东西,如果不是很熟,有些模块很难控制,所以目前还不准备用它来生成代码。

首先在浮点情况下,测量各个功能模块的动态范围(最大值与最小值)
然后据此确定各个功能模块大致需要的数据位数,
这时候数据的表示可以有两种选择,一种是仍旧分为基数和指数表示,两部分的位数根据
动态范围而定,一种是直接用所需位数的整型数.
如果数据的表示用了后者,需要你自己处理好各个模块接口处的数据缩放,
并记住各个模块内整数的原始大小与实际大小的换算关系.

谢谢大牛!早知道我昨天就该早点发贴求助了。
我是采用你说的那种方法,昨天调出来了,采用你说的后者的思路。

我只是说了个一般性做法,呵呵.
你的实战经验最宝贵了. 能否和大家分享一下啊, 开始是哪里有问题?后来怎么
解决的阿.

开始是全都有问题,因为不收敛。主要是存在反馈环路,只要一个模块处理不好,就玩了。
然后就按照你刚说的那种思路,首先定义好匹配滤波器的抽头系数的放大倍数,环路滤波器的放大倍数,nco的放大倍数,然后保证每个模块的输入仅比原来增加最开始输入抽样值的放大倍数作相应的归一化,nco和环路滤波器的输出可以看成一个模块就可以了,中间的连接可以不作处理,因为nco的放大倍数是由环路参数的放大倍数和抽头系数的放大倍数共同决定的。这样就保证可以把定时恢复模块看成一个黑匣子,仅仅是输入和输出放大了相同的倍数,其他的都不影响。
其实说白了,就是要保证好前后模块之间的接口参数放大的倍数要一致。
好像也没说清楚。。。。。

Top