lcytms
发表于 2017-10-18 10:06:29
课题组前期与中科院自动化所中法实验室(LIAMA)和法国INRIA Scilab组织在科学计算算法转换到硬件描述语言方面有着长期合作基础,合作开发Scilab/Scicos-HDL软件系统已经数年,在开源领域有一定的知名度。
本项目设计把科学计算软件与FPGA技术可重构系统相结合,构建出低成本和易于使用的高性能科学计算平台。
本系统研究实现了基于FPGA可重构计算技术的科学计算平台系统原型,实现了Scilab-FPGA运算任务的协同工作,对于广大用户,整个系统透明,将其中的数学算法转换为数字电路硬件逻辑的理论方法和软件,开发与Scilab系统相互通信交互的FPGA硬件模块,实现Scilab/scicos-HDL与FPGA硬件模块联合仿真,在高性能科学计算领域,有较强的应用价值。
lcytms
发表于 2017-10-18 10:07:09
1.4研究意义
探索和建立数学算法向硬件逻辑转换的理论方法,对于当前的可重构计算、高速信号处理、FPGA应用设计乃至IC 设计都有着重要意义 ,其关键的问题在于给用户提供数学算法向硬件逻辑转换的工具,以此来帮助用户更加快速的建立应用。
基于FPGA的可重构高性能计算将有可能大大降低对于超级计算机的需求,大量的科学计算问题将有可能提供FPGA的硬件逻辑得以实现 .
同时 ,基于FPGA的可重构高性能计算系统的硬件成本相比高性能超级计算机来说较低,更加有利于普及和推广。
lcytms
发表于 2017-10-18 10:09:14
2设计与实现
本章来说明对于项目整个系统的设计结构进行了说明,并且说明了目前实现的部分。
2.1总体设计
2.1.1总体设计图
系统中 Scicos-HDL模块负责 硬件电路的设计、仿真和HDL代码输出。
当用户完成了一个 硬件设计后 ,可以先行在Scicos-HDL中进行软件仿真,仿真完成后,用户可以导出VHDL、Verilog、SystemC这三种硬件描述语言的代码(可综合)。
导出的HDL代码经过用户手动处理,下载到NETFPGA板子上后,通过千兆以太网接口,与Scicos-HDL进行软硬件联合仿真。
在NETFPGA板子上,通过以太网连接MicroBlaze处理核心,使用HTTP协议进行数据交换Scicos-HDL导出的代码以用户自定义IP的方式加入到系统中。
zhangyukun
发表于 2017-10-18 10:09:16
基于NETFPGA的可重构科学计算平台
lcytms
发表于 2017-10-18 10:13:04
2.1.2技术发展路线
本节来阐述项目技术的基本原理和发展的技术路线。
(1)数学算法转换成硬件逻辑原理
图形化的算法描述和仿真是一种常见的算法表达方式,其也最接近于实物性质的描述,目前计算机软件中采用图形化仿真方法的很多,如MatlAB,SystemView、labView等.
本研究设计了一套基于硬件知识的图形化算法仿真机制,使得用户在软件中根据算法需要画出算法流程图,由系统处理后形成硬件逻辑描述,其基本的结构描述如下:
用途 计算机程序结构 FPGA结构
加法 + 运算 硬件加法器
乘法 X 运算 硬件乘法器
循环结构 FOR 循环 计数器
判断结构 IF 数值比较器+数据选择器
递增结构 i++ 加法计数器
递减结构 i-- 减法计数器
矩阵加法 多条程序实现 矩阵加法器
矩阵乘法 多条程序实现 矩阵乘法器v
赋值 赋值语句 寄存器
功能模块 函数 算法硬件模块
数组 数组 RAM
计算机程序结构与FPGA程序结构对比
通过可以看出在程序设计中能够实现的程序基本结构在FPGA均有对应的硬件实现。本系统中数学算法转换成硬件逻辑是通过建立图形化运算机制基础上:添加FPGA流水线运算基本元件、使用图形化方法连接各个元件构成算法逻辑图、把算法逻辑图转换成为可综合HDL描述这三个步骤进行完成。
lcytms
发表于 2017-10-18 10:25:41
本帖最后由 lcytms 于 2017-10-18 10:27 编辑
(2)协同工作中FPGA模块并行计算
FPGA运算与计算机运算的一个很大的区别在于FPGA中的各个运算单元都是实际硬件存在而计算机运算中的各个运算单元主要是在软件系统中建立顺序执行,因此FPGA可以实现所有运算单元的协调并行计算,但是FPGA并不能自动完成并行计算任务,这需要采用流水线技术来完成。
流水线处理源自现代工业生产装配线上的流水作业,是指将待处理的任务分解为相对独立的、可以顺序执行的,而又相互关联的一个个子任务.图1 是采用流水线技术的一个指令集的操作过程,我们将某一操作分为4 个子任务:取指令I1 ,译码I2 ,取操作数I3 和运算I4 ,假如每个操作执行的时间均为T ,则执行4 个操作的执行时间为4 T ,将这4 个子任务在时间上重叠,用4 个子部件来完成,相应的4 个子部件连接成串行方式,每个子部件执行的时间为T ,每隔T 时间就可输出一个操作处理结果,平均速度提高了4 倍,在加入适当的转移控制之后,即成为流水线操作的工作方式.
采用流水线技术的一个指令集的操作
lcytms
发表于 2017-10-18 10:29:23
采用流水线技术,可以大大提高系统运行速度,特别适合于需要进行大批量简单运算的场合,如数字信号处理中的卷积操作、FIR 或FFT滤波器等。
本研究中作为算法流程机制的FPGA模块均采用流水线结构,其基本结构如下:
基本算法流程模块
lcytms
发表于 2017-10-18 10:30:16
一个基本的算法流程模块采用前寄存器和后寄存器,使得系统模块的工作只取决于自身的运算是否完成,在整体中相对独立,系统中有多个此类算法模块是独立并行工作。
lcytms
发表于 2017-10-18 10:31:58
(3) FPGA-PC协同科学计算
此项包含2个方面的内容:
一个是FPGA算法系统中本身就有支持科学计算的算法模块;
一个是FPGA运算系统可以和计算机端的科学计算系统连接起来完成FPGA-PC协同科学计算工作。
对于第一个方面本研究在系统的元件库中设置了矩阵运算元件库在完成基本的矩阵运算:矩阵运算是科学计算中的一个重要方法,要实现高性能的科学计算在系统内部就必须配置多种硬件矩阵运算处理模块,如矩阵硬件加法器、乘法器。
对于第二个问题,本研究使用netfpga硬件系统,与开源的科学计算软件Scilab进行接口,实现FPGA运算系统与科学计算系统协同工作。
本研究中系统软件基于Scilab/Scicos开发,完成三个主要功能:
使用Scilab/Scicos进行图形化算法设计;
把图形化数学算法转换成为硬件逻辑的功能;支持 VHDL、Verilog、 SystemC 三种硬件描述语言,生成的硬件逻辑可综合;
与NETFPGA硬件系统实现 FPGA-PC协同任务运算;
lcytms
发表于 2017-10-18 10:34:00
2.2软件设计
软件模块的主体功能是硬件设计、仿真、输出、软硬件联合运算。
软件模块的结构如下
软件结构图