文章分类

当前位置:首页>技术文章>利用P89C61X2单片机来配置FPGA

利用P89C61X2单片机来配置FPGA

Altera 公司生产的具有 ICR 功能的 APEX、FLEX10K、ACEX、FLEX6000 等系列器件可以使用 6 种模式进行配置,即使用专用 EPC 配置器件、被动串行(PS)方式、被动并行同步(PPS)方式、被动并行异步(PPA)方式、被动串行异步(PSA)方式及边界扫描(JTAG)方式。这些模式由 FPGA 上的两个模式选择引脚 MSEL1 和 MSEL0 上的电平来决定。EPC 配置器件有一次性可编程和可擦写编程型两种。

一次性可编程型芯片不适于调试、修改及产品升级,利用率不高;可擦除编程型芯片价格昂贵,容量有限。使用 PS、PPS、PPA 方式配置时,配置文件要以二进制形式保存在系统 ROM 中,然后通过微处理器将配置数据送进 FPGA 中。PS 和 PPS 所用的配置时间几乎相同,而 PS 的接口方式比较简单。PPA 方式与 PPS 不一样的地方是在进行串行化处理时不需要配置外部时钟的驱动,但接口更复杂。边界扫描方式在现场采用较少,通常用在计算机通过 JTAG 口实现一次性编程数据加载的调试中。

以上 6 种模式中被动串行(PS)方式下 FPGA 与配置电路的互连最简单,对配置时钟的最低频率也没有限制,因此常采用 PS 模式。本文采用单片机 P89C61X2 以 PS 模式对 Altera 公司的 FLEX10K 系列芯片 EPF10K20 进行配置,软件采用 MAX+PLUS II。1 P89C61X2 的功能特点 P89C61X2 器件采用高性能的静态 80C51 设计,使用先进的 CMOS 工艺制造,并包含非易失性 Flash 的程序存储器,可通过并行编程或在系统编程(ISP)的方法进行编程。

支持 6 时钟和 12 时钟模式,相应地有 2 种速度范围:6 时钟模式时,0~20 MHz;12 时钟模式时,0~33 MHz。P89C61X2 包含 64 KB 的 Flast 程序存储器、1 024 字节 RAM、32 个 I/O 口、3 个 16 位定时/计数器、6 中断源-4 中断优先级-嵌套的中断结构、1 个增强型 UART、片内振荡器和时钟电路等。此外,器件的静态设计使其具有非常宽的频率范围,甚至可以降低至零。P89C61X2 具有两种软件可选的节电模式--空闲模式和掉电模式。

空闲模式时冻结 CPU 的运行,但允许 RAM、定时器串口和中断系统继续保持其功能;掉电模式时保持 RAM 的内容,但冻结振荡器,使其他片内功能都停止工作。由于是静态设计,时钟停止也不会使用户数据丢失。操作可从时钟停止点恢复运行。P89C61X2 的 Flash 存储器增加了 EPROM 所没有的电可擦除和编程特性,可以进行芯片擦除和块擦除。芯片擦除操作是将整个程序存储区都擦除;而块擦除可实现对任意 Flash 块进行擦除。

对 P89C61X2 进行在系统编程和标准的并行编程都是可行的。片内产生的擦除和写入时序为用户提供了良好的编程接口。P89C61X2 的 Flash 存储器甚至在经过 10 000 次擦除和编程之后仍能可靠地保存存储器内容。使用+5 V 的 Vpp 即可实现对其进行擦除和编程。2 配置原理和配置文件用单片机通过 PS 模式配置 FPGA,可以使用单片机的普通输入/输出(I/O)口(如图 1(a)所示)或串行口(如图 1(b)所示)来实现。

配置中使用了 FPGA 的 nCONFIG(配置控制位输入端)、nSTATUS(配置错误指示位输出端)、CONF_DONE(配置结束标志位输出端)、DCLK(配置时钟输入端)、DATA0(配置数据输入端)引脚等。nCEO 引脚用于多个 FPGA 器件采用 PS 模式配置时,把第一片的 nCEO 连接到下一片的 nCE 引脚上。配置时若使用普通 I/O 口(如 P1 口),向 FPGA 发送 1 位数据至少需要 4 个指令周期:一个指令给 DATA0 赋值,两个指令产生 DCLK 时钟,一个指令移位取数据。

