摘要:本文介绍了FPGA多路数据并行处理中所普遍遇到的序列传输与界面问题;提出了一系列具有普遍实际意义的处理方法,并以人工神经网络控制算法为例进行了软、硬件综合处理过程设计演示,从而为进一步推广FPGA的现代信息学、统计学数字处理技术开发提供了借鉴。
1 引言
FPGA 技术在国内外经过历时十余载的以硬件、系统及应用设计为主要内容的迅速发展 之后,其现代信息处理与控制技术的发展已开始崛起。显然,一系列以乘法和加法为主的现 代信息处理算法能够发挥FPGA 全并行算法的优势,然而,算法中反复遇到的数字信息在节 点与模块之间的序贯传递和交接,则给多路并行处理过程带来了时差和异步的问题。例如, 系统辨识[1]的最小二乘参数估计算法中,信息压缩矩阵与模型参数估计向量在并行地进行着 递推计算,而无数次循环的中间结果则需要进行首尾交接;人工神经网络[2]的训练与执行中 同一层的所有节点的各路输入在进行着并行的加权求和与活化函数的代入计算,但层与层之 间则需要进行节点间的数据交错传递;同样,Kalman 滤波[3]算法中的观测向量、状态向量、 控制向量与噪声向量都在相邻的两个时刻之间进行着数据传递。由于在同一层次上被并行地 执行的各路的行进速度并不相同,交接的过程就需要互相等待,整个过程就需要统一控制, 否则将会出现数据丢失或传输阻塞。
本文将从硬件结构与功能的Verilog 语言数据流描述的角度,逐层讨论问题的解决办法 。
2 FPGA 的数据传输接口
2.1 模块内的数据传输
在一个模块内,变量之间的数据传输接口的性质可分别用 reg(寄存功能,有延时性) 和wire(连线功能,无延时性)来定义。Reg 型常表示“always”(触发器)模块的指定信 号,前者由后者通过使用行为描述语句来表达逻辑关系。
而wire 型常表示“assign”关键字的制定组合逻辑信号。当输入输出信号类型默认时自 动定义为wire 型。wire 型信号可以用作任何方程式的输入,并且wire 型变量通常是用来表 示单个门驱动或连续赋值语句驱动的网络型数据。
2.2 模块间的数据传输
模块间的数据传输接口例如延时输出寄存器,它是一个使用了可控延时寄存器功能的AND 逻辑模块(记作AND_G2)的数据流描述如下:
该程序中AND_G2_TEST为顶层模块,AND_G2 作为一个单独的模块被顶层模块所调 用。通过综合控制,A、B 的输入信号达到同步。
3 FPGA-信息处理实例—简单人工神经网络设计
一个包括三个输入、单个输出、一个三节点隐含层的前向型人工神经网络结构如图1 所示。下面从多个角度讨论数据的处理与传输。
3.1 信息处理数学过程为:
3.2 算法的Verilog 数据流描述:
1)一个节点的模块:
2)顶层整体调用模块
3)信息传输界面问题
上述人工神经网络运算中不同层次间的数据交错序列式传输采用了如下方式:从输出到 输入、从输入到运算逻辑通过wire 定义的网线执行无延时传输;各节点输出通过reg 定义 为寄存器,使信号能实现各自异步计算而同步输出的效果,而输出的条件用always 进行检 测。逐层的交错传输采用顶层模块套用子模块的方式进行,同一层次的各节点的同类型运算 均并行操作,既节省了时间,又节省了模块。
4 结束语
通过网线、寄存器、锁存器、多层次模块套用等技术的应用与数学算法的变换处理,大 多数现代信息处理、统计学计算及控制过程的复杂算法都可以实现完全并行处理与序贯交错 传递的最佳时间性综合运行而体现其快速、递推、多维和实时性。 在Xilinx公司提供的 ISE10.1 设计工具软件平台上对LC3S400PQ205 型FPGA 产品进行上述简单前向型人工神经网 络的硬件结构数据流描述设计,得到的整体模块只占用了将近15 万个门(而整个芯片具有 40 万个门),完成一组采样值的全过程计算时间为16ms。加上FPGA 的在线实时可重构性, 使得该项技术可以在宇宙或环球航行、高空与深海测量、危险区或动物体非介入性试验等多 种领域的高科技信息处理与控制中发挥特殊作用。
本文作者创新点:提出了一个基于FPGA 的信息处理的实例:一个简单的人工神经网络应用Verilog 语言描述,该数据流采用模块化的程序设计,并考虑了模块间数据传输信号同 步的问题,有效地解决了人工神经网络并行数据处理的问题。(微计算机信息 王暄曹辉 马栋萍)