资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
用用 CPUCPU 配置配置 AlteraAltera 公司的公司的 FPGAFPGA一一. . 概概 述述目前很多产品都广泛用了 FPGA,虽然品种不同,但编程方式几乎都一样:利用专用 的 EPROM 对 FPGA 进行配置。专用的 EPROM 价格不便宜,且大不跟上都是一次性 OPT 方式编程。一旦更改 FPGA 设计,代价不小。 为了进一步降低产品的成本和升级成 本,可以考虑利用板上现有 CPU 子系统中空闲的 ROM 空间存放 FPGA 的配置数据,并 由 CPU 模拟专用 EPROM 对 FPGA 进行配置。 本文将以 PowerPC860 和 EP1K30 为例, 讲解如何利用 CPU 来配置 FPGA。CPUCPU 配置配置 FPGAFPGA 的优点的优点与 Configuration EPROM 方式相比本设计有如下优点:1 降低硬件成本省去了 FPGA 专用 EPROM 的成本,而几乎不增加其他成本。以 ALTERA 的 10K 系列为例,板上至少要配一片以上的 EPC1,每片 EPC1 的价格要几十 元,容量 1M 位。提供 1Mb 的存储空间,对于大部分单板来说(如 860 系统的单板) ,是不需要增加硬件的。即使增加 1Mb 存储空间,通用存储器也会比 FPGA 专用 EPRO M 便宜。2 可多次编程FPGA 专用 EPROM 几乎都是 OTP,一旦更换 FPGA 版本,旧版本的 并不便宜的 EPROM 只能丢弃。如果使用本设计对 FPGA 配置,选用可擦除的通用存储 器保存 FPGA 的编程数据,更换 FPGA 版本,无须付出任何硬件代价。这也是降低硬 件成本的一个方面。3 实现真正“现场可编程“-FPGA 的特点就是“现场可编程“,只有使用 CPU 对 FPGA 编程才能体现这一特点。如果设计周全的话,单板上的 FPGA 可以做到在线升级。4 减少生产工序-省去了对“FPGA 专用 EPROM“烧结的工序,对提高生产率,降低 生产成本等均有好处。对于双面再流焊的单板,更可省去手工补焊 DIP 器件的工序 。当然,与 Configuration EPROM 方式相比也有一些需要注意的的地方:1 需要 CPU 提供 5 根 I/O 线-一般来说,这并不困难。对于 MPC860 一类的 CPU 来 说,区区 5 根 I/O 线是不成问题的。即使是某些设计中实在没有多余的 I/O 供配置 使用,也可通过板上的 PLD 扩展。虽然这样做可能会增加成本,但获得的真正“现场 可编程“的功能是非常宝贵的。2 CPU 的 Boot 应不依赖于 FPGA-这在单板设计时需要特别考虑的。由于 CPU 对 FP GA 进行配置所需的资源很少,这一点比较容易做到。设计摘要设计摘要本设计严格按照 FPGA 的 PS 配置流程进行,并在配置过程中始终监测工作状态,在 完善的软件配合下,可纠正如上电次序导致配置不正常等错误。因此,采用此方法 对 FPGA 进行配置,性能将优于 Configuration EPROM 方式。本设计是利用板上现有 CPU 子系统中空闲的 ROM 空间存放 FPGA 的配置数据,并由 CP U 模拟专用 EPROM 对 FPGA 进行配置,以降低硬件成本并实现 FPGA 的在线升级。本设计已在 MPC860 和 EP1K30 环境下完成验证,适用于有 5 个多余 I/O 的 CPU 对 Alt era FPGA 的配置。参考资料参考资料ALTERA:AN-116 Configuring SRAM-Based LUT Devices ALTERA: ACEX 1K Programmable Logic Device Family二. 硬件设计1.配置基本原理配置基本原理RAM-Based 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 与 Configuration EPROM 方式可以兼容(MSEL0、1 设置不变)3 与并行配置相比,误操作的几率小,可靠性高只需利用 CPU 的 5 个 I/O 线,就可按图 2 所指示的时序对 FPGA 进行 PS 方式的配置。2.配置电路的连接配置电路的连接CPU 仅需要利用 5 个 I/O 脚与 FPGA 相连,就实现了 PS 方式的硬件连接,具体信号见下表(信号方向从 CPU侧看):信号名I/O说明Data0Oconfiguration dataDCLKOconfiguration clocknCONFIGOdevice reset (a low to high transition starts the configuration within the device)Conf_doneIStatus bit (gets checked after configuration, will be high if configuration complete)nSTATUSIStatus bit indicating an error during configuration if low图 3 PS 配置单片 FPGA 的硬件连接 图 4 PS 配置多片 FPGA 的硬件连接3.配置操作过程配置操作过程CPU 按下列步骤操作 I/O 口线,即可完成对 FPGA 的配置:1 nCONFIG=“0“、DCLK=“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 个周期的 DCLK,以使 FPGA 完成初始化。注意事项:1 DCLK 时钟频率的上限对不同器件是不一样的,具体限制见下表:型号最高频率ACEX1K、FLEX10KE、APEX20K33MHzFLEX10K16MHzAPEXII、APEX20KE、APEX20KC57MHzMercury50MHz2 步骤 7 中 FPGA 完成初始化所需要的 10 个周期的 DCLK 是针对 ACEX 1K 和 FLEX 10KE 的。如果是 APEX 20K,则需要 40 个周期。3 在配置过程中,如果检测到 nSTATUS 为“0“,表明 FPGA 配置有错误,则应回到步骤 1 重新开始。图 5 操作流程框图4.实现在线升级实现在线升级采用本模块的最大优点是可以实现单板 FPGA 的在线升级。要实现在线升级,单板设计必须考虑以下几个问题:1 CPU 的启动必须不依赖于 FPGA,即 CPU 子系统应在 FPGA 被配置前可独立运行并访问所需资源。CPU 对FPGA 进行配置所需的资源很少,一般来说,仅 RAM 和 BootROM 的访问而已。2 FPGA 配置前(或配置过程中)必须保证控制的设备处于非工作态或不影响其他设备工作的稳定态。3 为了实现 FPGA 的在线升级,存放 FPGA 配置数据的存储器器必须是 CPU 可重写的,且此存储器应是非易失性的,以保证单板断电后,FPGA 数据不需从后台重新获得。具体过程结合图 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 空间当作普通数据存储区,通过后台将新的 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 的场合,应选择所有的 SOF 文件并排好次序。输出文件的格式我们选则二进制的 rbf(Sequential)。 (也可以选择其他格式,如 HEX 等,在 CPU 软件编写上会与本文例子略有区别,关于不同文件格式的区别,在 altera 的 AN116 号文档上有详细解释)图 2 选择相应的输出数据格式在 QuartusII 软件的 file 菜单下,同样可以找到类似菜单进行格式转化。CPU 程序设计程序设计以 MPC860 为例,我们可以将转换完成的 RBF 文件作为二进制文件,直接写到 MPC860 系统的某一 ROM/Flash区域。由于这段数据的起始地址和长度都是已知的,相应的软件编写是很方便的。本设计的 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 区首地址Bootaddr=(UBYTE *)(IMMR-memc_or0 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
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号