FPGA在线烧程序方法(用MCU直接配置FPGA)

上传人:平*** 文档编号:11913353 上传时间:2017-10-15 格式:DOC 页数:15 大小:285.08KB
返回 下载 相关 举报
FPGA在线烧程序方法(用MCU直接配置FPGA)_第1页
第1页 / 共15页
FPGA在线烧程序方法(用MCU直接配置FPGA)_第2页
第2页 / 共15页
FPGA在线烧程序方法(用MCU直接配置FPGA)_第3页
第3页 / 共15页
FPGA在线烧程序方法(用MCU直接配置FPGA)_第4页
第4页 / 共15页
FPGA在线烧程序方法(用MCU直接配置FPGA)_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《FPGA在线烧程序方法(用MCU直接配置FPGA)》由会员分享,可在线阅读,更多相关《FPGA在线烧程序方法(用MCU直接配置FPGA)(15页珍藏版)》请在金锄头文库上搜索。

1、用 CPU 配置 Altera 公司的 FPGA一. 概 述目前很多产品都广泛用了 FPGA,虽然品种不同,但编程方式几乎都一样:利用专用的 EPROM 对 FPGA 进行配置。专用的 EPROM 价格不便宜,且大不跟上都是一次性 OPT方式编程。一旦更改 FPGA 设计,代价不小。 为了进一步降低产品的成本和升级成本,可以考虑利用板上现有 CPU 子系统中空闲的 ROM 空间存放 FPGA 的配置数据,并由 CPU 模拟专用 EPROM 对 FPGA 进行配置。 本文将以 PowerPC860 和 EP1K30 为例,讲解如何利用 CPU 来配置 FPGA。CPU 配置 FPGA 的优点与

2、Configuration EPROM 方式相比本设计有如下优点:1 降低硬件成本省去了 FPGA 专用 EPROM 的成本,而几乎不增加其他成本。以ALTERA 的 10K 系列为例,板上至少要配一片以上的 EPC1,每片 EPC1 的价格要几十元,容量 1M 位。提供 1Mb 的存储空间,对于大部分单板来说(如 860 系统的单板),是不需要增加硬件的。即使增加 1Mb 存储空间,通用存储器也会比 FPGA 专用 EPROM 便宜。2 可多次编程FPGA 专用 EPROM 几乎都是 OTP,一旦更换 FPGA 版本,旧版本的并不便宜的 EPROM 只能丢弃。如果使用本设计对 FPGA 配置

3、,选用可擦除的通用存储器保存 FPGA 的编程数据,更换 FPGA 版本,无须付出任何硬件代价。这也是降低硬件成本的一个方面。3 实现真正现场可编程-FPGA 的特点就是现场可编程,只有使用 CPU 对 FPGA编程才能体现这一特点。如果设计周全的话,单板上的 FPGA 可以做到在线升级。4 减少生产工序-省去了对FPGA 专用 EPROM烧结的工序,对提高生产率,降低生产成本等均有好处。对于双面再流焊的单板,更可省去手工补焊 DIP 器件的工序。当然,与 Configuration EPROM 方式相比也有一些需要注意的的地方:1 需要 CPU 提供 5 根 I/O 线-一般来说,这并不困难

4、。对于 MPC860 一类的 CPU 来说,区区 5 根 I/O 线是不成问题的。即使是某些设计中实在没有多余的 I/O 供配置使用,也可通过板上的 PLD 扩展。虽然这样做可能会增加成本,但获得的真正现场可编程的功能是非常宝贵的。2 CPU 的 Boot 应不依赖于 FPGA-这在单板设计时需要特别考虑的。由于 CPU 对 FPGA 进行配置所需的资源很少,这一点比较容易做到。设计摘要本设计严格按照 FPGA 的 PS 配置流程进行,并在配置过程中始终监测工作状态,在完善的软件配合下,可纠正如上电次序导致配置不正常等错误。因此,采用此方法对 FPGA 进行配置,性能将优于 Configura

