fpga

FPGA实践教程:在Xilinx zynq-7z035上运行LeNet(三)系统集成知识

匿名 (未验证) 提交于 2019-12-03 00:27:02
本文档系列是我在实践将简单的神经网络LeNet-5实现到Xilinx 的zynq-7z035的FPGA上遇到的问题和解决方法。 本文档重点探讨vivado软件的使用。 完成此过程可以参阅的文档有 UG892: Vivado Design Suite User Guide, Design Flows Overview 背景:我们用vivado HLS对相关软件生成了相应的IP core,现在需要对IP core进行系统集成,形成完整的设计。 一、明确任务 为了确定下步需要怎么做,我们需要明白vivado design suite,包括三个软件,第一个 vivado HLS ,用于将c语言生成相应的IP core,第二个 vivado ,用于将相应的模块生成系统并且可以用单片机控制的系统。第三个 SDK ,用于生成应用级的FPGA。 通过此流程,我们可以确定我们下一步的任务是学习使用vivado软件。 design flows属于HLS。 通过此流程我们发现下一步需要做的是IP package and IP integrate。其中,IP可以通过AXI4总线协议创建IP子系统。 需要看文档UG892中关于vivado IDE(integrated design environment)的部分 UG893:Using the vivado IDE. Tcl是经常出现的一个文件

FPGA实践教程之:在Xilinx zynq-7z035上运行LeNet(二)vivado HLS软件使用

匿名 (未验证) 提交于 2019-12-03 00:22:01
本文档系列是我在实践将简单的神经网络LeNet-5实现到Xilinx 的zynq-7z035的FPGA上遇到的问题和解决方法。 本文档重点探讨vivado HLS软件的使用。 完成本过程可以参阅的文档有: UG902:Vivado Design Suite User Guide: High-Level Synthesis 该文档主要涉及vivado HLS的理解,vivado HLS软件的初步使用,以及相应的HLS相关的c语言库等,我们主要关注该文档的第一章:用vivado HLS软件实现HLS(高层综合High-level Synthesis) UG871:Vivado Desigh Suite Tutoril:High-level Synthesis 该文档主要涉及vivado HLS软件的具体操作过程,包括HLS的介绍、c的验证、管脚综合、任意精度数、设计分析、优化分析、RTL验证、用HLS生成集成IP、在Zynq的AP Soc设计中用HLS生成的IP、这个文档是操作的重点。文档中有较多设计实例可以参考。 一、打开及创建工程 打开软件,creat project这些基础的操作就不讲了。我们的版本是vivado HLS 2016.4 相应的LeNet-5的源码去github上下载,注意需要是c或者c++版本的代码。运行前务必看懂其中的代码,至少知道每个函数的意思和调用关系

[QTV] 实例演示 ― 基于FPGA的AWS F1实例

匿名 (未验证) 提交于 2019-12-03 00:22:01
更多精彩内容,请微信搜索“FPGAer俱乐部”关注我们 在本视频中,我们将通过一个 Step by step 的设计案例,详细向您介绍如何上手开始使用基于赛灵思 UltraScale+ FPGA 的亚马逊(Amazon) EC2 F1 实例开始您的工作。 视频链接 本文转载自赛灵思公众号 ,如 涉 及 侵权,请私信小编删除。 ============ ============ 想加入我们 FPGA学习交流群吗?可以长按或扫描以下二维码,审核通过后我们邀请您加入 这些微信群 旨在打造一个提供给 FPGA工程开发人员及兴趣爱好者(统称“FPGAer”)进行技术交流、答疑解惑和学习的平台。 而且我们也将会通过网络举办 FPGA技术讲座,分享相关研究文献 FPGA “ FPGAer ” 文章来源: [QTV] 实例演示 — 基于FPGA的AWS F1实例

通俗讲讲FPGA

