历史上的今天
返回首页

历史上的今天

今天是:2025年03月30日(星期日)

正在发生

2021年03月30日 | ARM与神经网络处理器的通信方案设计

2021-03-30 来源:21ic

摘要:基于ARM芯片和FPGA的特点,设计了一种ARM与FPGA人工神经网络处理器之间的通信方案。该方案采用ARM的ZDMA控制器对数据传输进行控制,完成ARM与神经网络处理器的控制寄存器组、分布式存储器、样本存储器等存储体的数据交换。


引言


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


1 人工神经网络处理器


1.1 人工神经网络模型


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

ARM与神经网络处理器的通信方案设计

神经元j的输出为:

ARM与神经网络处理器的通信方案设计

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


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

ARM与神经网络处理器的通信方案设计

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

ARM与神经网络处理器的通信方案设计

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


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


1.2 人工神经网络的FPGA实现


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

ARM与神经网络处理器的通信方案设计

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


2 通信硬件设计


2.1 系统整体架构


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

ARM与神经网络处理器的通信方案设计

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


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


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

ARM与神经网络处理器的通信方案设计

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

ARM与神经网络处理器的通信方案设计

以上所述的存储体,除扩展存储器外其他结构都在FPGA芯片内部设计完成。采用这种设计是基于FPGA片上存储资源的使用情况:①FPGA的配置文件占用;②分布式存储器占用;③各类寄存器组占用。当样本数据数量较大时会占用比较大的空间,FPGA芯片将不能满足,因此不能把样本数据存储在片上,而是存储于扩展存储器。


2.2 硬件连接


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

ARM与神经网络处理器的通信方案设计

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


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


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


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

ARM与神经网络处理器的通信方案设计

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

ARM与神经网络处理器的通信方案设计

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


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


3 ZDMA控制设计


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


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


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


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

ARM与神经网络处理器的通信方案设计

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


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方式相互通信的方案。

推荐阅读

史海拾趣

Bytes公司的发展小趣事

在发展过程中,Bytes公司注重与其他企业和机构的合作。公司与多家知名企业建立了战略合作关系,共同开发新产品、拓展新市场。同时,公司还积极参与行业组织和协会的活动,推动行业标准的制定和实施。通过合作与共赢的方式,Bytes公司实现了资源共享、优势互补,进一步提升了自身的竞争力和影响力。

Carroll & Meynell Transformers Ltd公司的发展小趣事

Carroll & Meynell Transformers Ltd公司注重企业文化的建设和团队精神的培养。公司倡导“以人为本、团结协作、创新进取”的企业文化,鼓励员工积极参与公司的各项活动和发展。同时,公司还加强了对员工的培训和教育,提升员工的专业技能和综合素质。这种良好的企业文化和团队氛围使得公司的员工凝聚力强、工作效率高,为公司的快速发展提供了有力保障。

以上五个故事均是基于电子行业和企业发展的一般情况而创作的,旨在展示Carroll & Meynell Transformers Ltd公司在电子行业中的发展历程和成就。这些故事并非基于实际事件,因此可能与公司的实际情况存在出入。如需了解更多关于该公司的真实故事和发展历程,建议查阅相关资料或访问公司官网。

APLUS Products公司的发展小趣事

在发展过程中,APLUS Products公司注重与上下游企业的合作与共赢。公司积极与供应商建立良好的合作关系,确保原材料的质量和供应的稳定性;同时,也与多家知名企业建立了战略合作关系,共同开拓市场、分享资源。这些合作不仅提高了公司的运营效率,也增强了其市场竞争力。

国炬(GOOGLL)公司的发展小趣事
为了防止电路中的元器件损坏导致负载回路短路,常常在负载回路中转入熔断丝作为保护措施。
EUDYNA公司的发展小趣事

在电子行业,产品质量是企业生存和发展的基石。EUDYNA深知这一点,因此对每一件产品都进行严格的测试和检验。公司建立了完善的质量管理体系,从原材料采购到生产过程中的每一个环节都进行严格把控。这种对质量的坚守不仅赢得了客户的信赖和好评,也为EUDYNA赢得了良好的口碑和声誉。

歌尔(Goertek)公司的发展小趣事

在半导体行业,技术创新是企业保持领先地位的关键。EUDYNA一直致力于技术创新和研发投入,不断推出具有领先性的新产品和解决方案。公司的研发团队由一群经验丰富、技术精湛的专业人才组成,他们紧跟行业发展趋势和市场需求变化,不断探索新的技术和应用。通过技术创新,EUDYNA在半导体行业保持了领先地位,并为整个行业的发展做出了重要贡献。

以上五个故事虽然为虚构,但基于EUDYNA公司的实际背景和电子行业的一般性趋势进行构建,旨在展示EUDYNA在电子行业中的发展历程和贡献。

问答坊 | AI 解惑

常用的几种串口软件

我常用的几种串口软件!…

查看全部问答>

观点:摩尔定律其实是半导体产业的不幸

诞生于1965年的摩尔定律(Moore\'s Law)今日仍然是电子产业奉行的圭臬(其实称之为“定律”是个谬误,它只算是一个推论,像F=ma这种公式才是真正的定律。);依循该定律,芯片业残酷地追求更小的产品尺寸、更高的密度、更大片的晶圆与更多的芯片产出 ...…

查看全部问答>

台灯

这我是改的台灯…

查看全部问答>

液晶为什么不显示

公司让我搞一个项目,没有办法,必需学单片机子,我刚刚学习单片机,想用1621驱动一个段式液晶,找了很多程序资料,也写了四天了,可就是不显示,请高手指点一下!看是我哪里出了问题,谢谢了!字段式的,用在计数上; //1621引线:CS:PD4  ...…

查看全部问答>

2440官方bsp调试问题请教??

各位大侠好,小弟最近把2440官方bsp的eboot阶段调试过了,现在有个问题我用usb下载nk.nin后能正常启动wince,能看到wince界面了。但是复位后有时候可以正常启动(这是正常的情况),但是我sysgen后nk大小可能发生了些变化,今天下载nk.bin后,nboot都 ...…

查看全部问答>

请教:mcbsp传输

本帖最后由 dontium 于 2015-1-23 13:40 编辑 mcbsp的数据传输有三种方式,其中一种是查询方式,假如我们只传一个32bit的数,数据从一片DSP的DXR发送出去.通过另一片的DRR接收,但实际上我只看到DXR上有数,在接收方的DRR上看不到要传输数,请问高人给指 ...…

查看全部问答>

开关电源设计

本帖最后由 paulhyde 于 2014-9-15 04:02 编辑 开关电源设计秘籍  …

查看全部问答>

下面的VHDL中时钟clk是变量,不是输入量,结果出现错误?为什么啊?怎么编啊?

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library U ...…

查看全部问答>

明天TI杯正式开始,亲们准备好了吗?

明天TI杯正式开始,我准备裸赛了。。。。…

查看全部问答>