完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
你好。
我在这里经历了一个不寻常的情况。 我开发了VHDL的小波变换处理器,基于一系列FIR滤波器,由简单的16位移位寄存器,乘法器和加法器组成。 乘法器由综合工具自动转换为DSP48E切片,设备的其余部分由普通逻辑组成。硬件合成并正确实现,并且通过所有行为,后合成和实现后仿真都没有错误地通过。 。 好吧,这就是问题所在:当我在实际的FPGA中下载并运行系统时,根据放在A / D转换器中的信号幅度,我会发现某种溢出。 整个系统采用16位字开发,但A / D是14位器件。 为了解决这个问题,我对转换器输出进行了信号扩展。 它适用于大约+6000的幅度,但当它接近+ -8192限制(14位)时,输出会严重失真,就像发生溢出一样。 我用ILA监视A / D转换器和处理器的输出,我已经知道A / D数据是完美的,所以处理器内部有问题。 我试着处理有关整数运算的细节,比如我使用Q15表示,在乘法之后执行通常的右移(在加法之前),将部分乘法存储在32位寄存器中,依此类推。 我认为在模拟中会出现一个微不足道的错误,所以我对正在做的事情非常安全。 我试着通过阅读文档来弄清楚发生了什么,但坦率地说,我走到了尽头。 有人能帮帮我吗? 最好的祝愿。 |
|
相关推荐
9个回答
|
|
@homotamultiplication不是导致比特增长的唯一操作,也是增加的。
如果将N个加在一起,则必须在数字的整数部分中容纳log2(N)位增长。 这可能就是你所看到的。 了解这种情况的一种方法是捕获真实的ADC数据,并在与您在硬件运行时观察到的时间范围内类似的时间范围内将其提供给模拟。 假设这不是太长,你应该能够复制问题并在逻辑上解决它。 - 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。 在原帖中查看解决方案 |
|
|
|
@homotamultiplication不是导致比特增长的唯一操作,也是增加的。
如果将N个加在一起,则必须在数字的整数部分中容纳log2(N)位增长。 这可能就是你所看到的。 了解这种情况的一种方法是捕获真实的ADC数据,并在与您在硬件运行时观察到的时间范围内类似的时间范围内将其提供给模拟。 假设这不是太长,你应该能够复制问题并在逻辑上解决它。 - 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。 |
|
|
|
|
|
|
|
你好,drjohnsmith。
“只是检查是adc 2的赞美,并且你正确地扩展了。” 我通过将A / D输出直接连接到D / A输入来验证信号扩展。 “用零填充底部位会更容易吗?” 这是在滤波器处理之后执行的,作为传递结果的方式是D / A转换器。 正如我所提到的,它可以正常工作到大约6000。 “你有没有尝试过模拟中的角落情况?” 对不起,我不知道你的意思是“角落案件”。 你能给点指导吗? 谢谢你的帮助。 |
|
|
|
|
|
|
|
@homota
>>将adc连接到dac以检查符号扩展名 这并不能证明您的代码从adc获取了所需的数据。 它只能证明adc和dac以相同的方式解释数据。 你的代码可能会有不同的解释(比如说adc和dac都使用偏移二进制,它会工作,但你的代码不会) >>比特增长因模拟中出现的增加而增加 这取决于您的数据分布。 您是使用从adc实际捕获的数据进行模拟还是使用合成生成的数据进行模拟? 如果是后者,你显然需要做前者。 (这也有助于解决上面的第一个问题) - 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。 |
|
|
|
角落案例,
最大/最小影响发生的地方。 你用什么价值流模拟? 你在模拟你的建筑吗? 你需要使用随后进行扩展的值注入模拟, 或者你是高级模拟,而不是std逻辑向量。 感觉仿佛你的模拟和现实世界变得不同 仔细检查你的adc和dac期待什么。 您也可以在fpga中使用chipcope来查看不同的地方,看看数字是否正在按照您的预期进行, 在这种情况下,我不会打赌模拟器,它更有可能是你用fpga和模拟不同的值。 |
|
|
|
你好,muzaffer。
你是对的! 我无法在模拟过程中看到问题,因为它只出现在某些特定的数据组合中。 为了看到它,我生成了一个数据向量,其特征类似于我在硬件中看到的情况:Bingo! 之后,我能够确定问题与添加有关,而不是像你提到的那样。 现在我必须发现如何对待它...... 非常感谢你! |
|
|
|
@homota我很高兴你找到了你的问题。
解决方案可能是将添加结果变成大尺寸。 您需要意识到添加N个数字需要在结果的整个部分中使用log2(N)个更多位。 - 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。 |
|
|
|
只有小组成员才能发言,加入小组>>
2134 浏览 7 评论
2589 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2062 浏览 9 评论
3135 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2166 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
399浏览 1评论
1503浏览 1评论
在使用xc5vsx95T时JTAG扫片不成功,测量TDO无信号输出
2163浏览 0评论
495浏览 0评论
1618浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-28 22:30 , Processed in 1.136654 second(s), Total 83, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号