匿名 (未验证) 提交于 2019-12-03 00:20:01
通俗讲讲什么是FPGA。 FPGA出现之前,所有集成电路都可以看成雕塑家,但是雕成一个成品,往往要浪费很多半成品和原料,这就是ASIC的制造。 后来FPGA出现了,FPGA就是块橡皮泥,什么硬件电路都能模仿,万用IC,想捏成什么样随你,捏的不行,可以重新再捏。这就是为什么被称为可编程。 也可以把FPGA当做乐高积木。 比如商场里现成的玩具模型,小汽车、城堡等,这些买来就可以玩,是厂家给你做好的。喜欢什么就买什么,买了四个轮子的小汽车,发现四个轮子不好玩,其实想要三轮车,这就没办法,你只能再去掏钱买。――这相当于ASIC; 买了一台游戏机,玩什么游戏另外插卡。没有游戏卡,就是废铁。――这就相当于CPU或者ARM。 FPGA相当于乐高积木,买来的是以大堆零件(FPGA里的IOB、SLICE、blockram等),车轮、屋顶这些零件集成度很高(相当于FPGA里的DCM、DSP等);玩家根据图纸,可以搭出多种样式的模型。 以英特尔FPGA为例(ALTERA),生产各种芯片,综合工具Quartus II,包括设计输入,时序仿真,板上验证,大部分的功能都集成了。Quartus II就是捏橡皮泥的工具。 Nios II,是Altera公司推出的FPGA用于嵌入CPU软核的支持软件,用C、C++都可以写。所谓软核,就是以前大家都用FPGA捏ASIC玩,但是FPGA常常要外接一些处理器,ARM

FPGA之时序约束

匿名 (未验证) 提交于 2019-12-03 00:20:01
用create_clock 指令 对输入时钟进行约束,下面的7-8是对一个输入的时钟作约束 -phase 生成时钟相位偏移值 outclk_0 是125M,outclk_1是 25M,outclk_2 是2.5M,outclk_3 是50M PLL为了生成输出的4个时钟,先产生了一个500Mhz的临时时钟,名称为pll_inst|pll_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0],后面输出的时钟都是以这个时钟作为源进行分频的。 gen_pins 指该模块输出500Mhz时钟的管脚名称为pll_inst|pll_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0] gen_pins 指该模块输出500Mhz时钟的管脚名称为pll_inst|pll_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk line172-176输出125Mhz时钟,名为 clk_25M_0deg line178-182输出2.5Mhz时钟,名为 clk_2_5M_0deg line184-188输出50Mhz时钟,名为 mm_clk 我是先在sdc里输入 derive_pll_clocks 这条指令

Xilinx-7系列FPGA架构学习 --- CLB

匿名 (未验证) 提交于 2019-12-03 00:18:01
Achievement provides the only real pleasure in life. 有所成就是人生唯一的真正的乐趣。 本文主要参考:xilinx官方文档UG474《7 Series FPGAs Configurable Logic Block》和White Paper《Xilinx 7 Series FPGAs:The Logical Advantage》。 CLBs是实现时序逻辑组合逻辑电路的主要逻辑单元。 一个CLB由两个slice组成,而每个slice由4个6输入LUT、8个FF、复用器和算术进位单元组成。 latches. In that case, the remaining four flip-flops in that slice must remain unused.每个slice中的4个FF可以做锁存器,但是剩下的4个FF不能够再使用,也就是说有50%的资源浪费。这也就是为什么教科书上说,尽量避免latchs使用,除了时序问题之外,还有资源浪费。从芯片资源手册也可以看出,以kintex-7为例: Slices = SliceL + SliceM;SliceL / SliceM = 2;Slices / LUTs = 4;FF / Slices = 8。 两个slice分别位于CLB的左列底部和右列顶部。这两个slice不是直接互联

FPGA时序约束理解记录

匿名 (未验证) 提交于 2019-12-03 00:17:01
最近整理了一下时序约束的内容,顺便发出来分享记录一下。 任何硬件想要工作正常,均需满足建立和保持时间,至于这个概念不再陈述。 下面将重点介绍两个概念:建立余量和保持余量。FPGA内部进行时序分析无非就是计算这两个余量,为正,则时序满足要求,否则不满足。 FPGA在与外部器件打交道时,端口如果为输入则与input delay约束相关,如果最为输出则output delay,这两种约束的值究竟是什么涵义,在下文中我也会重点刨析,但是前提是需要理解图1和图2建立余量和保持余量。 1、建立余量 : 不考虑clk_skew,数据在regA 的发射沿(即第一个上升沿)经过Tco+Tdata则会一直保持不变,等待着接受沿采集,接收沿有关建立只需满足的建立时间即可,建立余量=T-Tco-Tdata即下图红色区所示。 2、保持余量 蓝色是第一个数据,第一个上升沿是蓝色数据的发射沿,第二个上升沿是蓝色数据的接收沿 紫色是第二个数据,第二个上升沿是紫色数据的发射沿,第三个上升沿是紫色数据接收沿(图中未画) 意思是什么?第一个蓝色数据经过发射沿后延迟Tco+Tdata的时间就一直保持不变,直到紫色的数据在其发射沿来后经过Tco+Tdata时间将蓝色数据代替,蓝色数据只需要在其接收沿后停留的时间大于等于保持时间即可被正常采集,但是蓝色数据实际上能够停留多久是由Tco+Tdata决定的,因此Tco

