(原创)FPGA与ARM联合工作时的时序同步问题(FPGA)(ARM)(时序同步)

摘要:

    在一项目中,需要用到ARM与FPGA联合处理,ARM负责人机界口,并将需要并行处理的数据输入到FPGA,因此定义了数据寄存器和控制寄存器,仿真通过后,放到机器上去行,发现很不稳定,经过数日奋战,才发现原来是时序同步的问题。 

介绍:

    系统中,ARM与FPGA通过并行总线来交换数据,在处理之前,ARM会将要处理的数据分多次发送到FPGA里,然后再向控制寄存器发送一条启动命令,FPGA就开始工作。刚开始工作正常,但运行一会后,出现有一次FPGA处理很缓慢,到下一次又能恢复正常;有时候又出现混乱,需要断电重启才恢复。怀疑是某个控制信号时序延迟,又有可能是处理模块的某个环节出现亚稳态。后来经过仔细的分析和分模块调试,仍然未找出原因。

    所有的地方都找遍后,于是怀疑是不是控制寄存器的信号有问题。控制信号寄存器的值是直接通过外部总线写入的,然后将控制信号的每一个控制位,通过组合逻辑与其它各模块的使能信号相连,而且控制寄存器是16位,与外部总线的位宽是一致,也就是说寄存器的值是一次同步更新的,按理说是不会有问题,再说了原来我在CPLD里也这么干过,一直很稳定。后来想,要不要再用一个锁存器将控制寄存器的值用时钟打一遍,试过之后,发现问题解决。

    看来,在时序电路钟,时钟同步,是很有必要的。

结语:

    FPGA的调试相对来说比较复杂,不像单片机那样能用仿真器单步跟踪。写CODE时,一定要严谨,否则出现问题再往回找就很困难了,浪费精力,又浪费时间。

posted on 2012-02-29 11:58  liu_xf  阅读(1760)  评论(2编辑  收藏  举报

导航