电子发烧友网 > 可编程逻辑 > 正文

如何使用OpenCL轻松实现FPGA应用编程

2020年07月16日 17:58 次阅读

对于一个开发人员,可能听说过 FPGA,甚至在大学课程设计中,可能拿 FPGA 做过计算机体系架构相关的验证,但是对于它的第一印象可能觉得这是硬件工程师干的事儿。

目前,随着人工智能的兴起,GPU 借助深度学习,走上了历史的舞台,并且正如火如荼的跑着各种各样的业务,从 training 到 inference 都有它的身影。FPGA 也借着这股浪潮,慢慢地走向数据中心,发挥着它的优势。所以接下来就讲讲 FPGA 如何能让程序员们更好友好的开发,而不需要写那些烦人的 RTL 代码,不需要使用 VCS,Modelsim 这样的仿真软件,就能轻轻松松实现 unit test。

实现这一编程思想的转变,是因为 FPGA 借助 OpenCL 实现了编程,程序员只需要通过 C/C++ 添加适当的 pragma 就能实现 FPGA 编程。为了让您用 OpenCL 实现的 FPGA 应用能够有更高的性能,您需要熟悉如下介绍的硬件。另外,将会介绍编译优化选项,有助于将您的 OpenCL 应用更好的实现 RTL 的转换和映射,并部署到 FPGA 上执行。

FPGA 概览

FPGA 是高规格的集成电路,可以实现通过不断的配置和拼接,达到无限精度的函数功能,因为它不像 CPU 或者 GPU 那样,基本数据类型的位宽都是固定的,相反 FPGA 能够做的非常灵活。在使用 FPGA 的过程中,特别适合一些 low-level 的操作,比如像 bit masking、shifting、addiTIon 这样的操作都可以非常容易的实现。

为了达到并行化计算,FPGA 内部包含了查找表(LUTs),寄存器(register),片上存储(on-chip memory)以及算术运算硬核(比如数字信号处理器 (DSP) 块)。这些 FPGA 内部的模块通过网络连接在一起,通过编程的手段,可以对连接进行配置,从而实现特定的逻辑功能。这种网络连接可重配的特性为 FPGA 提供了高层次可编程的能力。(FPGA 的可编程性就体现在改变各个模块和逻辑资源之间的连接方式)

举个例子,查找表(LUTs)体现的 FPGA 可编程能力,对于程序猿来说,可以等价理解为一个存储器RAM)。对于 3-bits 输入的 LUT 可以等价理解为一个拥有 3 位地址线并且 8 个 1-bit 存储单元的存储器(一个 8 长度的数组,数组内每个元素是 1bit)。那么当需要实现 3-bits 数字按位与操作的时候,8 长度数组存的是 3-bits 输入数字的按位与结果,一共是 8 种可能性。当需要实现 3-bits 按位异或的时候,8 长度数组存的是 3-bits 输入数字的按位异或结果,一共也是 8 种可能性。这样,在一个时钟周期内,3-bits 的按位运算就能够获取到,并且实现不同功能的按位运算,完全是可编程的(等价于修改 RAM 内的数值)。

3-bits 输入 LUT 实现按位与(bit-wise AND):

如何使用OpenCL轻松实现FPGA应用编程

注:3-bits 输入 LUT 查找表

我们看到的三输入的按位与操作,如下所示,在 FPGA 内部,可通过 LUT 实现。

如上展示了 3 输入,1 输出的 LUT 实现。当将 LUT 并联,串联等方式结合起来后就可以实现更加复杂的逻辑运算了。

传统 FPGA 开发

▍传统 FPGA 与软件开发对比

对于传统的 FPGA 开发与软件开发,工具链可以通过下表简单对比:

注:传统 FPGA 与软件开发对比表

重点介绍一下,编译阶段的 Synthesis (综合),这部分与软件开发的编译有较大的不同。一般的处理器 CPU、GPU 等,都是已经生产出来的 ASIC,有各自的指令集可以使用。但是对于 FPGA,一切都是空白,有的只是零部件,什么都没有,但是可以自己创造任何结构形式的电路,自由度非常的高。这种自由度是 FPGA 的优势,也是开发过程中的劣势。

写到这里,让我想起了最近 《神秘的程序员们》中的一个梗:

注:漫画来源《神秘的程序员们 56》by 西乔

