首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 利用FPGA加速分布式计算(2)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
利用FPGA加速分布式计算(2)
发短消息
加为好友
yuyang911220
当前离线
UID
1029342
帖子
9914
精华
0
积分
4959
阅读权限
90
在线时间
286 小时
注册时间
2014-5-22
最后登录
2017-7-24
论坛元老
UID
1029342
性别
男
1
#
打印
字体大小:
t
T
yuyang911220
发表于 2015-8-21 09:41
|
显示全部帖子
利用FPGA加速分布式计算(2)
客户端软件
,
存储器
,
定时器
,
接口
,
通信
计算线程将输入- 结果数据集的地址发送到 PRR 外设的从接口,并启动PRM 的自动数据集处理功能。管理结构为每个数据集提供这些地址,并在确保结果数据完全可用后设置“完成”标志。在目前的客户端软件概念版本中,计算线程和发送线程通过该结构通信,由发送线程反复检查完成位, 并将lwip_write() 调用存储在存储器中的结果。
在测试 SoC 客户端时,我们发现如果在 PRR 重配置过程中启用全部中断,Xilkernel 的定时器会产生调度函数访问 MicroBlaze,使重配置过程随机发生卡住的状况。如果禁用全部中断,或在没有 Xilkernel 的支持下,对SoC 客户端的 MicroBlaze 处理器使用独立的软件模块,就不会发生这种情况。
配备例化PRM 的总线主控外设
为在 PRM 和外部存储器之间实现自控激励数据和结果的交换,我们将总线主外设构建为一个带数据路径和控制路径的处理器元件(如图 4 所示)。在数据路径中,我们在两个深度均为16 个字的 FIFO 模块之间嵌入 PRM接口,以补偿通信和数据传输延迟。数据路径的两个 FIFO 均直接连接到PLB 的总线主接口。这样,我们通过有限状态机 (FSM) 的直接数据传输,大幅降低时间。由于不采用软件,所以 MicroBlaze 的寄存器文件中不发生中间数据存储。本 RISC 处理器的“加载- 存储”架构一直需要占用两个总线传输周期,用于从某个地址加载 CPU 寄存器,然后将寄存器的内容存储到另一个 PLB 连接的设备。由于从 MicroBlaze 到存储器控制器的DXCL 数据高速缓存链路构成 PLB 的旁路,因此这些“加载- 存储”周期在时序上不能得到改善。这是因为接收到的数据和发送的计算结果都是逐字一次性处理,没有发挥高速缓存的作用。由此 PRR 外设的活动与 MicroBlaze 主软件的处理脱钩,因而 PRR 数据传输不会导致更多的 Xilkernel 环境切换。但仍然不可避免地出现两个主设备竞争总线访问的情况。
外设的从接口含有四个基于软件驱动的寄存器,可为控制路径提供输入和输出数据集的起始地址和终点地址。另一个软件寄存器为 FSM 设定“起始”位,用于初始化主数据传输周期。完整的数据处理周期的状态经第五个软件寄存器的地址提供给客户端软件。
根据控制路径的 FSM 的状态图可以看出,应该采取让到 PLB 的写入周期优先的策略(图5)。从 OUT_FIFO 提取数据优先于向 IN_FIFO 写入数据,防止 OUT_FIFO 为满时,阻止 PRM 处理算法。读取或写入外部存储器可交替进行,因为每次只能使用一种总线访问方式。当来自客户端的计算线程的软件复位启动 FSM(图 3)时,第一件事就是从外部存储器读取(状态 READ_REQ)。自此,总线主设备就受状态 STARTED 提供的转换条件所提供的决策逻辑的控制(表 1)。
Mealy FSM 输出(标记Exit/)让地址计数器在总线传输完成时递增。这里两个计数器都直接导入到 FSM代码中。一般情况下我们倾向于将定时器和地址计数器分开实现为仅用FSM 输出使能的单独时钟进程,以便让计数器的保持小规模的转换逻辑以及尽量避免将多路复用器输入用于计数器状态反馈。对于此点,XST 综合编译器的结果将 RTL 原理图清楚地体现为并行于可加载计数器的 FSM 抽象,其中的时钟使能输入由预期状态解码逻辑驱动。尽管行为级的 VHDL编码方式更容易让人理解,使用 FPGA资源和简单原语也不会影响功能。
用 PLANAHEAD 设置动态部分
FPGA 中静态和动态部分的配置这一设计流程是一个复杂的开发过程,需要用 PlanAheadTM 物理设计约束工具进行多步操作。第一步就是给在ML505 开发板上实现的由 PetaLinux驱动的动态重配置平台编写设计流程脚本。[6] 就当前迭代而言,将 PRR直接集成到外设的用户逻辑中的设计步骤与过去通过添加总线宏和器件控制寄存器(DCR) 用作 PRM 的 PLB接口、添加 PLB-DCR 桥接器实现总线宏的做法相比更实际。
下面的代码摘自 PlanAhead 项目的 UCF 文件,说明我们如何使用AREA_GROUP 约束确定动态部分的大小和位置:
内部的部分重配置区域的命名方法通过为其指定实例名 PRR,并将实例名相连(prm_interface.vhd)。对我们希望囊括在所需的 PRR 中的全部 FPGA 资源而言,我们用设置左下方坐标和右上方坐标的方法来划定一个矩形区域。
这种特殊的方法只能覆盖 Slice和 BRAM,因为可用的 DSP 元件属于专用时钟区域,归多端口存储器控制器 (MPMC) 设计使用(表 2)。
为避免 ISE® 生成的 PRM 网表使用专属资源,我们将综合选项设置为:dsp_utilization_ratio = 0;use_dsp48 = false;iobuf = false。最后,从 FPGA 编辑器观察到静态部分的布局完全与 PRR 分开,PRR 在本例中占用的资源极少(图 6)。
收藏
分享
评分
继承事业,薪火相传
回复
引用
订阅
TOP
返回列表
MCU 单片机技术
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议