微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 用ARM和FPGA搭建神经网络处理器通信方案

用ARM和FPGA搭建神经网络处理器通信方案

时间:07-19 来源:互联网 点击:

用;③各类寄存器组占用。当样本数据数量较大时会占用比较大的空间,FPGA芯片将不能满足,因此不能把样本数据存储在片上,而是存储于扩展存储器。

  2.2硬件连接

  从上面的介绍容易发现,ARM芯片的通信对象是基于SRAM工艺的FPGA芯片上的存储体。因此,FPGA芯片作为存储设备时,ARM芯片可直接与其相连。ARM与FPGA硬件连接示意图如图6所示。

  

  图6 ARM与FPGA硬件连接示意图

  ARM与FPGA的片上存储体的地址总线连接设置为12位,足够存储和寻址需求。

  数据总线的宽度为28位。神经网络处理器的数据精度为16位[4],FPGA样本数据寄存器还有12位外部扩展存储器的地址数据,因此整个数据总线的宽度为二者之和。除样本数据寄存器之外的片上存储体,数据线占用28位数据总线中的低16位。

  控制总线包括ARM端的片选线nGCS6和读/写控制线。对ARM相应的寄存器进行配置可激活BANK6(FPGA片上存储体)和读/写数据。

  根据数据存储位置的不同,硬件连接可分成两方面。如图7所示。

  

  图7 FPGA端部分硬件连接示意图

  第一,存储位置为FPGA端的外部扩展存储器。①ARM与FPGA通过12位地址总线、28位数据总线及控制总线直接相连,数据写入样本数据寄存器。②样本数据寄存器的28位数据按照12位地址数据、16位样本数据,通过FPGA与外部扩展存储器之间的12位地址总线、16位数据总线,在存储控制模块的控制下,把样本数据写入扩展存储器。因此,把样本数据寄存器分为两部分,低16位为样本数据,高12位为该样本数据在外部扩展存储器的存储地址,如下所示。

  

  第二,存储位置为FPGA的片上存储体。ARM与FPGA通过12位地址总线、28位数据总线中的低16位、控制总线直接相连,控制寄存器组、专用寄存器组、分布式存储器连接在这些总线上面。

  片上集成存储系统采用统一编址的方式,其优势在于可以通过ARM芯片的DMA方式进行数据传输,既可以提高传输速率又能够释放CPU.外部扩展存储器因为只受FPGA控制而采用独立编址,但地址域的设计接续片上集成存储系统的地址,如此方便操作。

  3 ZDMA控制设计

  ARM端与FPGA端的数据通信如图8所示,分为3个阶段:

  ①网络初始化阶段的数据通信:配置网络初始化数据。a)需对网络训练执行阶段②,b)否则执行阶段③。

  ②网络训练阶段的通信:下载训练样本数据,训练完成上传稳定的权值。

  ③实际应用阶段的通信:下载实际样本数据,上传处理结果。

  每一个阶段都是在ZDMA的方式下进行。每一个阶段完成后都会进入中断,提示本阶段完成并进行下一步操作。

  

  图8 数据通信阶段流程图

  3.1下载数据时ZDMA的配置

  按照是否为样本数据,通信可分为两个阶段:一是面向FPGA片上集成存储系统的非样本数据通信,二是面向FPGA片外扩展存储器的样本数据通信。

  本设计使用ZDMA0、ZDMA1两个通道中的一个。与ZDMA有关的特殊功能寄存器有:

  ZDMA控制寄存器(①ZDCONn):主要用于对DMA通道进行控制,允许外部DMA请求(nXDREQ)。

  ZDMA0/1初始源/目的地址和计数寄存器、ZDMA0/1当前源/目的地址和计数寄存器。

  ZDMAn初始/当前源地址寄存器(②ZDISRC、③ZDCSRC):初始源地址为数据在ARM芯片内存的存放地址;当前源地址为即将传输的数据的内存地址,值为初始源地址+计数值。

  ZDMAn初始/当前目的地址寄存器(④ZDIDES、⑤ZDCDES):分为两个阶段:第一阶段传输非样本数据时初始目的地址为BANK6的起始地址;当前目的地址是变化的,为初始目的地址+计数值。第二阶段传输样本数据时初始目的地址也是当前目的地址,为样本数据寄存器的地址。

  ZDMAn初始/当前目的计数寄存器(⑥ZDICNT、⑦ZDCCNT):初始值为0,当前值随着传输数据的个数逐一递增,直至达到所有数据的数量。样本数据和非样本数据的传输分两个阶段进行,各自独立。

  从这个过程中可以看出,配置ZDMA时需考虑FPGA端存储结构体多样性的问题。

  3.2上传数据时ZDMA的配置

  神经网络处理器的稳定权值和处理结果存储在FPGA上统一编址的专用寄存器组B中,不存在存储结构体多样性的问题,所以上传数据时ZDMA的配置相对简单:

  初始源地址即专用寄存器组B的起始地址,每传送一次数据专用寄存器组的地址指针+1并作为当前源地址。

  初始目的地址为要存放数据的内存块的起始地址,每传送一次数据内存块地址指针+1并作为当前目的地址。

  计数寄存器的初始值为0,每传送一次数据其值+1,达到设定的目标值时数据上传即完成。

  结语

本文首先介绍了人工神经网络的模型和算法以及FPGA的实现,并通

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

网站地图

Top