第一次接触FPGA配置的新手工程师经常会问:为什么一块已经烧写好程序的芯片,断电重启后又要重新配置?这就像你花了一晚上写完的文档,第二天打开电脑发现还要重新敲字一样让人崩溃。其实这和Spartan-6的CMOS配置锁存器(CCL)特性有关——它就像一块临时黑板,断电后上面的内容就会消失。
我在2015年做第一个无人机飞控项目时就踩过这个坑。当时以为程序烧进去就万事大吉,结果现场演示时断电重启直接翻车。后来才明白,FPGA配置本质上是个"开机自检+程序装载"的过程,需要外部存储器作为"书包"来存放真正的"课本"(配置文件)。
目前Spartan-6支持五种主流配置方式:
主模式下的FPGA就像个独立创业的CEO,自己掌控全局。我经手过的智能家居主控板就常用这种模式——FPGA主动从Flash读取配置,不需要看任何外设脸色。
硬件连接上有几个关键点:
实测案例:在工业相机项目里,我们用Master Serial模式接XCF04P Flash,配置时间约300ms。后来改用Master SelectMAP x16模式,时间直接缩短到23ms——这就是并行总线的威力。
当你的系统里有MCU时,从模式就派上用场了。去年做的车载娱乐系统就是典型案例:i.MX6处理器通过Slave SelectMAP配置FPGA,还能实时监控配置状态。
硬件设计要注意:
虽然生产环境很少用,但调试阶段离不开JTAG。我的工作台上常备两种配置:
注意:JTAG链上的所有器件IDCODE都要检查,曾经因为一颗CPLD导致整链失效
你以为Serial只是简单的单线传输?其实有这些门道:
电路设计示例:
verilog复制// Platform Flash连接示例
assign FPGA_DIN = FLASH_DOUT;
assign FLASH_CS = FPGA_CS_B;
assign FLASH_CLK = FPGA_CCLK;
在做4K视频处理板时,SelectMAP x16模式帮了大忙。几个关键参数:
现在SPI Flash便宜得像白菜,但要注意:
军工项目最爱BPI,因为:
但要注意封装限制,比如CSG225封装的A22/A23引脚不可用。
根据上百个项目经验,我总结出这个决策矩阵:
| 维度 | 权重 | JTAG | Serial | SelectMAP | SPI | BPI |
|---|---|---|---|---|---|---|
| 引脚占用 | 20% | 4 | 3 | 16+ | 4 | 28+ |
| 配置速度 | 30% | 慢 | 较慢 | 极快 | 快 | 最快 |
| 硬件复杂度 | 25% | 简单 | 简单 | 复杂 | 中等 | 最复杂 |
| 成本 | 25% | 低 | 低 | 高 | 最低 | 最高 |
虽然Spartan-6已不是最新器件,但在成本敏感领域仍有大量应用。最近在做的智能电表项目就用了SPI模式的多镜像方案:上电先运行自检程序,确认正常后再跳转到主程序。这种方案比单纯依赖外部看门狗更可靠。
对于需要远程更新的场景,我推荐使用SelectMAP模式+MCU的方案。通过预留10%的Flash空间作为更新缓冲区,配合SHA-256校验,既安全又灵活。去年帮客户改造的老旧设备就用这方案实现了不拆机升级,省下大笔维护成本。