FPGA总体设计
—硬件相关
FPGA在项目开始阶段需要考虑的设计主要有3大方面:一个是硬件做板相关的FPGA升级电路的设计以及外围IO设计;一个是与软件配合相关的软硬件接口设计;一个是FPGA内部的逻辑功能规划。本文先针对硬件设计相关进行阐述:
升级电路的设计:FPGA的好处就是产品发布后还能进行功能升级以及功能修改,但在客户那里应该没有人会愿意打开机箱进行升级,这时就要设计可靠的升级通路。
1) 板上有配置器件:如果上电后FPGA需要快速配置,这时一般会采用SPI FLASH的配置方式,这时我们就要设计一个电路如何更新SPI FLASH,如果板上有CPU,可以直接写SPI FLASH,这种一般即使写错了,校验后重新写就好了。如果板上没有CPU,那FPGA内部或者配套的CPLD就要预留写FLASH的通路。这个通路实际上就是设计一个用户接口到SPI接口的桥接器,xilinx 7系列以后的器件官方都提供了参考设计,而且支持SPI Flash中存入2个映像,其中一个是升级失败后起机的golden映像(否则升级文件写错,板就变成砖头了),虽然xilinx提供参考设计,但那只是针对SPI FLASH的操作,用户还要设计预留通道与这个控制器对接,比如以太、SPI之类。这时配合的软件就要考虑丢包、错包这些影响,要保证文件都正确写入FLASH。Altera公司应该也是提供类似东西,原理上总是相通的。但quartus能写入的一般都是自己的FLASH,否则就需要外接一个CPLD做配置电路,注意这个CPLD必须Altera自己的,否则不能用他的配置IP。
2) 板上如果没有配置器件,那CPU直接通过被动配置方式进行配置,就是控制programe、status、DIN那几根线,CPU照时序做就好,缺点是CPU必须起来后才能进行配置。
3) 目前还有一种配置就是通过PCIE接口,这个设计在电路上有一定要求,FPGA只需要挂接一个很小的SPI FLASH保存PCIE硬核的设置就好,起机后再把其他的功能映像从CPU端载入,这种一般再新的器件会支持,需要查看手册详细说明,不同器件再PCIE的复位以及其他引脚设计上还有要求。
这种配置一般用在PCIE的加速卡中,因为上电后系统会对PCIE设备进行扫描,一种好的做法就是通过SPI FLASH快速载入PCIE相关的映像,让枚举软件看到FPGA,CPU完全起机后,再把需要的功能配置进去。
硬件相关的第2个设计是外围IO的设计,包括VCCIO的电源连接、IO位置的分配、serdes的连接等。
虽然FPGA号称IO可以支持多种标准电平,但也不是可以随心所欲,特别是用到DDR3这些接口时。一种就是使劲看DS,但个人觉得太慢。好的做法是,建立一个demo工程,例化那些可能用到的外围IO IP,比如DDR,PCIE,以太接口等,把这些examle放在一个代码中不被优化掉,编译通过的话,一般IO分配就没问题了,有问题再看文档修改。编译通过后从工程导出IO配置的CSV文件,xilinx的会比较详细说明每个引脚的连接方式,包括端接等。Altera在工程目录下有个.pin文件,似乎也有类似说明。有了这个文件基本上可以保证做板不会范大错了。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删