传统的 FPGA 开发就像 10 岁时候的 Linux,想吃一个蛋糕,需要自己从原材料开始加工。FPGA 正是这种状态,想要实现一个算法,需要写 RTL,需要设计状态机,需要仿真正确性。

▍传统 FPGA 开发方式

复杂系统,需要使用有限状态机(FSM),一般就需要设计下图包含的三部分逻辑:组合电路,时序电路,输出逻辑。通过组合逻辑获取下一个状态是什么,时序逻辑用于存储当前状态,输出逻辑混合组合、时序电路,得到最终输出结果。

然后,针对具体算法,设计逻辑在状态机中的流转过程:

实现的 RTL 是这样的:

module fsm_using_single_always (

clock , // clockreset , // AcTIve high, syn resetreq_0 , // Request 0req_1 , // Request 1gnt_0 , // Grant 0gnt_1

);//=============Input Ports=============================input clock,reset,req_0,req_1; //=============Output Ports===========================output gnt_0,gnt_1;//=============Input ports Data Type===================wire clock,reset,req_0,req_1;//=============Output Ports Data Type==================reg gnt_0,gnt_1;//=============Internal Constants======================parameter SIZE = 3 ;

parameter IDLE = 3‘b001,GNT0 = 3’b010,GNT1 = 3‘b100 ;//=============Internal Variables======================reg [SIZE-1:0] state ;// Seq part of the FSMreg [SIZE-1:0] next_state ;// combo part of FSM//==========Code startes Here==========================always @ (posedge clock)begin : FSMif (reset == 1’b1) begin

state 《= #1 IDLE;

gnt_0 《= 0;

gnt_1 《= 0;end else

case(state)

IDLE : if (req_0 == 1‘b1) begin

state 《= #1 GNT0;

gnt_0 《= 1; end else if (req_1 == 1’b1) begin

gnt_1 《= 1;

state 《= #1 GNT1; end else begin

state 《= #1 IDLE; end

GNT0 : if (req_0 == 1‘b1) begin

state 《= #1 GNT0; end else begin

gnt_0 《= 0;

state 《= #1 IDLE; end

GNT1 : if (req_1 == 1’b1) begin

state 《= #1 GNT1; end else begin

gnt_1 《= 0;

state 《= #1 IDLE; end

default : state 《= #1 IDLE;

endcaseendendmodule // End of Module arbiter

传统的 RTL 设计,对于程序员简直就是噩梦啊,梦啊,啊~~~工具链完全不同,开发思路完全不同,还要分析时序,一个 Clock 节拍不对,就要推翻重来,重新验证,一切都显得太底层,不是很方便。那么,这些就交给专业的 FPGAer 吧,下面介绍的 OpenCL 开发 FPGA,有点像 25 岁的 Linux 了。有了高层次的抽象。用起来自然也会更加方便。

▍基于 OpenCL 的 FPGA 开发

OpenCL 对于 FPGA 开发,注入了新鲜的血液,一种面向异构系统的编程语言,将 FPGA 最为异构实现的一种可选设备。由 CPU Host 端控制整个程序的执行流程,FPGA Device 端则作为异构加速的一种方式。异构架构,有助于解放 CPU,将 CPU 不擅长的处理方式,下发到 Device 端处理。目前典型的异构 Device 有:GPU、Intel Phi、FPGA。

OpenCL 是一个用于异构平台编程的框架,主要的异构设备有 CPU、GPU、DSP、FPGA 以及一些其它的硬件加速器。OpenCL 基于 C99 来开发设备端代码,并且提供了相应的 API 可以调用。OpenCL 提供了标准的并行计算的接口,以支持任务并行和数据并行的计算方式。

OpenCL 案例分析

这里采用 Altera 官网的矩阵乘法案例进行分析。可以通过如下链接下载案例:Altera OpenCL Matrix MulTIplicaTIon

代码结构如下:

。|-- common| |-- inc| | `-- AOCLUtils| | |-- aocl_utils.h| | |-- opencl.h| | |-- options.h| | `-- scoped_ptrs.h| |-- readme.css| `-- src| `-- AOCLUtils| |-- opencl.cpp| `-- options.cpp`-- matrix_mult

|-- Makefile

|-- README.html

|-- device

| `-- matrix_mult.cl

`-- host

|-- inc

| `-- matrixMult.h

`-- src

