首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA与ARM联合工作时的时序同步问题

FPGA与ARM联合工作时的时序同步问题

在一项目中,需要用到ARM与FPGA联合处理,ARM负责人机界口,并将需要并行处理的数据输入到FPGA,因此定义了数据寄存器和控制寄存器,仿真通过后,放到机器上去行,发现很不稳定,经过数日奋战,才发现原来是时序同步的问题。    系统中,ARM与FPGA通过并行总线来交换数据,在处理之前,ARM会将要处理的数据分多次发送到FPGA里,然后再向控制寄存器发送一条启动命令,FPGA就开始工作。刚开始工作正常,但运行一会后,出现有一次FPGA处理很缓慢,到下一次又能恢复正常;有时候又出现混乱,需要断电重启才恢复。怀疑是某个控制信号时序延迟,又有可能是处理模块的某个环节出现亚稳态。后来经过仔细的分析和分模块调试,仍然未找出原因。     所有的地方都找遍后,于是怀疑是不是控制寄存器的信号有问题。控制信号寄存器的值是直接通过外部总线写入的,然后将控制信号的每一个控制位,通过组合逻辑与其它各模块的使能信号相连,而且控制寄存器是16位,与外部总线的位宽是一致,也就是说寄存器的值是一次同步更新的,按理说是不会有问题,再说了原来我在CPLD里也这么干过,一直很稳定。后来想,要不要再用一个锁存器将控制寄存器的值用时钟打一遍,试过之后,发现问题解决。     看来,在时序电路钟,时钟同步,是很有必要的结语:     FPGA的调试相对来说比较复杂,不像单片机那样能用仿真器单步跟踪。写CODE时,一定要严谨,否则出现问题再往回找就很困难了,浪费精力,又浪费时间。
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表