
FPGA
文章平均质量分 88
xiongyuqing
看见我请叫我学英语
展开
-
Windows10下VTR.7中VPR项目的运行
下载VTR7和Visual Studio2022点击sln文件,打开vpr工程vpr为VS2010的项目,需要先对工程文件升级后再编译:上方菜单→项目→VPR属性→C/C++→代码生成:编译成功后在Debug文件下可以找到VPR.exe文件在此目录下运行cmd,输入运行命令并传入FPGA结构文件和电路文件:在main.c中给传入的参数赋值,可以用于调试原创 2023-03-28 22:28:33 · 486 阅读 · 1 评论 -
UART 串口通信
UART(universal asynchronous receiver-transmitter):通用异步收发传输器;**异步串行通信**功能:- 发送数据时将并行数据转换为串行数据进行传输- 接收数据时将串行数据转换为并行行数据进行传输原创 2023-03-08 18:04:18 · 7646 阅读 · 0 评论 -
RAM IP Core
官方文档:ZYNQ 存储资源指导手册 (DS109)RAM 全称 Random Access Memory,随机存取存储器。随时将数据写入任意指定地址的存储单元,或从任意地址读出数据。读写的速度是由时钟频率决定的。RAM主要用于存放程序运行的中间数据、运算结果等资源简介:端口配置前0-31写,后32-63读创建一个设计源文件:选择RAM IP Core双击设置设置读写位宽和深度veo文件是例化模板我们需要一个读写控制模块去驱动RAM IP Core新建一个设计文件ram_rw设置端口控制逻辑:例化ram原创 2023-03-03 14:28:34 · 498 阅读 · 0 评论 -
FIFO IP Core
不能对数据立刻赋值,fpga内部不一样准备好了,需要延迟等待一段时间,这样的需求可以用状态机完成。选择异步时钟的BRAM(这样后面的读写数据量才能设置,同步时钟的默认相等)创建工程和设计文件ip_fifo,添加FIFO IP Core。生成bitstream,连接开发板,观看ila波形。reg d0 = en 当前时刻的值。这里有三个状态,延迟等待10个周期。设置读写宽度和深度,取消复位引脚。输入信号:时钟,复位,将空,将满。将写模块中的写使能变为读使能。输出信号:写使能,写数据。写满判断变为读空判断。原创 2023-03-03 14:19:01 · 903 阅读 · 0 评论 -
[RDMA-高级计算机网络report] Congestion Control for Large-Scale RDMA Departments
本文主要解决的问题是在RoCEv2体系中,基于优先级的拥塞控制PFC是一种粗粒度的机制。它在端口(或端口加优先级)级别上运行,并且不区分流。PAUSE机制是基于每个端口(和优先级)的,而不是基于每个流的。这将导致Unfairness和Victim flow等问题。原创 2023-03-01 09:54:30 · 1231 阅读 · 0 评论 -
2_ZYBO FPGA 按键控制蜂鸣器 key_beep=>key_led
使用按键控制蜂鸣器发声。 初始状态为蜂鸣器鸣叫,按下开关后蜂鸣器停止鸣叫,再次按下开关,蜂鸣器重新鸣叫原创 2022-12-05 16:28:38 · 685 阅读 · 0 评论 -
1 FPGA ZYBO Xilinx 按键控制LED灯 key_led
使用ZYBO上的PL端按键,分别控制两个PL端的LED,按下不同的按键时, 两个LED显示不同效果原创 2022-12-02 17:36:27 · 1057 阅读 · 0 评论 -
Going Deeper with Embedded FPGA Platform for Convolutional Neural Network
所以按照生成结果的顺序存储是不连续的,就在Out(1,2)生成之前把Out(1,1)缓存放在Out(4,1)的位置,然后把Out(1,1)和Out(1,2)放在一起==(?对FC层进行了一系列的优化:应用了SVD(Singular Value Decomposition,奇异值分解)到全连接的权重矩阵,减少了85.8%的内存占用,提出了一些数据放置策略和计算策略。与以往的静态精度量化策略不同,在本文提出的数据量化流程中,fl对不同层和特征映射集是动态的,而在一层是静态的,以最小化每层的截断误差。原创 2022-11-22 18:32:47 · 750 阅读 · 0 评论 -
DNNBuilder: an Automated Tool for Building High-Performance DNN Hardware Accelerators for FPGAs
VGG16加速器DSP效率最高:VGG16具有统一的CONV (3×3 with stride 1)和pooling pattern (2×2 with stride 2),使得在Ri为2的幂的约束下,方程(3)完全满足。(d)CONV i&j层没有被存储限制但是被带宽限制了,调整带宽需求最高的层(CONV i),通过缓存相应特征映射的更多列来减少其带宽使用(斜率变缓)加速器的设计策略分两种:基于循环的架构(统一的计算单元在不同的时间被不同的层利用);计算通信比(CTC)小的时候,蓝色部分;原创 2022-11-18 16:10:34 · 728 阅读 · 0 评论 -
DeepBurning: automatic generation of FPGA-based learning accelerators for the neural network family
近似LUT用于实现激活函数,输入放入LUT的索引中,预先存储输出结果,通过存储的有限样本近似激活函数来进行模拟。动态控制流:用数据将实例化的IP核连接运行起来,控制从AGU里取数据,放入IP核里进行计算,得到输出数据,通过AGU写入内存,再调用下一个IP核通过AGU取数据运行,反复上述。优化输入数据与权重的存储布局,利用存储的局部性实现地址生成单元(具体方式?命中LUT的输入就直接输出LUT的结果,否则通过线性插值生成输入的近似结果。空间折叠:单个网络层,拆分成不同的段,在不同的事件共享一个组件。原创 2022-11-08 20:43:54 · 577 阅读 · 2 评论 -
FPGA HLS 卷积神经网络软硬件映射
当卷积核与输入特征相同,stride和padding为0时,卷积核的个数是输出的维度,也就是全连接的输出维度。调用driver里的Load_Weight_From_File函数,加载权重放入fpga里,等待fpag读。将之前的卷积和数据流风格的池化单元IP加到工程里,生成bit流文件对FPGA进行配置。根据输入的数据,对特征的浮点数量化为定点数,需要获取特征的精度范围。把权重的浮点数量化为定点数,需要获取权重的精度范围。将测试图片的文件、生成的权重文件,复制到pynq中。一个负责卷积与Relu。原创 2022-11-06 22:18:15 · 1650 阅读 · 1 评论 -
FPGA HLS 基于stream的池化单元 Vivado电路综合&zynq主机程序
axi-streamdmadma添加HP0AXI_MM2S和AXI_S2MM都连上HP0原因,位宽不匹配,dma的位宽32,但是pool接受的是128更改位宽位128。原创 2022-11-06 22:17:55 · 418 阅读 · 0 评论 -
FPGA HLS 基于stream的池化单元 hls优化&约束
一个高效的DMA作为stream的source,而HLS生成的电路作为stream的sink。此方法与之前的方法相比,优势在于电路外部的DMA工作时可以使用axi-hp的burst与outstanding的特性,总线利用效率比使用HLS工具生成的axi-hp接口的效率高出很多。其次,memcpy函数依旧无法使用AXI-HP中outstanding的特性,对于DDR这类需要预充电的外部存储器而言,其总线利用效率依旧不高。可以用16K的BRAM来实现,从对寄存器的读和写,变为对地址的读和写。原创 2022-11-06 17:01:25 · 1512 阅读 · 0 评论 -
FPGA HLS stream与dataflow
这是因为没有深度约束,深度默认为1,但是这是数据流风格的,所以可以写一个数据,取一个数据,模块依然可以正常工作。这里的模块是等两个送一个,所以把之前的10000深度,设置为4也可以,不耗费啥资源。也就是说我们stream_tmp的长度不够,因为我们需要写两个数据,取一个数据。但是这是不合理的,中间的流很长,但是我们只需要每取两个数据,计算一次写一次数据。那么中间流的16的深度就不够用,需要设置为10000。part1的波形图,确实是读一个写一 个。就算去掉深度的约束,C综合结果也可以过。原创 2022-11-06 11:25:40 · 1945 阅读 · 0 评论 -
FPGA HLS 卷积单元 vivado电路综合与zynq主机测试
给函数参数添加axilite控制端口 Export RTL 生成IP核 新建Vivado工程,导入IP核 开两个HP口用于控制和数据的传输:控制端口AXILite AXI_F和AXI_W用HP口相连,注意要选new AXI Inerconnect:包装,生成product,然后生成bit流文件 zynq 主机程序原创 2022-11-05 22:43:06 · 766 阅读 · 1 评论 -
FPGA HLS 卷积单元 数据类型&hls优化&约束设置
自定义精度整形:为了替换float,double类型的数,加快运算,节约资源根据输入的数据,找到卷积层的数据范围自定义卷积特征的内存排布方式权重的内存排布方式卷积的大小不固定,需要根据在内存中的排布方式算出地址新建conv_core项目conv_core.cppmain.cpp运行C仿真结果:C综合:出错了,需要加约束。报错信息:输入特征feature_in是没有固定长度的但是我们只是把input_feature当作基地址,而不是数组,所以需要告诉工具,数据来自外部存储器再次C综合:?原创 2022-11-05 20:59:34 · 1780 阅读 · 0 评论 -
FPGA HLS Matrix_MUL 矩阵乘法 AXI-lite接口&Vivado电路综合&zynq主机程序
FPGA的板子上,例如zynq或者pynq上有一块ARM硬核,这个板子就称为SOC(system on chip,片上系统);我们想让ARM控制我们的模块,控制数据的传输和控制信号等等。就需要将数据的接口和模块IP的接口设置乘AXI接口。原创 2022-11-04 19:36:05 · 1444 阅读 · 0 评论 -
Lifetime improvement through adaptive reconfiguration for nonvolatile FPGAs
SRAM的FPGA有漏电和容量的限制,使用NVM替换SRAM是一个有效的方式,但是NVM有寿命问题。BRAM的磨损均衡问题依赖静态分析,但是静态分析对于具有多个运行时工作模式的应用程序不够准确。提出了一个对工作模式进行感知并自适应模式进行重构的磨损均衡机制以4%的性能开销实现120%的寿命改善静态分析是什么?工作模式是什么?静态分析:写使能信号的稳定性使其可通过监视的写入信号使能频率来估计BRAMs在运行时的写入频率(maybe)应用程序可能具有不同工作负载的各种工作模式。原创 2022-11-02 12:58:28 · 225 阅读 · 0 评论 -
FPGA HLS Matrix_MUL 矩阵乘法的计算与优化
端口信息,ABC数组默认存在存储器ap_memory中,以下ap_clk、ap_rst、ap_start、ap_done、ap_idle、ap_ready都是控制信号。使用C++完成testbench,同样地,C语言可以编译为对应的激励,驱动上一步骤完成的电路模块。vivado工具比较保守,计算需要的延迟是14,实际优化可以在10,设置大一点,优化的计算更多,一般约束设置大一点在30-50。C++代码综合成RTL逻辑,生成综合报告,包括时序,延时,资源占用,端口信息等。重定义数组在存储器中的排列方式。原创 2022-11-01 21:33:09 · 4274 阅读 · 1 评论 -
FPGA VTR quickstart example
This is a quick introduction to VTR which covers how to run VTR and some if its associated tools (VPR, Odin II, ABC).原创 2022-11-01 20:14:56 · 1606 阅读 · 0 评论 -
From High-Level Deep Neural Models to FPGAs
根据Caffe对DNN模型的高级描述,自动生成可综合的的加速器现存的问题:1. FPGA同时获得性能和能源效率很难。2. DNN占用大量内存,FPGA的片上存储容量有限为了在保持自动化的同时获得加速的收益,DNNWeaver生成的加速器使用手工优化设计的模板首先,DNNWeaver将 DNN描述转换为新的ISA(表示DNN的宏数据流图)。DNNWeaver有分块,调度,barch等优化用于最大化数据重用和资源利用。贡献:1. 宏数据流图指令集架构2. 可扩展和高度定制的手动优化原创 2022-10-31 14:18:21 · 561 阅读 · 0 评论 -
FP-DNN:Framework for Mapping Deep Neural Networks onto FPGAs with RTL-HLS Hybrid Templates
由于DNN相比之前的浅模型计算更密集和存储更密集,所以在大规模数据中心和实时嵌入式系统中部署dnn具有挑战性。基于FPGA的DNN加速器的解决方案有前景,但设计周期长,需要专业硬件知识。提出了一个以tensorflow描述的DNN为输入的端到端框架FP-DNN (Field Programmable DNN),并使用RTL-HLS混合模板在FPGA板上自动生成硬件实现。原创 2022-10-31 11:02:07 · 413 阅读 · 0 评论 -
TABLA: A Unified Template-based Framework for Accelerating Statistical Machine Learning
通用型处理器(CPU/GPU)对于计算密集型的机器学习算法的收益下降,FPGA提供了ASIC效率和通用处理器可编程性的中间点。但是使用FPGA去加速机器学习需要很长的设计周期和硬件的专业知识,所以开发了TABLA框架为一类机器学习生成加速器。关键在于找到大部分机器学习算法的共性,然后利用共性给程序员提供一个高度抽象。这个共性就是许多学习算法可以表示为一个**随机优化问题**。所以学习任务就变成了使用**随机梯度下降**,**最小化目标函数**来解决优化问题。TABLA提供了基于模板的加速框架,开发人员原创 2022-10-25 10:55:49 · 441 阅读 · 0 评论 -
HeteroFlow: An Accelerator Programming Model with Decoupled Data Placement for Software-Defined FPGA
HeteroCL将算法规范和计算定制技术解耦了,或者说分开了。这种将算法规范和计算定制技术分开的解耦编程模型最初是在Halide中提出的,然后才被TVM和HeteroCL等一些框架采用了,不同的是,HeteroCL还进一步将内存架构和量化方案也同算法解耦了。**但是HeteroCL没有提供明确的抽象去对数据放置建模**,也就是说定制的存储策略和计算单元之间还是互相依赖的。程序员还是需要将数据放置策略嵌入到算法代码中,或者依靠编译器生成默认的放置策略。原创 2022-10-12 14:07:50 · 335 阅读 · 0 评论 -
优化基于OpenCL的CNN设计:Optimizing OpenCL-Based CNN Design on FPGA with Comprehensive DSE
文章的目的是:对于给定的CNN模型,通过作者自己设计的框架对设计空间进行探索,找到一个高效的FPGA设计。原创 2022-10-04 09:35:28 · 553 阅读 · 0 评论 -
高层次综合综述:FPGA HLS Today Successes, Challenges, and Opportunities
深度神经网络(DNNs)的底层算法结构简单,但是计算量、对数据的访问和模型参数的存储对内存的需求很大。一种可行的方法是将输入、激活和模型参数量化,来降低数值精度,通过设计方案使得增加的吞吐量和降低的能耗来补偿精度上的降低。原创 2022-09-28 10:25:34 · 1785 阅读 · 0 评论 -
FPGA设计流程
设计对象是由Verilog HDL或VHDL等HDL描述的RTL(寄存器传输级)级别电路。大体的设计流程包括对RTL描述进行逻辑综合、技术映射、布局布线、生成配置,最后写入FPGA进行系统验证。原创 2022-09-18 12:42:44 · 2280 阅读 · 0 评论 -
FPGA的基础结构
FPGA由三大要素构成,实现逻辑电路需求的可编程逻辑要素、提供外部接口的可编程输入/输出要素,连接前两种要素的可编程布线要素。逻辑块和乘法器块都是用来实现逻辑函数的运算电路,存储器快提供存储功能。乘法器块和存储器块等具有专门用途的电路称为“硬逻辑”,在逻辑块中利用查找表和数据选择器实现的任意逻辑函数称为“软逻辑”。对逻辑块结构的称呼,Xilinx公司称其为CLB(Configurable Logic Block),Altera公司称其为LAB(Logic Array Block)原创 2022-09-17 12:20:55 · 5087 阅读 · 6 评论