微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 多节点大容量FPGA系统的远程升级方法

多节点大容量FPGA系统的远程升级方法

时间:10-02 来源:互联网 点击:
3.2.1 RS485接口电路设计

如表1所列,RS485总线标准具有控制方便、价格低廉以及高噪声抑制、相对高的传输速率、传输距离远和宽共模范围等优点。在过去的20年时间里,建议性标准RS485作为一种多点差分数据传输的电气规范,被应用在许多不同的领域作为数据传输链路。

表1 TIA/EIA485串行通信标准的性能


子节点的ATmega64单片机通过Sipex公司设计生产的高性能RS485收发器接入RS485总线。

SP485R是一款与流行的标准RS485芯片完全兼容,而且包含更高的ESD保护和高接收器输入阻抗等性能的RS485收发器。接收器输入高阻抗可以使400个收发器接到同一条传输线上,又不会引起RS485驱动器信号的衰减。该收发器的特点如下:

① 允许超过400个收发器接到同一条传输线上;

② 接收器输入高阻抗(标准值RIN=150 kΩ);

③ 半双工配置与工业标准引脚一致;

④ 共模输入电压范围为-7~+12 V;

⑤ 低功耗(250 mW);

⑥ 独立驱动器和接收器使能引脚。

其典型应用电路如图3所示。


图3 利用SP485R构成的半双工RS485电路


ATmega64单片机的标准串行口通过RXD直接连接SP485R芯片的RO引脚,通过TXD直接连接SP485R芯片的DI引脚。由单片机输出的R/D信号直接控制SP485R芯片的发送器/接收器使能:R/D信号为1,SP485R芯片的发送器有效,接收器禁止,此时单片机可以向RS485总线发送数据字节;R/D信号为0,SP485R芯片的发送器禁止,接收器有效,单片机可以接收来自RS485总线的数据字节。上拉电阻R1、下拉电阻R2用于保证未连接总线时的SP485R芯片处于空闲状态,以提高每个RS485节点的工作可靠性。6.8V的TVS管V1、V2、V3用来保护RS485总线,避免RS485总线受外界干扰时产生的高压损坏RS485收发器。

3.2.2 ATmega64存储空间的扩展

ATmega64的寻址空间为64KB,利用ATmega64自身的寻址系统,只能访问0x0000~0xFFFF的地址空间。显然,这对于存储和加载大容量FPGA的配置数据是远远不够的。以Xilinx公司的Spartan3系列FPGA为例,其配置数据所需的存储空间如表2所列。

表2 Spartan3系列FPGA配置文件大小


以XC3S4000型FPGA为例,它的配置文件所需的存储空间约为1.35MB,已远远超出了ATmega64单片机的寻址空间。因此,为了能够利用ATmega64单片机来实现对FPGA配置数据的读写,必须对其寻址空间进行扩展。扩展的硬件连接框图如图2中的单片机与Flash的连接部分所示。

本设计中是使用通用I/O来扩展ATmega64单片机的寻址空间的。ATmega64单片机的总寻址空间为64 KB,但片内4KB的SRAM及各种寄存器占用了前面的部分寻址空间,故其片外存储器寻址空间是0x1100~0xFFFF。因此将Flash的低15位地址直接接到ATmega64单片机的低15位地址总线上,其余6位高位地址用单片机的通用I/O进行选择。寻址时单片机的专用地址口只输出0x8000~0xFFFF的地址数据,与通用I/O输出的地址组合后给出Flash的读写地址。

通过以上对ATmega64单片机寻址空间的扩展方法,可以实现ATmega64单片机对合适的Flash存储器的寻址操作,从而解决了大容量FPGA配置数据的存储和读取问题。

3.2.3 用ATmega64实现FPGA的SELECTMAP加载

Xilinx公司的Spartan3系列FPGA加载方式分为5种: Master Serial、Slave Serial、Master Parallel、Slave Parallel、JTAG。

按照FPGA是否控制加载过程,加载方式可分为Master方式和Slave方式;按照加载数据时的数据位宽,可分为Serial方式和Parallel方式。用于加载的引脚主要有:PROG_B,CCLK,RDWR_B,DONE,INIT_B,CS_B,BUSY,D[0~7],M[0~2],HSWAP和JTAG接口(TDI、TMS、TCK、TDO)。加载过程大体分为3个步骤:配置的建立、配置数据的加载和加载完成。  
SELECTMAP即Slave Parallel方式,是由外部控制器控制FPGA的加载过程,并以8位数据的形式向FPGA写入加载数据的加载方法。图2中FPGA与ATmega64的连接部分为ATmega64单片机采用SELECTMAP方式对FPGA进行加载的硬件连接框图,具体实现过程如下:

ATmega64通过将FPGA的PROG_B、CS_B和RDWR_B引脚置低来开启加载过程,FPGA在PROG_B置低后开始清除内部配置RAM,并将INIT_B脚置低。PROG_B重新置1后,在INIT_B由低变高的上升沿,FPGA采样M[0~2]引脚获取配置方式信息。

ATmega64监视FPGA的INIT_B脚,当INIT_B脚由低变高时,说明FPGA已经完成了内部配置RAM的清除工作,并准备好接收配置数据。在ATmega64给出的CCLK配置时钟的上升沿,配置数据D[0~7]写入配置RAM。当FPGA接收完所有的配置数据后,DONE引脚被FPGA置为高电平。ATmega64可以通过监视DONE引脚来判断FPGA是否加载完成。对于Spartan3系列的FPGA,如果配置FPGA的CCLK的频率高于50MHz,则外部控制器还需要监视FPGA的BUSY引脚。当BUSY脚为高时,说明FPGA还未完成上一个配置数据的处理,此时外部控制器需要继续保持上一个配置数据在D[0~7]引脚,直至BUSY引脚回到低电平。对于本设计的应用,ATmega64给出的配置时钟频率远低于50MHz,不必考虑BUSY引脚的控制作用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top