5、tion EPROM 方式。本设计是利用板上现有 CPU 子系统中空闲的 ROM 空间存放 FPGA 的配置数据,并由 CPU 模拟专用 EPROM 对 FPGA 进行配置,以降低硬件成本并实现 FPGA 的在线升级。本设计已在 MPC860 和 EP1K30 环境下完成验证,适用于有 5 个多余 I/O 的 CPU 对 Altera FPGA 的配置。参考资料ALTERA:AN-116 Configuring SRAM-Based LUT DevicesALTERA: ACEX 1K Programmable Logic Device Family二. 硬件设计1.配置基本原理RAM-Bas

6、ed FPGA 由于 SRAM 工艺的特点,掉电后数据会消失。因此,每次系统上电后,均需对 FPGA 进行配置。对于 Altera 的 FPGA,配置方法可分为:专用的 EPROM (Configuration EPROM)、PS(Passive serial 无源串行)、PPS(Passive parallel synchronous 无源同步并行)、PPA(Passive parallel asynchronous 无源异步并行)、JTAG(不是所有器件都支持)。本设计采用 PS 方式对 FPGA 进行配置,是基于如下几个方面的考虑:1 PS 方式连线最简单2 与 Configuratio

7、n EPROM 方式可以兼容(MSEL0 、1 设置不变)3 与并行配置相比,误操作的几率小,可靠性高只需利用 CPU 的 5 个 I/O 线,就可按图 2 所指示的时序对 FPGA 进行 PS 方式的配置。2.配置电路的连接CPU 仅需要利用 5 个 I/O 脚与 FPGA 相连,就实现了 PS 方式的硬件连接,具体信号见下表(信号方向从 CPU侧看):信号名 I/O 说明Data0 O configuration dataDCLK O configuration clocknCONFIG O device reset (a low to high transition starts the

8、 configuration within the device)Conf_done I Status bit (gets checked after configuration, will be high if configuration complete)nSTATUS I Status bit indicating an error during configuration if low图 3 PS 配置单片 FPGA 的硬件连接 图 4 PS 配置多片 FPGA 的硬件连接3.配置操作过程CPU 按下列步骤操作 I/O 口线,即可完成对 FPGA 的配置:1 nCONFIG=0、DCL

9、K=0 ,保持 2S 以上。2 检测 nSTATUS,如果为0,表明 FPGA 已响应配置要求,可开始进行配置。否则报错。正常情况下,nCONFIG=0后 1S 内 nSTATUS 将为0 。3 nCONFIG=1,并等待 5S。4 Data0 上放置数据(LSB first),DCLK=1,延时。5 DCLK=0,并检测 nSTATUS,若为0,则报错并重新开始。6 准备下一位数据,并重复执行步骤 4、5,直到所有数据送出为止。7 此时 Conf_done 应变成1,表明 FPGA 的配置已完成。如果所有数据送出后,Conf_done 不为1 ,必须重新配置(从步骤 1 开始)。8 配置完成

10、后,再送出 10 个周期的 DCLK,以使 FPGA 完成初始化。注意事项:1 DCLK 时钟频率的上限对不同器件是不一样的,具体限制见下表:型号 最高频率ACEX1K、FLEX10KE、APEX20K 33MHzFLEX10K 16MHzAPEXII、APEX20KE、APEX20KC 57MHzMercury 50MHz2 步骤 7 中 FPGA 完成初始化所需要的 10 个周期的 DCLK 是针对 ACEX 1K 和 FLEX 10KE 的。如果是 APEX 20K,则需要 40 个周期。3 在配置过程中,如果检测到 nSTATUS 为0,表明 FPGA 配置有错误,则应回到步骤 1 重