[Xilinx笔记] 《FPGA伴你玩转USB3.0与LVDS》 读书笔记

匿名 (未验证) 提交于 2019-12-03 00:14:01
2019年10月15日09:31:10 第一部分・哪些要看(优先级由高到低) 0、8.1 LVDS 数据收发实例 8.2 带 CRC 校验的 LVDS 数据收发实例 1、3.6 USB3.0 控制器 FX3 的 SDK 安装 ” 3.7 USB3.0 控制器 FX3 的驱动安装 5.4 UART 的 loopback 实例 2、7.1 基于 FX3 内部 DMA 的 USB 传输 Loopback 实例 7.2 FX3 的 SPI FLASH 代码固化 7.3 7.2 FX3 的 SPI FLASH 代码固化 整个第七章,看了7.1到7.3之后,再决定要不要把整个第七章看完。 3、6.1 DD R3 IP核配置与仿真”, 4、3.4节 Vivado 中使用 notepad++ 的关联设置 第二部分・笔记 来源:博客园 作者: 天南第二剑修 链接:https://www.cnblogs.com/zf007/p/11675613.html

Quartus中出现错误: Can't place multiple pins assigned to pin location Pin_101 (IOPAD_X53_Y21_N14)

匿名 (未验证) 提交于 2019-12-02 23:52:01
可以从提示中看出是一个引脚复用的原因 但是在原工程中只是将PIN_101作为普通IO引脚分配给模块使用。 查到关于nCEO的定义: 大意是说,每颗FPGA都有nCE与nCEO两根pin,在多颗FPGA的系统中,第一颗FPGA的nCE接GND,而第一颗FPGA的nCEO将接到下一颗FPGA的nCE,如此这样继续接下去,而在最后一颗FPGA时,可以将nCEO floating或者当成普通I/O pin使用。而在单颗FPGA时,nCE直接接GND,nCEO可直接floating或者当普通I/O pin使用。 所以在单颗FPGA上可以将nCEO的引脚分配为普通IO引脚使用,但是这一般是在其他引脚不够用的前提下。 具体设置过程: assignments>device>device and pin options>dual-purpose pins里面把nCEO设置成use as regular i/o就可以了 文章来源: https://blog.csdn.net/weixin_41445387/article/details/97297851

FPGA 基于ised的USB芯片写入DDR的数据处理方法

假装没事ソ 提交于 2019-12-02 22:46:47
上一节已经成功地测试了DDR的各个链路以及各个地址的读写操作,这一节就来完成模拟从PC端发出数据经过USB最终给到DDR端口,之前已经实现了DDR的各个链路的验证,同时也实现了数据的读写。先看一下本次实验要实现的链路结构。 框图: 在之前的文章中已经指出,我们所做的实验USB的写入和读出的数据宽度为16bit,但是我们所i设计的DDR的突发长度为64,,两者的数据宽度不一致,如果是直接这样使用的话会导致DDR的高48bit的浪费,所以要先把usb端输出的16bit的数据宽度,通过拼接的方法拼接城64bit 的宽度再发送到DDR中。 USB端数据拼接的时序设计: USB端数据拼接的代码: 1 // ********************************************************************************* 2 // Project Name : OSXXXX 3 // Author : 李国勇 4 // weixin : li15226499835 5 // Website : https://www.cnblogs.com/lgy-gdeu/ 6 // Create Time : 2019-10-30 7 // File Name : .v 8 // Module Name : 9 // Called By : 10 //