用PowerPC860实现FPGA配置_EDAPLD论文
关键词:powerpc860 fpga xilinx
1 概述
mpc860是基于powerpc结构的通信控制器。它不仅是集成的微处理器,而且将很多外设的功能也集成在一起。mpc860具有存储控制器,其存储控制器的功能很强,可以支持各种存储器,包括各种新型的dram和flash,并可以实现与存储器的无缝接口;而且使用嵌入式操作系统vxworks和开发环境tornado开发非常方便。
本设计中用1片intel w28f1283a150 flash作为bootflash对mpc860进行加电配置,其多余的存储空间完全可以存放下fpga所需的配置文件。加电复位、系统启动后,由mpc860处理机与epld配合,控制fpga配置文件的下载过程,完成对fpga的配置。使用mpc860可以对fpga十分方便地进行配置,甚至可以通过mpc860的网络功能对fpga进行远程配置,节省了因采用专用配置芯片所耗费的电路板及其成本。本文主要介绍如何用mpc860对xilinx公司的virtex ii系列的fpga进行配置,其原理同样适用于别的fpga芯片(包括altera公司)。
2 xilinx fpga的配置方式
本设计中fpga采用xilinx公司virtex-ii系列蝗xc2v4000,其配置文件的下载模式有5种:主串模式(master serial)、从串模式(slave serial)、主并模式(master selectmap)、从并模式(slave selectmap)、jtag械。其中,jtag模式在开发调试阶段使用。本设计将jtag口直接做在信号处理板上,便于开发设计阶段的调试。
参考xilinx公司的有关文档,比较其余4种下载模式,可将其分为串行下载方式和并行下载方式。串行下载方式和并行下载方式都有主、从2种模式。主、从模式的最大区别在于:主模式的下载同步时钟(cclk)由fpga提供;从模式的下载同步时钟(cclk)由外部时钟源或者外部控制信号提供。主模式对下载时序的要求比从模式严格得多。因此从处理机易于控制下载过程的角度,选择使用从串模式或从并模式。本设计采用从串模式进行fpga配置,以减少占用mpc860的资源。
用mpc860对fpga进行配置,实质上就是用mpc860和epld来仿真jtag接口的下载时序,完成对fpga的下载。jtag的有效引脚只有5个,分别是nconfig(prog_b)、nstatus(init_b)、conf_done(done)、dclk(cclk)、data0(din)。其中nconfig用于使fpga进行到下载状态,nstatus时不否出现crc校验错误,conf_done用于表示下载完成,而dc1k的data则是用于在下载时产生时钟和数据位的。每一个cd1k时钟周期写入1个bit数据(括号中标注为xilinx的fpga对该功能的称呼)。
表1所列为下载信号定义。
表1 下载信号定义
引 脚 | 方向(对fpga) | 说 明 |
data0 | 输入 | 数据引脚 |
dclk | 输入 | 同步时钟,由外部时钟源或控制信号提供 |
nconfig | 输入 | 异步复位引脚,用于异步复位配置逻辑 |
conf_done | 输出 | 配置状态 |
nstatus | 输出 | 下载状态 |
3 从串模式的配置信号和下载时序
(1)启动下载时序
在nconfig引脚上产生1个超过2μs的低脉冲,等待nstatus回应1个低脉冲以及conf_done。变低。这时候表明fpga已经进入到了下载状态,等待至少5μs以后就可以开始下载了。
(2)下载时序
从串下载模式的下载时序如图1的所示。
在data0上逐位地产生要下载的数据,同时在dc1k上产生时钟。数据必须在时钟的上升沿之间50ns有效,时钟高电平和低电平的时钟都不能小于80ns。这一过程一直持续到全部数据下载完成。在下载过程中可以出现相对较少时间的等待状态,而不会中断下载进程。如果发生错误,nstatus将被拉低,fpga退出操作,必须重算1~3步骤。
(3)结束下载
在数据都下载完成以后,需要继续给fpga提供若干的时钟,时钟要至少等到conf_done变高为止。
(4)启动器件
conf_done被释放,被外部拉高。
mpc860处理机控制从串下载模式的信号连接示意如图2所示。
4 mpc860下载模式的软件(状态机)设计
mpc860下载模式的状态机的实现是由pcm860处理器和epld协同来完成的。mpc860通过写入sc_dnld_req(1..0)来控制状态机的下一个状态,通过判断epld中寄存器sc_dnld_con(3..0)的内容来决定流程的跳转。
图3中状态req=“x”代表向epld的寄存器sc_dnld_req写入数据“xx”。
其中,sc_dnld_req(1 downto 0)使mpc860通过这个寄存器向epld发出指令,控制下载过程:
10——通知epld作好向fpga发nconfig的准备工作;
11——通知epld开始向fpga发出nconfig命令;
00——通知epld作好向fpga下载数据的准备工作;
01——通知epld开始向fpga逐位下载1个字节的数据。
如果下载过程顺序的话,第1、第2步只需在每次下载数据前进行1次,第3、第4步是每下载1个字节数据都要进行的步骤(每次写入下载数据的操作在第3步之前进行,且新数据要写入专门的寄存器sd_data_byte(7 downto 0))。
sd_data_byte(7 downto 0))是下载数据缓存。
sc_dnld_con(3 downto 0)是4bit的只读寄存器。860通过查询这个寄存器的内容判断目标fpga的当前下载状态,以决定应该发出什么样的指令。其各位代表的意义如下所述:
①sc_dnld_con(3) ——为0时表示不可以发送新数据到epld,为1时允许发送数据;
②sc_dnld_con(2) ——为0时表示工作正常,为1时表示下载过程中断;
③sc_dnld_con(1) ——目标fpga返回的nstatus信号;
④sc_dnld_con(0) ——目标fpga返回的conf_done信号。
结束语
mpc860有强大的资源,可以在外围电路不复杂的情况下实现xilinx公司的fpga的配置程序下载。本设计经过实际调试,已成功地用于所开发的数字通信信号处理板上,效果良好。