11、新开始。 图 5 操作流程框图4.实现在线升级采用本模块的最大优点是可以实现单板 FPGA 的在线升级。要实现在线升级,单板设计必须考虑以下几个问题:1 CPU 的启动必须不依赖于 FPGA,即 CPU 子系统应在 FPGA 被配置前可独立运行并访问所需资源。CPU 对FPGA 进行配置所需的资源很少,一般来说,仅 RAM 和 BootROM 的访问而已。2 FPGA 配置前(或配置过程中)必须保证控制的设备处于非工作态或不影响其他设备工作的稳定态。3 为了实现 FPGA 的在线升级,存放 FPGA 配置数据的存储器器必须是 CPU 可重写的,且此存储器应是非易失性的,以保证单板断电后,FPG

12、A 数据不需从后台重新获得。具体过程结合图 6 的实例,对 FPGA 在线升级作一具体描述。图 6 FPGA 在线升级1 使用编译和连接工具,将 FPGA 的第一个版本与 MPC860 的工作程序连接在一起,分别占用地址为 0x70000-0x7FFFF 和 0x00000-0x6FFFF 的存储空间。2 单板启动时,MPC860 自动将 0x70000-0x7FFFF 的数据下载到 FPGA 中,完成 FPGA 配置。3 当 FPGA 需升级时,将新的 RBF 配置文件放在后台计算机中。4 MPC860 把 BOOTROM 的 0x70000-0x7FFFF 空间当作普通数据存储区,通过后台

13、将新的 RBF 配置文件放在0x70000-0x7FFFF 中。5 MPC860 调用 BOOTROM 中的 FPGA 配置子程序,对 FPGA 从新下载数据,完成 FPGA 升级。以 MPC860 和 Altera EP1K30 为例,电原理图如下:图 7 电原理图软件编程文件格式的转换MAX+plusII 或 QuartusII 生成的 SOF 或 POF 文件不能直接用于 CPU 配置 FPGA 中,需要进行数据转换才能得到软件可用的配置数据。在 MaxplusII 中的具体步骤如下:1 进入数据转换对话框图 1 进入数据转换对话框2.选择需要转换的 SOF 文件,对于配置多个 FPGA

14、 的场合,应选择所有的 SOF 文件并排好次序。输出文件的格式我们选则二进制的 rbf(Sequential)。 (也可以选择其他格式,如 HEX 等,在 CPU 软件编写上会与本文例子略有区别,关于不同文件格式的区别,在 altera 的 AN116 号文档上有详细解释)图 2 选择相应的输出数据格式在 QuartusII 软件的 file 菜单下,同样可以找到类似菜单进行格式转化。CPU 程序设计以 MPC860 为例,我们可以将转换完成的 RBF 文件作为二进制文件,直接写到 MPC860 系统的某一 ROM/Flash区域。由于这段数据的起始地址和长度都是已知的,相应的软件编写是很方便

15、的。本设计的 CPU 源程序void InitPORT(void) / 初始化 PB 口相应位:/ PB24-输出,PB25-输入,PB26-输出,PB27- 输入,PB28-输出IMMR-pip_pbpar=0x00000000;IMMR-pip_pbdir=0xFFFFF5AF;IMMR-pip_pbodr=0x00000000;IMMR-pip_pbdat=0xffffff57;UBYTE Fpga_DownLoad(void) / FPGA 配置UBYTE *Bootaddr;UWORD CountNum=0x0;UBYTE FpgaBuffer, i;/ 获得 Boot 区首地址Bo

16、otaddr=(UBYTE *)(IMMR-memc_or0 & IMMR-memc_br0 & 0xFFFF8000);Set_nCONFIG(0); / nCONFIG=0,使 FPGA 进入配置状态Set_DCLK(0);DELAY5us();if (Read_nSTATUS() = 1) / 检测 nSTATUS,如果为0 ,表明 FPGA 已响应配置要求,可开始进行配置。否则报错Err_LED(1);return 0;Set_nCONFIG(1);DELAY5us();/ 开始输出配置数据:while(CountNum 1,使 FPGA 读入数据FpgaBuffer = 1; / 准备下一位数据if (Read_nSTATUS() = 0) / 检测 nSTATUS,如果为0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号