历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2020年10月12日 | 用ARM和FPGA搭建神经网络处理器通信方案

发布者:WanderlustGaze 来源: elecfans关键字:ARM  FPGA  神经网络处理器  通信方案 手机看文章 扫描二维码
随时随地手机看文章

  引言

  人工神经网络在很多领域得到了很好的应用,尤其是具有分布存储、并行处理、自学习、自组织以及非线性映射等特点的网络应用更加广泛。嵌入式便携设备也越来越多地得到应用,多数是基于ARM内核及现场可编程门阵列FPGA的嵌入式应用。某人工神经网络的FPGA处理器能够对数据进行运算处理,为了实现集数据通信、操作控制和数据处理于一体的便携式神经网络处理器,需要设计一种基于嵌入式ARM内核及现场可编程门阵列FPGA的主从结构处理系统满足要求。


  1人工神经网络处理器

  1.1人工神经网络模型

  人工神经网络是基于模仿大脑功能而建立的一种信息处理系统。它实际上是由大量的、很简单的处理单元(或称神经元),通过广泛的互相连接而形成的复杂网络系统。最早的神经元模型是MP模型,由输入X、连接权值W和阈值θ、激活函数f和输出O组成,如图1所示。

  

  图1人工神经元的MP模型

  神经元j的输出为:

  

  式中:netj是神经元j的净输入,xi是神经元j的输入,wij是神经元i到神经元j的权值,θj是神经元j的阈值,f()是神经元净输入和输出之间的变换函数,称为激活函数。[1]

  后来的各种网络模型基本都由这几个因素构成,例如图2的三层BP神经网络模型。

  

  图2三层BP神经网络模型

  三层BP网络的标准学习算法如下[2],当网络输出与期望输出不等时,存在输出误差E,定义如下:

  

  容易看出,各层权值调整公式均由3个因素决定,即学习率η、本层输出的误差信号δ以及本层出入信号Y(或X)。其中,输出层误差信号与网络的期望输出与实际输出之差有关,直接反映了输出误差,而各隐层的误差信号与前面各层的误差信号都有关,是从输出层开始逐层反传过来的。


  神经网络的训练学习的过程就是通过不断地调整各个节点的权值,使输出误差达到最小,最终获得稳定可靠的权值,实现网络的预定功能。


  1.2人工神经网络的FPGA实现

  算法公式实际隐含着各种运算过程,乘累加计算、激活函数及其导数的计算和逻辑运算是3种必不可少的运算,因此FPGA的实现主要是各种运算器的设计和连接。处理器要处理各种类型的数据,样本数据X(训练样本、实际样本),网络参数(学习速率η、每层神经元个数n等)和权值W是必不可少的。网络参数和初始权值用来对网络初始化,训练样本用来训练网络学习,最后在网络应用阶段对实际样本进行处理。

  

  图3神经网络的运算模块和数据存储结构图

  图3展示的是FPGA神经网络处理器的主体部分:存储模块和运算模块。根据网络的结构特点,连接权值处于各个神经元节点的连接处,与各自的权值运算结构一一对应,为分布式,所以分布式存储器WM中存储权值数据;样本数据统一从网络的输入层进入网络,故DM中存储样本数据;MAE是处理器的运算部分。


  2通信硬件设计

  2.1系统整体架构

  系统整体结构框图如图4所示,分为ARM端和FPGA端两个部分。ARM端有两个功能:一是从内存中读取已有数据,通过DMA方式下载到FPGA端,按照数据类型将数据下载到不同的存储设备和存储空间;二是对FPGA进行控制,主要是各种中断操作。FPGA端的功能是接收ARM传送的数据,存储数据,并在微程序控制器的控制下进行运算处理,最后把结果上传给ARM.

  

  图4系统整体结构框图

  ARM端以S3C44B0X芯片为核心,外部扩展各类设备构成。S3C44B0X是三星公司的16/32位微处理器,片内集成了ARM7TDMI核,并在此基础上集成了丰富的外围功能模块,为嵌入式设备提供一个低成本高性能的方案。


  S3C44B0X拥有4通道的DMA控制器,两个ZDMA,连接于SSB(三星系统总线);另外两个BDMA,连接在SSB和SPB(三星外围总线)之间的接口层。其中ZDMA可从存储器到存储器、存储器到I/O设备和I/O设备到存储器传送数据。DMA操作由S/W或来自外部请求引脚(nXDREQ0 /1)的请求来启动。


  在DMA操作中,通过配置DMA特殊功能寄存器来实现对DMA的控制,如图5所示。

  

  图5 ZDMA控制器框图

  FPGA端的组成为FPGA芯片和扩展存储器。按处理数据类型的不同设计不同的存储结构,具体如下所列。神经网络的结构参数存放于控制寄存器组,初始权值、稳定权值存放于分布式存储器,其他参数(学习速率、学习速率调整因子等)存放于专用寄存器组A中,处理结果存放于专用寄存器组B中,样本数据存放于扩展存储器SD卡中。

  

  以上所述的存储体,除扩展存储器外其他结构都在FPGA芯片内部设计完成。采用这种设计是基于FPGA片上存储资源的使用情况:①FPGA的配置文件占用;②分布式存储器占用;③各类寄存器组占用。当样本数据数量较大时会占用比较大的空间,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的方式下进行。每一个阶段完成后都会进入中断,提示本阶段完成并进行下一步操作。

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

  图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的实现,并通过对网络结构的分析设计了FPGA端的数据存储系统。然后分析了ARM端和FPGA端各自的功能,在此基础上把两者结合在一起,设计了一种利用ARM的ZDMA方式相互通信的方案。

