[size=11.818181991577148px]FPGA开发中,遇到的最多的就是异步时钟域了。 [size=11.818181991577148px]检查初学者的代码,发现最多的就是这类问题,异步时钟域同步化是FPGA设计者最基本的技能。 [size=11.818181991577148px]我发现很多初学者没有进行同步化处理,设计的案例也能工作。 [size=11.818181991577148px]但是工作时间长的话,就会出现不稳定的现象,或者瞬间的不稳定从外面现象上没有表现出来,比如CPU通过FPGA读取外部存储器(存储的为图像数据或者模拟量参数),某一瞬间读取数据错误,但是CPU判断不出来,还是认为正确。 [size=11.818181991577148px]还有一种情况,就是高低温试验,FPGA设计不规范的话做这种试验很难通过的,我见过很多试验出问题,回去查了他们的代码,都是设计不注意细节引起的。 [size=11.818181991577148px]我自己的一个负面案例是:以前做过一个64K的电信号转换为2M的光模块信号,简单吧,最高速率才2M,2M是64的32倍;但就是这个程序,我用2M时钟首先监测64K信号,将其中的有效数据提出出来,然后用2M的速度发送出去;程序调试好之后,基本通讯十几秒肯定就会出错,最后发现是对输入的64K信号没有进行2M同步化,同步两拍后,连续工作几天都没有出错。 [size=11.818181991577148px]请慎重对待异步时钟域的问题!
|