`-- main.cpp

其中,和 FPGA 相关的代码是 matrix_mult.cl ,该部分代码描述了 kernel 函数,这部分函数会通过编译器生成 RTL 代码,然后 map 到 FPGA 电路中。

kernel 函数的定义如下:

__kernel

__attribute((reqd_work_group_size(BLOCK_SIZE,BLOCK_SIZE,1)))

__attribute((num_simd_work_items(SIMD_WORK_ITEMS)))void matrixMult( __global float *restrict C,

__global float *A,

__global float *B,

int A_width,

int B_width)

模式比较固定,需要注意的是 __global 指明从 CPU 传过来的数据,存放到全局内存中,可以是 FPGA 片上存储资源,DDR,QDR 等,这个视 FPGA 的 OpenCL BSP 驱动,会有所区别。num_simd_work_items 用于指明 SIMD 的宽度。reqd_work_group_size 指明了工作组的大小。这些概念,可以参考 OpenCL 的使用手册。

函数实现如下:

// 声明本地存储,暂存数组的某一个 BLOCK__local float A_local[BLOCK_SIZE][BLOCK_SIZE];

__local float B_local[BLOCK_SIZE][BLOCK_SIZE];// Block indexint block_x = get_group_id(0);int block_y = get_group_id(1);// Local ID index (offset within a block)int local_x = get_local_id(0);int local_y = get_local_id(1);// Compute loop boundsint a_start = A_width * BLOCK_SIZE * block_y;int a_end = a_start + A_width - 1;int b_start = BLOCK_SIZE * block_x;float running_sum = 0.0f;for (int a = a_start, b = b_start; a 《= a_end; a += BLOCK_SIZE, b += (BLOCK_SIZE * B_width))

{ // 从 global memory 读取相应 BLOCK 数据到 local memory

A_local[local_y][local_x] = A[a + A_width * local_y + local_x];

B_local[local_x][local_y] = B[b + B_width * local_y + local_x]; // Wait for the entire block to be loaded.

barrier(CLK_LOCAL_MEM_FENCE); // 计算部分,将计算单元并行展开,形成乘法加法树

#pragma unroll

for (int k = 0; k 《 BLOCK_SIZE; ++k)

{

running_sum += A_local[local_y][k] * B_local[local_x][k];

} // Wait for the block to be fully consumed before loading the next block.

barrier(CLK_LOCAL_MEM_FENCE);

}// Store result in matrix CC[get_global_id(1) * get_global_size(0) + get_global_id(0)] = running_sum;

采用 CPU 模拟仿真 FPGA

对其进行仿真,不需要 programer 关心具体的时序是怎么走的,只需要验证逻辑功能就可以,Altera OpenCL SDK 提供了 CPU 仿真 Device 设备的功能,采用如下方式进行:

# To generate a .aocx file for debugging that targets a specific accelerator board$ aoc -march=emulator device/matrix_mult.cl -o bin/matrix_mult.aocx --fp-relaxed --fpc --no-interleaving default --board 《your-board》# Generate Host exe.$ make# To run the application$ env CL_CONTEXT_EMULATOR_DEVICE_ALTERA=8 。/bin/host -ah=512 -aw=512 -bw=512

上述脚本中,通过 -march=emulator 设置创建一个可用于 CPU debug 的设备可执行文件。-g 添加调试 flag。—board 用于创建适配该设备的 debugging 文件。CL_CONTEXT_EMULATOR_DEVICE_ALTERA 为用于 CPU 仿真的设备数量。

当执行上述脚本后,输出如下:

$ env CL_CONTEXT_EMULATOR_DEVICE_ALTERA=8 。/bin/host -ah=512 -aw=512 -bw=512Matrix sizes:

A: 512 x 512

B: 512 x 512

C: 512 x 512Initializing OpenCL

Platform: Altera SDK for OpenCL

Using 8 device(s)

EmulatorDevice : Emulated Device

。..

EmulatorDevice : Emulated Device

Using AOCX: matrix_mult.aocx

Generating input matrices

Launching for device 0 (global size: 512, 64)

。..

Launching for device 7 (global size: 512, 64)

Time: 5596.620 ms

Kernel time (device 0): 5500.896 ms

。..

Kernel time (device 7): 5137.931 ms

Throughput: 0.05 GFLOPS

Computing reference output

Verifying

Verification: PASS

通过仿真时候设置 Device = 8,模拟 8 个设备运行 (512, 512) * (512, 512) 规模的矩阵,最终验证正确。接下来就可以将其真正编译到 FPGA 设备上后运行。

FPGA 设备上运行矩阵乘

这个时候,真正要将代码下载到 FPGA 上执行了,这时候,只需要做一件事,那就是用 OpenCL SDK 提供的编译器,将 *.cl 代码适配到 FPGA 上,执行编译命令如下:

$ aoc device/matrix_mult.cl -o bin/matrix_mult.aocx --fp-relaxed --fpc --no-interleaving default --board 《your-board》

这个过程比较慢,一般需要几个小时到 10 几个小时,视 FPGA 上资源大小而定。(目前这部分时间太长暂时无法解决,因为这里的编译,其实是在行程一个能够正常工作的电路,软件会进行布局布线等工作)

等待编译完成后,将生成的 matrix_mult.aocx 文件烧写到 FPGA 上就 ok 啦。

烧写的命令如下:

$ aocl program 《your-board》 matrix_mult.aocx

这时候,大功告成,可以运行 host 端程序了:

$ 。/host -ah=512 -aw=512 -bw=512Matrix sizes:

A: 512 x 512

B: 512 x 512

C: 512 x 512Initializing OpenCL

Platform: Altera SDK for OpenCL

Using 1 device(s)

《your-board》 : Altera OpenCL QPI FPGA

Using AOCX: matrix_mult.aocx

Generating input matrices

Launching for device 0 (global size: 512, 512)

Time: 2.253 ms

Kernel time (device 0): 2.191 ms

Throughput: 119.13 GFLOPS

Computing reference output

Verifying

Verification: PASS

可以看到,矩阵乘法能够在 FPGA 上正常运行,吞吐大概在 119GFlops 左右。

小结

从上述的开发流程,OpenCL 大大的解放了 FPGAer 的开发周期,并且对于软件开发者,也比较容易上手。这是他的优势,但是目前开发过程中,还是存在一些问题,如:编译器优化不足,相比 RTL 写的性能存在差距;编译到 Device 端时间太长。不过这些随着行业的发展,一定会慢慢的进步。

责任编辑:gt

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

写好状态机--从2019年全国FPGA竞赛谈Verilog编码技巧

理解Verilog编码技巧掌握FPGA中状态机的写法掌握非重叠序列检测代器Verilog代码编写
发烧友学院发表于 2020-04-21 00:00 20334次阅读
写好状态机--从2019年全国FPGA竞赛谈Verilog编码技巧

什么是数据标注?数据如何标注?

标注的数据突出显示某些特征,并根据这些特征对其进行分类,可以通过模型分析其模式以预测新的目标。例如,....
发表于 2020-07-17 09:39 0次阅读
什么是数据标注?数据如何标注?

人工智能已成为全球新一轮产业转型的主要推动力

中国人工智能研究人员正在探索包括深度学习在内的新一代人工智能技术,计划与来自世界各地的研究人员和工程....
发表于 2020-07-17 09:20 65次阅读
人工智能已成为全球新一轮产业转型的主要推动力

VerilogHDL可综合设计需要注意什么

组合逻辑可以得到两种常用的RTL 级描述方式。第一种是always 模块的触发事件为电平敏感信号列表....
发表于 2020-07-17 09:11 4次阅读
VerilogHDL可综合设计需要注意什么

了解FPGA的芯片内部资源:IO是什么

虽然很多 FPGA 工程师都是写代码,但是作为硬件编程工程师,如果不熟悉 FPGA 的底层资源和架构....
发表于 2020-07-16 17:53 59次阅读
了解FPGA的芯片内部资源:IO是什么

FPGA和ASIC、DSP及ARM有什么不一样,...

ASIC 是 Application Specific Integrated Circuit 的英文....
发表于 2020-07-16 17:47 125次阅读
FPGA和ASIC、DSP及ARM有什么不一样,...

基于FPGA器件实现异步FIFO读写系统的设计

异步 FIFO 读写分别采用相互异步的不同时钟。在现代集成电路芯片中,随着设计规模的不断扩大,一个系....
发表于 2020-07-16 17:41 41次阅读
基于FPGA器件实现异步FIFO读写系统的设计

FPGA和SoC在设计中面临小尺寸和低成本挑战,...

工业电子产品的发展趋势是更小的电路板尺寸、更时尚的外形和更具成本效益。由于这些趋势,电子系统设计人员....
发表于 2020-07-16 17:32 55次阅读
FPGA和SoC在设计中面临小尺寸和低成本挑战,...

FPGA大幅提升硬件加速的单位功耗性能,FPGA...

随着网络技术发展,移动网络速度不断提升,为移动互联网业务带来了良好的发展条件,但同时带来的爆炸式数据....
发表于 2020-07-16 17:24 64次阅读
FPGA大幅提升硬件加速的单位功耗性能,FPGA...

通过FPGA和RISC-V开放指令集优化军事和航...

RISC-V开放指令集可以帮助航空航天和国防设计人员通过优化指令集,为每个特定的应用程序提供最有效的....
发表于 2020-07-16 17:13 57次阅读
通过FPGA和RISC-V开放指令集优化军事和航...

在Speedster7t FPGA中增加NoC能...

关于诸如FPGA之类的可编程解决方案的传统想法是,您必须愿意在灵活性方面做出很多权衡。在许多情况下确....
发表于 2020-07-16 17:12 79次阅读
在Speedster7t FPGA中增加NoC能...

基于PCI Express总线的CamLink接...

图像采集和处理技术在机器视觉和图像分析等诸多领域应用十分广泛。随着高速的 PCI Express(P....
发表于 2020-07-16 17:02 20次阅读
基于PCI Express总线的CamLink接...

【每周FPGA案例】定时转换的LED交通灯2

状态机实现的LED交通灯2 --作者:肖肖肖 本文为明德扬原创及录用文章,转载请注明出处!1.1 总体设计1.1.1 概述发...
发表于 2020-07-16 16:41 101次阅读
【每周FPGA案例】定时转换的LED交通灯2

【每周FPGA案例】至简设计系列_按键控制数字时钟

至简设计系列_按键控制数字时钟 --作者:小黑同学 本文为明德扬原创及录用文章,转载请注明出处!1.1 总体设计1.1...
发表于 2020-07-16 16:18 0次阅读
【每周FPGA案例】至简设计系列_按键控制数字时钟

MathWorks与NVIDIA 深度学习学院合...

基于数十年来的复杂工程项目支持经验,MathWorks 为构建 AI 驱动系统提供了一个综合平台。
发表于 2020-07-16 15:16 216次阅读
MathWorks与NVIDIA 深度学习学院合...

麦克斯·德尔布吕克分子医学中心的研究人员开发了一...

为了简化此过程,MDC的研究人员开发了一种通用的编程工具,该工具可将各种基因组数据转换为所需的格式,....
发表于 2020-07-16 14:47 63次阅读
麦克斯·德尔布吕克分子医学中心的研究人员开发了一...

FPGA和CPLD的主要区别是什么

  FPGA(Field Programmable Gates Array 现场可编程门阵列,内部结构为门阵列构成静态存储器(SRAM)。...
发表于 2020-07-16 10:46 0次阅读
FPGA和CPLD的主要区别是什么

基于FPGA和高速ADC实现多通道通用信号处理平...

新型多通道通用信号处理平台主要包括高速AD芯片、Xilinx最新UltraScale系列FPGA和T....
发表于 2020-07-16 09:25 48次阅读
基于FPGA和高速ADC实现多通道通用信号处理平...

K7 FPGA来设计电路板,连接引脚时应注意什么?

嗨XILINX工程师 我正在使用您的K7 FPGA来设计电路板。 在我的项目中,我将使用DDR3来消耗内存。 我将...
发表于 2020-07-16 09:06 0次阅读
K7 FPGA来设计电路板,连接引脚时应注意什么?

FPGA芯片与DSP芯片的比较,DSP芯片在民用...

DSP 即数字信号处理技术, DSP 芯片即指能够实现数字信号处理技术的芯片。 DSP芯片是一种快速....
发表于 2020-07-15 22:19 263次阅读
FPGA芯片与DSP芯片的比较,DSP芯片在民用...

基于FPGA器件实现CNN加速系统的硬件设计

随着近些年深度学习的迅速发展和广泛的应用,卷积神经网络(CNN)已经成为检测和识别领域最好的方法,它....
发表于 2020-07-15 21:00 156次阅读
基于FPGA器件实现CNN加速系统的硬件设计

基于XC6SLX16-2CSG-324型FPGA...

记(n0,k0,m)为卷积码编码器,该编码器共有2k0×m个状态,Viterbi译码器必须具备同样的....
发表于 2020-07-15 20:53 44次阅读
基于XC6SLX16-2CSG-324型FPGA...

基于FPGA器件实现乘法器因子求取模块的RS编码...

里得-所罗门码(Reed-Solomon,RS)是由REED I S和SOLOMON G在1960年....
发表于 2020-07-15 20:46 18次阅读
基于FPGA器件实现乘法器因子求取模块的RS编码...

基于现场可编程门阵列器件实现ADS-B解交织系统...

广播式自动相关监视(Automatic Dependent Surveillance-Broadca....
发表于 2020-07-15 20:38 83次阅读
基于现场可编程门阵列器件实现ADS-B解交织系统...

基于FPGA芯片EP3C40Q240C8实现多普...

作为一种新兴的核技术, 正电子湮没谱学用于缺陷研究,取得了不少成果。正电子湮没谱学研究空位型缺陷是基....
发表于 2020-07-15 20:33 54次阅读
基于FPGA芯片EP3C40Q240C8实现多普...

Latticetui推出Certus-NX低功耗...

Lattice Nexus是业界首个基于28 nm FD-SOI工艺的低功耗FPGA技术平台,得益于....
发表于 2020-07-15 19:28 91次阅读
Latticetui推出Certus-NX低功耗...

ise软件,在设置激励源时,点击new Source 并没有生成子文件而是生成同级的文件,如图

add文件为一个加法器,点击add右键new source, 想设置adt激励,却生成平级文件,该怎么处理,直接对adt仿真报错:ER...
发表于 2020-07-15 19:14 77次阅读
ise软件,在设置激励源时,点击new Source 并没有生成子文件而是生成同级的文件,如图

求大神看一下,为什么这个sync_ncs

发表于 2020-07-15 16:46 74次阅读
求大神看一下,为什么这个sync_ncs

Imagination:用领先IP技术加速中国I...

在7月3日下午,Imagination中国区市场及业务发展高级经理郑魁在视频采访直播间接受了的采访,....
发表于 2020-07-15 13:53 853次阅读
Imagination:用领先IP技术加速中国I...

通过串行从编程对FPGA Kintex 7k160T进行编程遇到的问题如何解决

嗨, 当我尝试通过串行从编程(JTAG编程工作)对FPGA Kintex 7k160T进行编程时,我们遇到了一个问题。 I...
发表于 2020-07-15 10:24 16次阅读
通过串行从编程对FPGA Kintex 7k160T进行编程遇到的问题如何解决

用fpga的nios操作ili9325液晶,id读两次才正确的原因?

读第一次id是0,第二次 9325 循环读的话,0和9325交替出现,这是什么原因呢 开始怀疑是延时问题,后来都加上延时还是...
发表于 2020-07-15 08:01 7次阅读
用fpga的nios操作ili9325液晶,id读两次才正确的原因?

基于FPGA可编程逻辑器件实现智能交通车辆识别检...

智能交通系统是将先进的信息技术、移动通信技术和计算机技术应用在交通网络,建设一种全方位的、实时准确的....
发表于 2020-07-14 18:03 151次阅读
基于FPGA可编程逻辑器件实现智能交通车辆识别检...

基于FPGA的SPI总线传输技术提供更好的选择和...

SPI(Serial peripheral interface——串行设备接口)是摩托罗拉公司推出的....
发表于 2020-07-14 17:50 102次阅读
基于FPGA的SPI总线传输技术提供更好的选择和...

FPGA促进AI发展,2019-2023年AI用...

目前,25%的商业已经实现了AI/机器学习(ML),未来两年内将达72%。带来的好处是在核心功能方面....
发表于 2020-07-14 17:39 280次阅读
FPGA促进AI发展,2019-2023年AI用...

基于Virtex6系列FPGA和DSP处理器实现...

新一代移动通信技术5G通信正在如火如荼的推进当中,5G相比4G带来了数据流量和传输速率的大幅度提升,....
发表于 2020-07-14 17:32 183次阅读
基于Virtex6系列FPGA和DSP处理器实现...

基于Cyclone IV系列FPGA实现X射线采...

本文设计的X射线采集传输系统的硬件框图如图1所示。图像采集与传输系统的硬件包含三个部分,X射线探测器....
发表于 2020-07-14 17:24 83次阅读
基于Cyclone IV系列FPGA实现X射线采...

FPGA预计是数据中心加速器市场中年均增长率最高...

数据中心市场的加速芯片主要包括CPU、GPU、FPGA和ASIC等。据Semico Research....
发表于 2020-07-14 17:19 103次阅读
FPGA预计是数据中心加速器市场中年均增长率最高...

基于XILINX的V5系列FPGA实现数据通信平...

传统的数据链存在着误码率高、衰落大、干扰严重等问题,即使采用高效的信息压缩编码技术仍难以满足高光谱、....
发表于 2020-07-14 17:04 133次阅读
基于XILINX的V5系列FPGA实现数据通信平...

安路科技实现全流程软件工具开发,把算法用最短时间...

安路科技一直关注智能物联网的应用,从“智能”和发展的眼光看待这些海量应用。从高科技产业过往的发展轨迹....
发表于 2020-07-14 16:56 166次阅读
安路科技实现全流程软件工具开发,把算法用最短时间...

营销中的情商和AI:技术与情商的结合

在市场营销中,尤其是现在,对情绪智力的需求也至关重要。与客户联系,让他们知道您的商店仍在营业是一回事....
发表于 2020-07-14 16:42 132次阅读
营销中的情商和AI:技术与情商的结合

莱迪思的Lattice Propel开发工具进一...

低功耗FPGA大厂莱迪思半导体(Lattice Semiconductor)近日推出全新FPGA软件....
发表于 2020-07-14 16:36 57次阅读
莱迪思的Lattice Propel开发工具进一...

采用LabVIEW FPGA的数据传输技术可确保...

西安某汽车电子有限公司生产的XLM油泵支架产 品功能测试台设计中,有一项针对高度阻值(TSG)的 功....
发表于 2020-07-14 16:36 37次阅读
采用LabVIEW FPGA的数据传输技术可确保...

请问如何在FPGA中实现DDR3 SDRAM功能?

我需要在V7中实现与DDR3 SDRAM相同的功能和接口。 这意味着命令/地址,读取数据和写入数据流的方向与MIG...
发表于 2020-07-14 16:18 19次阅读
请问如何在FPGA中实现DDR3 SDRAM功能?

FPGA系统设计如何入门

目前数字电路系统设计领域公认的基础性技术分别是CPU、DSP和FPGA。其中FPGA技术发展迅速,正....
发表于 2020-07-14 14:09 137次阅读
FPGA系统设计如何入门

Imagination Technologies...

据外媒报道,总部位于英国伦敦的Imagination Technologies公司宣布推出XS系列图....
发表于 2020-07-14 12:36 83次阅读
Imagination Technologies...

一种同时解决目标独立光栅化和可变频率的像素着色器...

D3D12为了兼顾图像质量和硬件性能,对反走样算法提出了更高的要求—VRS(Variable Rat....
发表于 2020-07-14 11:00 138次阅读
一种同时解决目标独立光栅化和可变频率的像素着色器...

AI研习专题:单图像深度学习去雨研究的最新进展

图像复原是利用退化过程的某些先验知识建立相应的数学模型,通过求解逆问题对原始图像进行估计进而复原被退....
发表于 2020-07-14 09:49 36次阅读
AI研习专题:单图像深度学习去雨研究的最新进展

AlexNet架构的独特特征解析

为了训练神经网络内的神经元,利用Tanh或S形非线性已成为标准做法,这是goto激活函数,可用来对C....
发表于 2020-07-14 09:17 108次阅读
AlexNet架构的独特特征解析

人工智能的主要发展及其驱动力

实际上,深度学习和机器学习是互补的。 深度学习可以解决感知问题,例如计算机视觉和语音识别。 它使用神....
发表于 2020-07-14 08:43 75次阅读
人工智能的主要发展及其驱动力

如何减轻SEU对Artix-7 FPGA的影响

据我所知,Xilinx建议采用SEM来减轻SEU对7系列FPGA的影响。 但Artix-7 FPGA不支持ISE 14.2中的S...
发表于 2020-07-14 07:01 6次阅读
如何减轻SEU对Artix-7 FPGA的影响

fir分布式滤波的fpga实现

这次设计就在加法器带宽处产生问题,带宽不够,发现出来的波形顶部挪到低下去了,通过看中间数据发现是数据....
发表于 2020-07-13 11:41 184次阅读
fir分布式滤波的fpga实现

FPGA和其他可编程逻辑IC 的不同之处在于哪

  FPGA是一种集成电路,包含许多(64至10,000多个)相同的逻辑单元,可以将它们视为标准组件....
发表于 2020-07-13 11:31 213次阅读
FPGA和其他可编程逻辑IC 的不同之处在于哪

典型FPGA的开发流程和实现SOC的设计方法

目前微电子技术已经发展到 SOC 阶段,即集成系统(Integrated System)阶段,相对于....
发表于 2020-07-13 09:53 220次阅读
典型FPGA的开发流程和实现SOC的设计方法

基于FPGA器件和仿真软件实现智能交通灯系统的设...

本设计的主要设计理念是采用模块化的方式,整体结构是 FPGA 控制模块和车流量检测模块。其中 FPG....
发表于 2020-07-13 09:46 462次阅读
基于FPGA器件和仿真软件实现智能交通灯系统的设...

FPGA的基本架构、IO命名方式和作用是什么

今天想和大家一起聊聊 FPGA 的 IO。先说说我当年入门的经历吧。国内的大学有 FPGA 开发条件....
发表于 2020-07-13 09:40 96次阅读
FPGA的基本架构、IO命名方式和作用是什么

国微思尔芯推出第7代原型验证系统,满足新一代So...

从美通社获知,2020年7月8日,国微思尔芯,全球领先的原型验证解决方案供应商,推出新系列的原型验证....
发表于 2020-07-13 09:32 54次阅读
国微思尔芯推出第7代原型验证系统,满足新一代So...

国微思尔芯发布FPGA验证仿真云系统,满足新一代...

国微思尔芯(“S2C”), 全球领先的前端电子设计自动化 (EDA) 供应商, 发布全球首款FPGA....
发表于 2020-07-13 09:18 76次阅读
国微思尔芯发布FPGA验证仿真云系统,满足新一代...

莱迪思半导体软件解决方案Lattice Prop...

全球领先的低功耗可编程器件供应商莱迪思半导体公司(NASDAQ:LSCC)宣布,推出全新软件解决方案....
发表于 2020-07-13 09:18 79次阅读
莱迪思半导体软件解决方案Lattice Prop...

研华SKY-6420-4U高密度GPU服务器,I...

过去的两年里,研华着手布局AI领域,将自己定位为一个全面的人工智能平台解决方案提供商。为此,研华推出....
发表于 2020-07-12 09:47 195次阅读
研华SKY-6420-4U高密度GPU服务器,I...

基于SaaS的人工智能培训将改变游戏规则

如果用户使用基于机器学习的系统,那么需要了解有关训练数据的知识。在将数据加载到人工智能模型以进行模型....
发表于 2020-07-10 18:47 201次阅读
基于SaaS的人工智能培训将改变游戏规则

深度学习框架大PK

近年来,开发者社区中,「开源」成了新流行趋势。 尤其是深度学习框架,自腾讯2017年将ncnn....
发表于 2020-07-10 18:37 347次阅读
深度学习框架大PK

浅谈FPGA设计中分频电路设计

通常情况下,时钟的分频在FPGA设计中占有重要的地位,在此就简单列出分频电路设计的思考思路。
发表于 2020-07-10 17:18 96次阅读
浅谈FPGA设计中分频电路设计

Google正在将其知识图谱与在线查找的图片进行...

像上面的GIF一样,假设您正在浏览著名建筑物的照片,您将看到界面的新元素,突出显示与当前图片相关的人....
发表于 2020-07-10 14:34 327次阅读
Google正在将其知识图谱与在线查找的图片进行...

利用FPGA将更多智能功能添加到PC找那中,突其...

智能手机的迅猛发展导致了PC多年来影响力不断下滑,人们也普遍感觉到其重要性也大不如前。而如今,PC的....
发表于 2020-07-10 10:55 127次阅读
利用FPGA将更多智能功能添加到PC找那中,突其...

FPGA技术呈现的4个主要的发展动向

纵观数字集成电路的发展历史,经历了从电子管、晶体管、小规模集成电路到大规模以及超大规模集成电路等不同....
发表于 2020-07-10 10:49 133次阅读
FPGA技术呈现的4个主要的发展动向

基于FPGA和VHDL语言编程实现液晶屏信号发生...

液晶显示已成为目前平板电视与计算机显示终端的主流,液晶显示器的研究设计、生产、检验等部门甚至消费者需....
发表于 2020-07-10 10:43 80次阅读
基于FPGA和VHDL语言编程实现液晶屏信号发生...