关键字:ARM  FPGA  神经网络处理器  通信方案 引用地址:用ARM和FPGA搭建神经网络处理器通信方案

上一篇:探索ARM Cortex-M7核心:为明日物联网预做准备
下一篇:还不会用RS 485实现串口通信就太out了,教你轻松替代RS 232

推荐阅读

start.S源码:.global _start_start: ldr sp, =0xD0030000 // 初始化栈,因为后面要调用C函数 bl clock_init // 初始化时钟 bl ddr_init // 初始化内存 bl nand_init // 初始化NAND ldr r0, =0x36000000 // 要拷贝到DDR中的位置 ldr r1, =0x0 ...
本阶段任务与步骤================1,设置好共享文件夹2,编译这些代码: make3,将编译好的示例程序piano丢到开发板,观察运行效果 注意:要将所有的bmp文件也要上传到开发板(已经上传过了就不用重复上传了)4,修改piano.c,使得钢琴12个琴键均能按下去。 单片机源程序如下:/***********************************************//// Copyright(C),...
图片来源:优傲机器人现在全球经济仍然面临巨大挑战,各个行业正在积极寻求自动化方案提升以应对瞬息万变的市场,协作机器人在其中也发挥了重要作用,成为企业保持业务连续性的强劲助力。在供应链中,包装和码垛涉及很多不符合人体工程学的任务,这可能会导致重复性劳损和肌肉骨骼疾患。频繁地举起重物以及弯腰拾起或打包货物不符合人体工程学的工作,有致...
电动汽车产业被视为ICT产业的新蓝海,近年来众多的ODM/OEM厂商都开始积极跨足电动汽车相关业务。手机ODM龙头企业闻泰科技近年来从ODM手机、笔电到TWS耳机之外,还通过收购安世半导体进入了半导体领域,今年还收购了欧菲光的苹果摄像头模组业务,有望切入苹果供应链。同时,闻泰科技还进军汽车电子业务。目前闻泰科技的智能座舱产品进入样机验证阶段,朝一...

史海拾趣

问答坊 | AI 解惑

电源技术的创新与发展

电源技术是一种应用功率半导体器件,综合电力变换技术、现代电子技术、自动控制技术的多学科的边缘交叉技术。随着科学技术的发展,电源技术又与现代控制理论、材料科学、电机工程、微电子技术等许多领域密切相关。目前电源技术已逐步发展成为一门多 ...…

查看全部问答∨

关于光电编码器的电路设计

目前正在开发光电编码器,请熟悉相关方面的朋友多指点阿,先谢啦。 主要是红外发光二极管、接受三极管的信号放大、整形等。。…

查看全部问答∨

电子竞赛中的30m的频率通讯电路图出来了

本帖最后由 paulhyde 于 2014-9-15 09:41 编辑 我们要使用的芯片是:ET13X211作为接收 ET13X221作为发送,电路如图所示 接收电路为: 主程序流产图如下: 详细信息在附件。 [ 本帖最后由 njlianjian 于 2009-9-3 09:15 编辑 ] &nbs ...…

查看全部问答∨

收录的印制电路专业词汇中英文对照 (非常有用的)

一、 综合词汇 1、 印制电路:printed circuit 2、 印制线路:printed wiring 3、 印制板:printed board 4、 印制板电路:printed circuit board (PCB) 5、 印制线路板:printed wiring board(PWB) 6、 印制元件:printed component 7、 印 ...…

查看全部问答∨

mp3播放器在wince下播放歌曲时,暂停后无法继续播放

   mp3的播放器采用标准的wince api函数来编写的,在wince环境下,能够正常播放、暂停和停止播放,但是在暂停后无法继续播放。具体原因是在暂停后,无法获取暂停时MP3播放的位置。在IMediaSeeking类中,GetCurrentPosition函数获取的播放 ...…

查看全部问答∨

一个很邪门的问题

我帮别人做个读IO口,然后通过串口发出去的程序,用PC调试正常,怎么试怎么好,但是将单片机接到终端设备上去,终端收到的数据出错,但是如果将这个数据发给一台pc,单片机将数据发给pc,然后pc用相同的串口设置将收到数据发给设备,则设备接收数据 ...…

查看全部问答∨

mov eax,cr0

我在DOS下怎么一: MOV EAX,CR0 OR EAX,1 MOV CR0,EAX 就重启呢?…

查看全部问答∨

请教ST7LITEU05的PWM功能

用如下代码软件仿真,A0口不输出10K的PWM波,大哥看看哪里不对?试了很多了,PWM不工作。void main (void){// Set internal RC clock    RCCR = RCCRH0;     ...…

查看全部问答∨

2530 + 2591的硬件设计

TI的参考设计中2591的三个电源端都有TLIN inductor,这个TLIN inductor可以不要的吗?还有就是这个TLIN不知道什么意思。…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved