1. 为什么需要把程序“固化”到Flash里?
很多刚开始玩FPGA的朋友,尤其是从单片机转过来的,可能会有一个疑问:我写好代码,生成一个.bit文件,用JTAG下载到板子上,功能跑得好好的,为什么还要多此一举,搞什么“固化”呢?这个问题我当年也琢磨了很久,后来在实际项目里踩过坑才彻底明白。
你可以把.bit文件想象成电脑上运行的一个程序。当你用JTAG下载.bit文件到FPGA时,就像你在电脑上双击一个.exe文件,程序开始运行了。但是,只要你一关掉这个程序(或者给FPGA断电),这个程序就没了,下次开机你还得重新双击(重新下载.bit)。FPGA内部的配置存储器是一种叫做SRAM的东西,它的特点就是“掉电失忆”。所以,JTAG下载是一种易失性的配置方式,方便我们调试,但没法让产品独立工作。
而“固化”,就是要把这个程序永久地、非易失地保存起来。我们通常使用板载的一颗Flash芯片(比如SPI Flash)作为“硬盘”。我们把.bit文件转换成一种Flash能识别的格式(也就是.mcs文件),然后烧录进去。以后每次板子上电,FPGA都会自动从这片Flash里读取配置信息,完成自我加载,就像电脑从硬盘启动操作系统一样。这样,你的设计才能真正变成一个独立运行、上电自启的产品。所以,从调试到量产,“固化”是必不可少的一步。
Xilinx的ISE设计套件就提供了完成这一系列操作的工具链,核心就是iMPACT这个工具。整个过程听起来简单,但新手操作时,尤其是在生成.mcs文件和最后烧录的环节,很容易遇到各种报错,其中“ID check failed”堪称经典拦路虎。别担心,跟着下面的步骤走,我会把每个环节的细节和可能遇到的“坑”都讲清楚。
2. 准备工作:认识你的“原料”与“工具”
开始动手前,我们得先搞清楚几样东西,这能避免很多后续的麻烦。
首先是你的.bit文件。这个文件是你整个设计的最终“成品”。它是通过ISE的综合、翻译、映射、布局布线等一系列流程后生成的,包含了你的逻辑设计如何配置FPGA内部每一个可编程单元的具体信息。确保你用来固化的.bit文件是最新且功能正确的版本。我习惯在生成.bit后,先用JTAG模式下载测试一遍,确认功能正常,再拿去固化。
其次是你的开发板上的Flash芯片。这是我们的“硬盘”。你必须知道它的具体型号和存储容量。常见的有Numonyx(美光)、Spansion、Winbond等品牌的SPI Flash。型号通常印在芯片表面,比如N25Q128、S25FL128S。容量单位是Mb(兆比特),比如128Mb、256Mb。这里有个关键点:.bit文件的大小(单位是字节)和Flash容量(单位是比特)需要换算一下。1字节=8比特。一个典型的.bit文件可能有几兆字节(MB),对应几十兆比特(Mb)。你需要在配置时选择容量大于.bit文件大小的Flash型号。
最后是ISE和iMPACT工具。确保你的ISE安装完整,并且iMPACT可以正常启动

4162

被折叠的 条评论
为什么被折叠?