如果晶振频率为 fosc,一个指令周期为 12/fosc,那么它的下载速率为 fosc/48。如果采用串行口方式 0,其下载速率提高为 fosc/12。P89C61X2 支持 6 时钟模式,速度可以提高一倍。在配置过程中,nCONFIG 低电位使 EPF10K20 复位,在由低到高的跳变过程中启动配置;加电后,EPF10K20 驱动 nSTATUS 引脚到低电位,然后释放它(nSTATUS 必须经过 1 kΩ电阻上拉到 VCC,若配置期间出错,EPF10K20 将其拉低),每个数据由最低位(LSB)先送出给 DATA0,数据时钟 DCLK 同时送到器件,直到 CONF_DONE 变高。

在所有数据传输完后,对于 FLEX10K 和 FLEX6000 器件,DCLK 必须多送 10 个 DCLK 脉冲;APEX20K 器件必须多送 40 个 DCLK 脉冲。EPF10K20 的 CONF_DONE 变高显示配置成功,开始初始化,最后进入用户模式,开始正常工作。由于 PS 模式中没有握手信号,因此配置时钟的工作频率必须低于 10 MHz,如果想在配置中中止,可以挂断 DCLK。硬件描述语言生成的程序经 MAX+PLUS II 编译后会产生一个后缀为.sof 的 SRAM 目标文件。

该文件除配置数据外还含有控制字符,不能直接写人到 PLD 中去,需要利用 MAX+PLUS II 的编程文件转换功能。例如有些编程器支持.rbf 文件。.rbf 文件为原始二进制文件,该文件包括所有的配置数据,配置文件的大小一般由它决定。1 字节的.rbf 文件有 8 位配置数据,每一字节在配置时最低位最先被装载。不同系列的目标器件配置数据的大小也不同,如.rbf 文件在 FLEK 系列中,EPF10K10 为 15 KB,EPF10K20 为 29 KB,EPF10K30 为 46 KB,EPF10K40 为 61 KB,EPF10K70 为 109 KB 等。

由于 P89C61X2 包含 64 KB Flash 程序存储器,可以对除 EPF10K70 外的其他器件实现配置,而大干 61 KB 的 FPGA 器件可采用扩展存储器的方法来实现。MAX+PLUS II 不自动生成.rbf 文件,须按照下面的步骤生成:①在 MAX 十 PLUS II 编译状态下,选择文件菜单的变换 SRAM 目标文件命令;②在变换 SRAM 目标文件对话框中指定要转换的文件并且选择输出文件格式为.rbf,然后确定。

针对单片机 P89C61X2,可以通过在系统编程(ISP)的方法实现。这里采用广州致远电子有限公司开发的在线编程下载软件 ZLGICD。该软件支持.hex 文件。.hex 文件为十六进制文件,MAX+PLUS II 编译时会自动生成该文件,如果没有也可采用类似产生.rbf 文件的方法生成。用 P89C61X2 来配置 FPGA,需将引导配置代码(.hex 文件)和 FPGA 的配置数据(.hex 文件)一起通过编程器写入 P89C61X2。

配置数据需要改变现有地址来让引导程序调用,否则会造成冲突。可以自己编写一个小程序来实现此功能。注意.hex 文件的格式。由于引导配置代码不长,通常小于 1 KB,因此有足够的空间来存放配置数据。3 软件设计软件编程时,本系统只用到了串行口移位寄存器的输出方式,串行数据通过 RXD 引脚输出,移位时钟由 TXD 引脚输出。当有一个字节数据写入串行数据缓冲器 SBUF 时,开始发送。而串行口输出方式本身就满足配置时最低位(LSB)先送出的要求。


© 星光电子技术工作室 2021 All Rights Reserved.
如有任何问题、建议、业务、合作,请联系手机/微信:13713820066