FPGA调试技巧01_错误类型及定位思路作者:潘文明众所周知,软件如ARM、DSP、单片机等是按照代码的顺序,一步一步串行执行的,通过使用断点、打印LOG等方法,顺序地检查每步的执行结果,就能找到问题,因此定位起来非常简单。而FPGA代码是并行的,意味着在同一时刻,多个ALWAYS同时执行,需要检查每时每刻所有的信号的正确性。如何从众多的信号(几千几万几十万个信号)、以及众多的时钟周期中,找到出现
在上一篇文章中,我们概括地讲述了FPGA的一些学习误区。本文我们将FPGA的关键知识串联起来,系统地介绍各个知识点所处的层次和位置,为后面几仿篇文章的详细讲解做好铺垫。
FPGA知识大串讲是一个系列文章,先概括性地将FPGA的知识点串联起来,使读者对FPGA有一个整体的认识,为后续的各项学习打下坚实基础。 本系列文章由6篇文章组成。第一篇文章阐述大部分同学的学习误区。第二篇文章,介绍了FPGA所有的知识点,并将其串联起来。剩下的4篇文章,是对所有知识的分别概述,其内容包括:组合逻辑、D触发器、时序逻辑和FPGA 时序。
本文以一个案例的形式来介绍lattice DDR3 IP核的生成及调用过程,同时介绍各个接口信号的功能作用
MP5650核心板采用XILINX公司Kintex-7系列的XC7K325T-2FFG900I作为主控制器,核心板采用4个0.5mm间距120Pin 镀金连接器与母板连接,核心板四个脚放置了4个3.5mm固定孔,此孔可以与底板通过螺丝紧固,确保了在强烈震动的环境下稳定运行。 这款MP5650核心板能够方便用户对核心板的二次开发利用。核心板使用XILINX的 KINTEX-7芯片的解决方案,在FPGA 芯片的HP 端口上挂载了4片DDR3存储芯片,每片 DDR3 容量高达4Gb,共16Gb,每片16bit组成64bit 位的数据位宽。1片128Mb 的QSPI FLASH 芯片用来静态存储FPGA 芯片的配置文件或者其它用户数据。
时序约束是一个非常重要的内容,而且内容比较多,比较杂。因此,很多读者对于怎么进行约束,约束的步骤过程有哪些等,不是很清楚。明德扬根据以往项目的经验,把时序约束的步骤,概括分成四大步,分别是时钟的约束、input delays的约束、output delays的约束和时序例外。
最近公司承接了一个车载视频拼接的项目,该项目使用到了LVDS高速接口和DDR3接口,摄像头采集的视频图像数据需要先存入DDR3中然后与通过LVDS传输的主机视频数据进行拼接输出,最终在屏幕上显示画中画的效果。在调试DDR3的过程中,我有一些使用心得,特分享给大家。
FIFO是FPGA项目中使用最多的IP核,一个项目使用几个,甚至是几十个FIFO都是很正常的。通常情况下,每个FIFO的参数,特别是位宽和深度,是不同的。如果按照通常做法,每种位宽和参数,都要打开FIFO IP核界面、命名(命名不好不好分辨需要的FIFO)、设置参数、生成并编译IP核,工作量可以想象出来是非常多的。
光纤项目是明德扬承接自某研究所的项目。该项目功能是接收4路光纤数据,经过内部DDR3缓存后,通过PCIE接口上送到电脑保存。其中光纤采集到数据后,需要做一定的算法处理,该算法处理由客户实现,明德扬保留易修改、易插入的模块接口。 该项目实质就是一个数据采集卡功能:采集到高速数据并保存到电脑本地,具有速率高、数据量大的特点。采集卡项目均可参考此方案实现。 该项目使用到光纤接口,可以学习到光纤IP核的应用。 本项目可以通过PCIE,实现对FPGA的配置。特别是实现了可分别配置和读取1路接收FPGA、4路发送FPGA寄存器的功能。关于上位机,如DSP、ARM、单片机、电脑 ,如何与FPGA通信交互的,可以参考此方案。(在优化版本中,也提供了通过串口配置的方案,即将PCIE配置改为用串口配置。) PCIE部分不作讲解,要注意。 该项目有对应的视频专题课,并提供代码学习。
明德扬(MDY)在某个XILINX项目中,偶然性出现开机后通信出错的情形,具体表现为反复开机测试400次后,约有1~2次通信异常,数据发不出去。经过定位,是某个FIFO出现异常,时钟正常、复位无效、写使能有效的情况,空信号empty一直为1,即一直保持为空的问题。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号