fpga map测试_一种基于SELECTMAP的可配置且高速的FPGA配置电路及实现方法与流程
本发明属于计算机工程领域,与SoC密切相关。具体涉及一种FPGA配置电路及实现方法。
背景技术:
随着大数据的发展,计算能力的提升,人工智能近两年迎来了新一轮的爆发。2016年谷歌AlphaGo赢得了围棋大战后,人工智能在产业界和资本圈引起了高度关注,成为新的风口。
在人工智能时代,人们对计算能力的需求有指数级的提高,计算能力的要求超过了摩尔定律。随着互联网用户的快速增长,数据体量的急剧膨胀,数据中心对计算的需求也在迅猛上涨。诸如深度学习在线预测、直播中的视频转码、图片压缩解压缩以及HTTPS加密等各类应用对计算的需求已远远超出了传统CPU处理器的能力所及。除此之外,未来在激光雷达、无人机、无人驾驶、智能机器人等终端设备方面对计算能力也会有极大的提升。
另一方面,摩尔定律正在失效,传统CPU架构下计算能力的提升开始滞后于摩尔定律。近几年半导体技术改进达到了物理极限,电路越来越复杂,每一个设计的开发成本高达数百万美元,数十亿美元才能形成新产品投产能力。
因此,计算能力的需求供给出现了一个巨大的缺口。一方面处理器性能再无法按照摩尔定律进行增长,另一方面数据增长对计算性能要求超过了按“摩尔定律”增长的速度。处理器本身无法满足高性能计算应用软件的性能需求。
目前,为了弥补计算能力的缺口,许多公司正在积极开发能够实现人工智能的高效硬件平台。在这个背景下CPU+FPGA架构应运而生。这种异构架构融合了CPU和FPGA各自的优点,以CPU为核心的SoC为FPGA提供高性能的硬核资源,特别是CPU处理能力。而FPGA作为并行架构的处理器非常适合大规模数据的处理,极大地提升了硬件平台的计算能力。同时FPGA的可编程性也为CPU提供扩展空间和可重构资源,使其拥有更高的单位功耗性能、更低时延和更快加速性能,因此在包括智能视觉分析、大数据以及云计算等领域得到了大规模应用。
在CPU+FPGA架构中,一般通过CPU以及相应的配置电路来对一块或多块FPGA进行配置。然而伴随着FPGA内实现的算法的复杂度日益增加,FPGA的配置时间也越来越长。目前云计算平台中的FPGA配置甚至需要多个小时才能完成。因此CPU+FPGA中的FPGA配置时间问题日益严重地制约着人工智能、大数据和云计算等新型领域的发展。
技术实现要素:
针对技术背景中提到的FPGA配置时间过长这一问题,设计了一种可配置的,并且能够显著提高FPGA配置速度的配置电路,该配置电路具有高性能,高可靠性等特点,并且其功能已经在原型验证平台和后仿真平台上通过了验证。
本发明的另一个目的在于提供基于SELECTMAP的可配置且高速的FPGA配置电路的实现方法。
本发明的技术方案如下:
一种基于SELECTMAP的可配置且高速的FPGA配置电路,由以下模块实现:
(1)、高速AMBAAHB接口模块,该模块用以采样AHB总线上的控制、地址和数据信号,并返回相应的控制信号和数据信号。
(2)、寄存器配置模块,该模块由多个配置寄存器和状态寄存器构成。其中配置寄存器用以配置主控制器的各项功能,使得本发明可以适用于各种不同的应用场景。状态寄存器用以寄存主控制模块中的各个状态所对应的数值,通过读取这些寄存器,方便模块的调试与信息的打印。
(3)、缓存模块,该模块作为核心模块之一,用来缓存从AHB系统中输入的FPGA配置数据,使得SELECTMAP接口和AHB系统可以进行异步操作,提高了配置电路的灵活性和稳定性。
(4)、主控制模块,该模块为本配置电路的核心模块,用于产生满足SELECTMAP时序要求的PROGRAM_B、INIT_B、CSI_B、RW_B信号,同时读取缓存模块中的数据并进行移位输出并根据相应的数据信号生成CCLK信号,使得总线的宽度可以灵活配置,并实现配置数据的非连续传输,节省芯片引脚并增加配置电路的可靠性。
基于SELECTMAP的可配置且高速的FPGA配置电路的实现方法中,包含以下步骤:
(1)、上电后配置电路的初始态为空闲状态,在此状态下缓存模块的状态为空状态。主配置模块循环检测配置寄存器模块中PROGRAM_B状态使能寄存器的值,若检测到此寄存器的值为1,则进入步骤(2)。
(2)、配置电路的主控制器读取配置寄存器模块中PROGRAM_B计数寄存器,通过此寄存器中的数值决定PROGRAM_B低电平负脉冲信号的宽度。信号宽度为PROGRAM_B计数寄存器的数值与时钟周期的乘积。同时,进入步骤(3)。
(3)、主控制器模块从FPGA接收INIT_B信号,并做出判断:若检测到INIT_B信号为低电平,则进入步骤(4);否则继续执行步骤(3)。同时INIT_B超时计数寄存器中的数值,并对此数值在每个时钟周期下减1,当此数值为0且INIT_B信号仍然为1时,将TIME_OUT_FLAG信号拉高,并输出到配置寄存器模块中相应的状态寄存器中。此步骤的目的是为了确保所配置的FPGA初始化成功。
(4)、主控制器读取等待状态计数寄存器,通过此计数器的数值与时钟周期决定在等待状态的停留时间。在等待状态停留一段时间之后,执行步骤(5)。
(5)、配置电路进入数据移位状态,主控制模块将从AHB系统中输入并存储在缓存模块的数据位宽为32bit的FPGA配置数据以字为单位读入相应的32bit寄存器中,并将此寄存器中的数据分四次移位输出到FPGA的SELECTMAP从接口,每次数据大小为1字节。同时配合CCLK产生状态机生成符合要求的CCLK信号,信号上升沿位于每字节数据信号的中间。当没有数据输出到FPGA中时,不产生CCLK信号,从而保证了FPGA的非连续配置。当进行完4次移位输出后,进入步骤(6)。
(6)、配置电路进入数据检查状态。在此状态下,检查缓存模块的状态并进行判断。若缓存模块处于非空状态,则重复步骤(5)。若缓存模块处于空状态,则停留在步骤(6)。
附图说明
图1为本发明配置电路的结构示意图。
图2为本发明配置电路的实现方法流程图。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
如图1所示为本发明配置电路的结构示意图。本配置电路内部包含四个模块:高速AMBAAHB接口模块、寄存器配置模块、缓存模块和主控制模块。其中,寄存器配置模块中的配置寄存器种类包括:软复位寄存器、数据寄存器、Program_B状态使能寄存器、Program_B计数寄存器、CCLK分频寄存器、INIT_B超时计数寄存器、CCLK等待计数寄存器、设备ID寄存器。由图可知配置电路通过高速AMBAAHB接口模块与已CPU为核心的AHB系统相连接,同时通过主控制模块输出符合SELECTMAP时序要求的控制信号和数据信号。
应用时,配置电路通过高速AMBA AHB接口模块与已CPU为核心的AHB系统相连接,从而使得用户可以通过CPU对配置电路中的寄存器配置模块中的配置寄存器和状态寄存器进行写入和读取。
应用时,配置电路通过FPGA的SELECTMAP从设备管脚对FPGA进行配置。应用时,配置电路通过时钟管脚接受AHB系统的时钟信号,并进入工作状态。如图2所示为本发明配置电路实现方法流程图。本发明配置电路主要包括6中工作状态,包括空闲状态、PROGRAM_B状态、INIT_B状态、等待状态、移位输出状态和数据检查状态。本发明屏配置电路的实现方式通过状态机实现,具体实现过程如下:
步骤(一)、上电后配置电路的状态处于空闲状态。此时根据FPGA的时序手册以及具体使用情况,通过CPU对配置电路中的寄存器配置模块的各个相应寄存器进行配置。通过配置PROGRAM_B状态使能寄存器,使得配置电路的状态可以从空闲状态进入PROGRAM_B状态。通过配置PROGRAM_B计数寄存器,产生满足FPGA要求的负脉冲初始化信号。通过配置CCLK分频寄存器,产生满足芯片PAD频率要求的配置时钟信号。通过配置INIT_B超时计数寄存器,若配置电路从FPGA接收的INIT_B信号在规定时间内不拉低,则拉高TIME_OUT_FLAG信号拉高,并输出到配置寄存器模块中相应的状态寄存器中。当CPU从状态寄存器中读取到TIME_OUT_FLAG信号为高电平时,则表示FPGA没有初始化成功,便于用户调试。通过配置等待计数寄存器,确定等待状态的持续时间,满足应用需求。本配置电路可以同时配置多达8块FPGA,通过配置设备ID寄存器,选定要配置的FPGA的编号。在此状态下缓存模块的状态为空状态。主配置模块循环检测配置寄存器模块中PROGRAM_B状态使能寄存器的值,若检测到此寄存器的值为1,则进入步骤(二)。
步骤(二)、配置电路的主控制器读取配置寄存器模块中PROGRAM_B计数寄存器,通过此寄存器中的数值决定PROGRAM_B低电平负脉冲信号的宽度。信号宽度为PROGRAM_B计数寄存器的数值与时钟周期的乘积。当完成PROGRAM_B低电平负脉冲信号的发送时,进入步骤(三)。
步骤(三)、配置电路进入INIT_B状态。在此状态下主控制器模块通过专用引脚从FPGA接收INIT_B信号,并做出判断:若检测到INIT_B信号为低电平,则进入步骤(四)。否则继续执行步骤(三)。同时INIT_B超时计数寄存器中的数值,并对此数值在每个时钟周期下减1,当此数值为0且INIT_B信号仍然为1时,产生TIME_OUT_FLAG信号并将此信号拉高,并输出到配置寄存器模块中相应的状态寄存器中。CPU在传输配置数据之前先循环读取此状态寄存器中的值,若此状态寄存器的值为1,则报错。此步骤的目的是为了确保所配置的FPGA初始化成功。
步骤(四)、配置电路进入等待状态,在此状态下主控制模块读取等待状态计数寄存器中的数值,通过此计数器的数值与时钟周期决定在等待状态的停留时间。在等待状态停留一段时间之后,执行步骤(五)。此步骤的目的是为了确保满足不同应用场景的要求。
步骤(五)、配置电路进入数据移位状态,通过CPU将配置数据写入寄存器配置模块中的数据寄存器,一个周期后寄存在数据寄存器中的配置数据被写入缓存模块中,缓存模块的状态变为非空状态。检测到缓存模块的状态为非空状态后,配置电路进入数据移位状态,将从AHB系统中输入并存储在缓存模块的数据位宽为32bit的FPGA配置数据以字为单位写入相应的32bit寄存器中,并将此寄存器中的数据分四次移位输出到FPGA的SELECTMAP从接口,每次数据大小为1字节。同时配合CCLK产生状态机生成符合要求的CCLK信号,CCLK信号上升沿位于数据信号的中间。当没有数据输出到FPGA中时,不产生CCLK信号,从而保证了FPGA的非连续配置。当进行完4次移位输出后,进入步骤(六)。
步骤(六)、当主控制器对长度为32bit的配置数据移位输出完成后,配置电路进入数据检查状态。在此状态下,检查缓存模块的状态并进行判断。若缓存模块处于非空状态,则重复步骤(五)。否则,若缓存模块处于空状态,则停留在步骤(六)。FPGA产生的DONE信号通过专用引脚写入寄存器配置模块中相应的状态寄存器中,CPU循环读取此状态寄存器中的值。
以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
fpga map测试_一种基于SELECTMAP的可配置且高速的FPGA配置电路及实现方法与流程相关推荐
- Mysql出租车轨迹的分析_一种基于出租车轨迹数据的交通出行共现现象的可视化分析方法与流程...
本发明涉及交通数据可视化领域,尤其涉及一种基于出租车轨迹数据的交通出行共现现象的可视化分析方法. 背景技术: :城市中人类移动规律中的共现现象是指来自两个区域的人们在同一个时间段内访问同一个城市区域. ...
- 度量相似性数学建模_一种基于粒子群位置更新思想灰狼优化算法的K-Means文本分类方法与流程...
技术特征: 1.一种基于粒子群位置更新思想灰狼优化算法的k-means文本分类方法,其特征在于:包括以下步骤: s1:对文本数据进行预处理,得到预处理后文本数据: s2:采用余弦角度为相似性度量,分别 ...
- matlab 双边沿滤波,一种基于数字PWM发生器的左增长双边沿UPWM信号频谱估计方法与流程...
本发明涉及数字D类音频功放领域,尤其涉及一种由数字音频信号调制得到的左增长双边沿均匀采样脉冲宽度调制信号的频谱估计方法. 背景技术: 数字D类音频功放的电源效率相比A类.B类和AB类等线性音频功放较高 ...
- android流程点击开机键熄屏,一种基于android系统的灭屏状态下指纹解锁加速亮屏方法与流程...
本发明涉及android系统解锁显示方法,尤其涉及一种基于android系统的灭屏状态下指纹解锁加速亮屏方法. 背景技术: 目前,随着指纹技术越来越普及,很多android系统设备都带有指纹外设,特别 ...
- 一种基于UE4平台多人交互3D家装设计系统及使用方法与流程
本发明涉及一种基于UE4平台多人交互3D家装设计系统及使用方法,属虚拟现实技术领域. 背景技术: 目前随着虚拟现实技术的飞速发展,当前在进行家装实际工作中,为了提高设计方案对用户展示的便捷性和准确性, ...
- 导向滤波算法 java_一种基于双通道先验和侧窗导向滤波的单幅图像去雾方法与流程...
本发明属于计算机图像处理的领域,用于图像或者视频去雾等相关领域:具体涉及一种基于双通道先验和侧窗导向滤波的单幅图像去雾方法. 背景技术: 图像采集过程中,由于雾天的影响,使得景物的能见度大幅降低,再加 ...
- 角谱法 matlab,一种基于部分角谱法的快速全息图生成和高质量再现方法与流程...
本发明涉及一种全息显示领域,特别是全息图的生成和再现方法. 背景技术: 全息显示能提供给观看者需要的所有信息,因此被公认为最有前景的三维显示技术.但是,目前的全息显示技术依然有一些问题亟待解决.其中之 ...
- 人声抑制 深度学习_一种融合骨振动传感器和麦克风信号的深度学习语音提取和降噪方法与流程...
本发明涉及电子设备语音降噪技术领域,更具体地说,涉及一种融合骨振动传感器和麦克风信号的深度学习降噪方法. 背景技术: 语音降噪技术是指从带噪语音信号中分离出语音信号,该技术拥有广泛的应用,通常有单麦克 ...
- python 视频抽帧_一种用于超高帧频图像流到标准模拟视频流转换的抽帧方法与流程...
本发明属于图像处理技术领域,涉及一种用于超高帧频图像流到标准模拟视频流转换的抽帧方法. 背景技术: 在红外成像制导系统中,随着导弹与目标的距离接近,目标逐渐增大形成不稳定的斑状,最后以很快的速度充满整 ...
最新文章
- CNN光流计算--FlowNet: Learning Optical Flow with Convolutional Networks
- linux AS 5 DNS 配置中的小错误
- 手机型号大全资料_电子元器件知识资料大全
- 不用光盘可破解电脑系统密码
- tomcat详细日志配置
- 将apache的htaccess转换为nginx的重写规则
- 文献管理三剑客之Mendeley最新版使用小记2
- 软件开发中的需求种类
- Excel数据分析学习笔记(三)Excel常用数据分析工具(需要统计学基础)
- Android性能测试小工具Emmagee
- android 关闭进程 后台进程还在,为何有些安卓后台程序就是关不掉呢?
- 3500 vocabulary
- Win10完美运行红色警戒2的安装包和补丁
- 冰点还原 7.20.20.3398 For Win2003 支持2TB硬盘版下载,附KEY和修改方法
- 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问
- 如何添加RichFaces 3.3.x到Maven项目
- [机械键盘]Filco87 奶酪绿 FKBN87MRL/ECW2 开箱
- 保研面试中常见的英语问题有哪些?
- 如何理解数据科学的中的数据泄露(Data Leakage)
- Unity 烘焙问题
热门文章
- Dapr微服务应用开发系列4:状态管理构件块
- 接口幂等设计探索实践
- .NET Core全Linux开发体验分享
- 如何利用Serilog的RequestLogging来精简ASP.NET Core的日志输出
- 【复杂系统迁移 .NET Core平台系列】之界面层
- 使用Jenkins部署.Net Core遇到的几个坑
- 再多迷茫,不如静下来好好学习
- 聊一聊C# 8.0中的await foreach
- ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能
- SmartSql For Asp.Net Core 最佳实践