EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
摘要 针对目前广泛使用的以大容量FPGA实现主要功能的多节点系统的远程升级问题,提出了一种基于ATmega64单片机和RS485总线以及接入以太网的主控计算机的实现方案。该方案具有低成本等显著的特点,可以简单、有效地解决许多场合多节点、大容量FPGA系统的远程升级问题,具有一定的应用价值。 引言 多节点系统,在目前的很多电子系统应用场合都可以看到。这种多节点系统由于具有结构可扩展性、功能配置的灵活性以及便于查找故障节点等良好的可维护性得到了越来越广泛的应用。通常,多节点系统各个节点的主要硬件构成有很大的相似性。特别是近年来, FPGA这个强大的平台让多节点系统各个节点的硬件构成拥有了更广泛的通用性。尤其是随着IP核技术的推广,再加上一些功能强大的CPU核的出现,如Xilinx公司提供的PicoBlaze和MicroBlaze等,使得目前的许多系统的主要功能都可以由大容量的FPGA实现,而无需再使用比较昂贵的高性能微处理器。 对于节点系统,这将大大降低系统成本。对于由大容量FPGA构成的多节点系统,系统的升级是一个费时费力的工作。此时,FPGA的远程升级能力就显得尤为重要。对于包含ARM、DSP、PowerPC等高性能嵌入式微处理器的多节点系统,使用这些嵌入式微处理器,采用SELECTMAP对FPGA进行加载并实现远程升级,无需增加过多的外部器件,是非常经济和高效的。但对于器件就是大容量FPGA的系统,如果由FPGA本身来接收升级数据并写入存储配置数据的非易失性存储器,一旦升级失败,将无法再次升级,从而限制了它在许多需要高可靠性要求或者维护人员不便于到达的场合的应用;而如果单纯为了实现系统的远程升级而加入价格昂贵的嵌入式微处理器,又会较大地增加系统成本和复杂性。针对这种情况,笔者设计了利用ATmega64单片机和RS485总线,加上接入以太网的主控计算机构成的远程升级系统,解决了上述问题。 1 系统设计 1.1 系统结构设计 远程升级系统主要由一台接入以太网的主控计算机、半双工RS485总线以及各个子节点构成,组成结构如图1所示。主控计算机通过以太网从外部获取整个系统各个节点的升级数据,然后通过RS485总线向各个子节点发送其对应的升级数据,完成多节点系统的升级。RS485总线采用一主多从的半双工方式,主控计算机为总线的主控制器,只能由它向各个节点发起通信连接,其余子节点只能响应主控计算机的控制命令。 图1 多节点大容量FPGA系统远程升级系统结构框图 1.2 节点升级原理 各个节点通过RS485总线与主控计算机相连,在无升级数据时,总线可以用来传输主控计算机对各个节点的查询和控制命令。主控计算机与各个节点的通信协议可以采用具有查询控制帧、应答帧和数据帧3种帧类型的协议。只有主控计算机可以发送查询控制帧,查询或设定各个节点的远程升级状态或工况信息。子节点接收主控计算机的命令和数据,发送应答帧,并完成自身的升级。 2 子节点的硬件设计 2.1 子节点硬件结构框图 如图2所示,以一个由Xilinx公司的XC3S4000大容量FPGA构成的系统为例,远程升级系统子节点的硬件电路主要包括: ATmega64单片机,用于存储大容量FPGA配置数据的Flash,以及接入RS485总线的半双工总线收发器。ATmega64单片机用于实现对大容量FPGA XC3S4000的加载,以及从RS485总线接收FPGA的升级数据并写入拥有2 MB存储空间的Flash存储器SST36VF1601C中。RS485TTL电平变换电路采用RS485收发器SP485R。 图2 子节点硬件结构框图 2.2 子节点硬件设计说明 在子节点的硬件设计中,ATmega64单片机是实现整个升级功能的关键。ATmega64是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega64 的数据吞吐率高达1 MIPS/MHz,从而可以缓解系统在功耗和处理速度之间的矛盾。AVR内核具有丰富的指令集和32个通用工作寄存器,并且所有的寄存器都直接与算术逻辑单元(ALU)相连接,使得1条指令可以在1个时钟周期内同时访问2个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC微控制器至10倍的数据吞吐率。ATmega64有如下特点: ① 64 KB的系统内可编程Flash(具有同时读写的能力,即RWW),2 KB的EEPROM,4 KB的SRAM,32个通用工作寄存器; ② 53个通用I/O口线; ③ 实时计数器(RTC); ④ 4个具有比较模式与PWM的灵活的定时器/计数器(T/C),具有片内振荡器的可编程看门狗定时器; ⑤ 2个USART,面向字节的双线串行接口(TWI),1个SPI 串行端口; ⑥ 8路10 位具有可选差分输入级可编程增益的ADC; ⑦ 与IEEE 1149.1 标准兼容的,可用于访问片上调试系统及编程的JTAG接口。 ATmega64是以Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口(或者通用编程器)进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。通过将8位RISC CPU与系统内可编程的Flash集成在一个芯片内,ATmega64 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。 利用ATmega64单片机实现对大容量FPGA的远程升级,涉及的主要技术问题有三点: 一是如何将ATmega64单片机接入RS485总线;二是在接收到升级数据后和加载FPGA时,如何利用ATmega64单片机对大容量的Flash存储器进行读写操作;三是ATmega64单片机实现FPGA的SELECTMAP加载。 2.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.8 V的TVS管V1、V2、V3用来保护RS485总线,避免RS485总线受外界干扰时产生的高压损坏RS485收发器。 2.2.2 ATmega64存储空间的扩展 ATmega64的寻址空间为64 KB,利用ATmega64自身的寻址系统,只能访问0x0000~0xFFFF的地址空间。显然,这对于存储和加载大容量FPGA的配置数据是远远不够的。以Xilinx公司的Spartan3系列FPGA为例,其配置数据所需的存储空间如表2所列。 表2 Spartan3系列FPGA配置文件大小 以XC3S4000型FPGA为例,它的配置文件所需的存储空间约为1.35 MB,已远远超出了ATmega64单片机的寻址空间。因此,为了能够利用ATmega64单片机来实现对FPGA配置数据的读写,必须对其寻址空间进行扩展。扩展的硬件连接框图如图2中的单片机与Flash的连接部分所示。 本设计中是使用通用I/O来扩展ATmega64单片机的寻址空间的。ATmega64单片机的总寻址空间为64 KB,但片内4 KB的SRAM及各种寄存器占用了前面的部分寻址空间,故其片外存储器寻址空间是0x1100~0xFFFF。因此将Flash的低15位地址直接接到ATmega64单片机的低15位地址总线上,其余6位高位地址用单片机的通用I/O进行选择。寻址时单片机的专用地址口只输出0x8000~0xFFFF的地址数据,与通用I/O输出的地址组合后给出Flash的读写地址。 通过以上对ATmega64单片机寻址空间的扩展方法,可以实现ATmega64单片机对合适的Flash存储器的寻址操作,从而解决了大容量FPGA配置数据的存储和读取问题。 2.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个步骤: 配置的建立、配置数据的加载和加载完成。 ; V3 \, Z) d1 R( j. v; S
|