首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
通信技术
»
无线技术
» 神级经典设计案例:用ARM和FPGA搭建神经网络处理器通信方案
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
神级经典设计案例:用ARM和FPGA搭建神经网络处理器通信方案
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2015-12-7 14:57
|
只看该作者
神级经典设计案例:用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)的请求来启动。[3]
在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的方式下进行。每一个阶段完成后都会进入中断,提示本阶段完成并进行下一步操作。
图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方式相互通信的方案。
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议