导言
多节点体系,在现在的许多电子体系运用场合都可以看到。这种多节点体系因为具有结构可扩展性、功用装备的灵敏性以及便于查找毛病节点等杰出的可维护性得到了越来越广泛的运用。一般,多节点体系各个节点的首要硬件构成有很大的相似性。特别是近年来, 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个进程:装备的树立、装备数据的加载和加载完结。
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的频率高于50 MHz,则外部操控器还需求监督FPGA的BUSY引脚。当BUSY脚为高时,阐明FPGA还未完结上一个装备数据的处理,此刻外部操控器需求持续坚持上一个装备数据在D[0~7]引脚,直至BUSY引脚回到低电平。关于本规划的运用,ATmega64给出的装备时钟频率远低于50 MHz,不用考虑BUSY引脚的操控效果。
3 软件规划
3.1 主控计算机的软件规划
主操控计算机的软件运转状况应该分为两种:一是平常的查询操控状况,用来查询和操控体系中各个节点的作业状况;二是体系的晋级状况,用来履行对各个子节点的晋级操控。如图4所示,这两种状况是可以彼此转化的。
图4 主控计算机首要状况
软件的查询操控状况,是由体系所要完结的首要功用决议的,不属于本文所评论的领域。在体系的晋级状况,主控计算机先要通过以太网取得体系各个节点的长途晋级数据,待悉数晋级数据接纳完结后,向体系的一个节点发送晋级指令。节点呼应并树立起通讯衔接后,将该节点的晋级数据悉数发送到该节点。接下来,主控计算机判别上一个节点是否为最终一个需求晋级的节点,假如不是,则持续进行下一个节点晋级数据的传输。体系一切的节点晋级完结后,等候外部输入的操控指令。例如,让整个体系从头启动,加载新的数据;或暂时不从头启动而回来查询操控状况。软件流程如图5所示。
图5 体系晋级状况流程
3.2 子节点的软件规划
关于子节点的软件规划,与主控计算机相同,也分为平常的查询操控状况和体系晋级状况,并且它们之间也可以与主控计算机一同彼此转化;但 ATmega64单片机还要承当对FPGA的加载使命。开机运转后,ATmega64单片机先加载子节点FPGA,使子节点可以正常作业。子节点正常作业后,监督RS485总线并判别有无对本节点的通讯。当主控计算机要求与本节点树立通讯衔接时,发送反应信息,与其树立通讯衔接。子节点依据主控计算机发送的指令,进入查询操控办法或许长途晋级办法。进入长途晋级办法后,子节点接纳主控计算机发来的长途晋级数据,晋级数据通过校验后写入Flash。晋级完结后持续等候主控计算机的指令,从头启动或持续运转。其详细的软件规划流程如图6所示。
图6 子节点软件流程
结语
FPGA既承继了ASIC的大规模、高集成度、高可靠性的长处,又克服了一般ASIC周期长、出资大、灵敏性差的缺陷,逐渐成为许多体系完结的抱负挑选。特别是跟着FPGA容量和功用的提高,加上其共同的硬件晋级才能,其运用规模越来越广。本文所提出的对大容量FPGA构成的多节点体系的长途晋级办法,体系构成简略、技能老练,并且具有显着的本钱优势。