【原创】实战项目中遇到的问题分析及解决方法汇总

本文汇总了在FPGA实战项目中遇到的各种问题及其解决方法,包括FFT处理异常、时钟频率协调、EEPROM驱动适配、高速模式下数据采样异常、数据位宽计算、FIFO使用注意事项等,涉及复位信号稳定性、硬件电路质量、数据格式转换等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【原创】实战项目中遇到的问题分析及解决方法汇总

实验环境:quartus15.0。

问题1:做FFT处理时,偶尔会出现多做一次FFT的现象,经排查,排除时序错误。(也就是程序时序莫名其妙出现紊乱)
分析:复位信号的不稳定可能会导致程序寄存器出现亚稳态,加上程序本身采用自己设计的PCB板子的复位信号,有可能会是复位信号的原因。
解决方法:不再使用自己设计的PCB板子上的复位信号,采用PLL IP核的locked引脚作为程序的复位信号PLL IP核locked引脚的特殊用法)。

问题2:模块间采用不同的时钟频率,在两个模块通信时要注意时钟的协调。

问题3:写EEPROM:24LC0424LC64的驱动程序时,以为两者驱动通用,结果24LC04的驱动并不能适用于24LC64。
分析:查看手册发现整体时序一样,区别在于两者的地址宽度不一样,24LC04地址宽8bits,24LC64地址宽16bits(其中最高3bits不起作用)。两者驱动不通用的问题就出在位宽。
解决方法:在24LC04的驱动程序中,写地址的状态多写1byte。

问题4:使用ADS7830进行数据采样,驱动已经写好。改AD的IIC协议一共支持三种模式:标准模式(100KHz),快速模式(400KHz),高速模式(3.4MHz)。实际采样时,工作在高速模式下AD会出现采样异常的现象,比如不能采样,或者只有短时间可以采样,过一段时间就不行了。但是后来切换成400KHz后,一切正常。
问题分析:AD工作在3.4MHz的高速模式下,自己设计的电路质量不过关,超高速的模式下会出现异常。这种异常在400KHz的低速模式下可以被接受,因此高速模式下不能正常工作。也就是说驱动程序么有问题,问题出在硬件电路上。

问题5:FPGA内部数据为补码形式,当进行正数和负数计算时,要保证负数变量的位宽 >= 正数变量的位宽,计算结果的位宽 >= 正数变量的位宽。
当负数变量位宽 == 计算结果的位宽 == 正数变量位宽时,计算结果不包含符号位;
当负数变量位宽 == 计算结果的位宽 >= 正数变量位宽时,计算结果包含符号位;
举例:计算5加-10,位宽都用3比特表示,则结果为3’b011,为实际结果的数据位(补码形式),不包含符号位;
当位宽为4比特,则结果为4’b1011,为实际结果值(补码形式),其中最高位为符号位;

问题6:使用FIFO时,一定要记得复位清零,避免下次读出数据为上次计算结果值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值