技术
在FPGA中三态门比较常见,因为FPGA是做为一个高速处理的器件,免不了要进行输入输出数据,常规的输入和输出是分开的两个接口要不停的切换比较麻烦,在FPGA中用的双向口一般都是用三态门来作为输入和输出的,这样优点是只要一个接口就可以输入输出比较节约逻辑资源,但缺点是三态门的处理没有常规两个I/O的方便,这里我们来看看怎样使用三态门,下图是三态门的结构。
<strong>AES简介</strong>
高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:
如果你对Vivado HLS中综合之后端口的ap_none之类的类型指示摸不着头脑的话,那就来一起学习一下它们是如何使用的吧。在Vivado HLS中,我们可以指定端口使用的类型,这样在对C代码进行综合的时候,就可以指定某个端口所使用的转换协议了。常见的类型有:
1. ap_none
默认类型,该类型不适用任何I/O转换协议,它用于表示只读的输入信号,对应于HDL中的wire类型。
2. ap_stable
只用于输入信号,其具体实现方式仍为ap_none。它用于向Vivado HLS的综合器表明该信号在两次复位之间值是不变的。
3. ap_vld
SDSoC、SDAccel、SDNet和HLS工具傻傻分不清楚
<strong>Software Define 的概念</strong>
近年来“Software Define ” 软件定义这个词持续火热,全球知名技术研究和咨询公司Gartner早在对2014年最有战略意义的十大技术与趋势做出预测时,便提出了软件定义一切(Software Defined Anything)的概念,他们预测这类技术会在未来三年里拥有巨大潜力,并在同行业中产生重大影响。两年后的今天回顾这一概念和技术的发展,不难看出,Software Define的确成为了行业风向标,其应用可谓无处不在。
本文是该系列的第2篇,上一篇介绍了System Generator的基本知识以及软件的安装。本文将以一个简单的数字滤波器的设计为主题,介绍Sysgem Generator的完整设计流程,同时详细介绍使用到的各个block。
本设计使用到的block
1.Xilinx block:
Digital FIR Filter(->DSP):数字滤波器
Gateway In(->Basic Elements):数据输入
Gateway Out(->Basic Elements):数据输出
System Generator(->Basic Elements):系统管理
FDATool(->DSP):滤波器设计
学习RCNN系列论文时, 出现了感受野(receptive field)的名词, 感受野的尺寸大小是如何计算的,在网上没有搜到特别详细的介绍, 为了加深印象,记录下自己对这一感念的理解,希望对理解基于CNN的物体检测过程有所帮助。
在FPGA中,实现逻辑的基本单元是查找表(LUT)而非基本门电路。目前的FPGA中,单一LE或者Cell通常能实现至少4输入查找表的逻辑功能。
4输入查找表可以看成是具有4位地址1位数据的存储器,能够存储16bit数据,这也是LUT能被用于组建分布式RAM的原因。
如果要构成一个6输入1输出MUX,可以通过两片4输入查找表级联,也可直接用一片完整的6输入查找表,两片4输入的查找表的存储容量是32,而一片完整的6输入查找表的存储容量是64;若使用6输入查找表(存储容量为64)实现4输入(存储容量为16)的逻辑功能,则浪费了75%的存储容量。也就是说,采用较少输入的查找表实现较多输入查找表的功能,在面积上有更高的利用率。
记录《学会System Generator》系列的目的是为了熟练掌握Xilinx公司旗下System Generator产品的使用。本文是该系列的第一篇,主要介绍System Generator的基本知识以及软件的安装。
<strong>System Generator基本特性</strong>
System Generator是一款DSP设计工具,其借助MATLAB中的Simulink开发环境完成FPGA的设计。这是一种与传统的“从RTL出发进行FPGA设计”完全不同的设计方法。
System Generator具有如下关键特性:
1. 超过90种DSP设计模块,包括加法器、乘法器、寄存器、FFT、滤波器、存储器等等;
1. 概念
英文名:convolutional neural network
是一种前馈神经网络,即表明没有环路,普通神经网络的 BP 算法只是用于方便计算梯度,也是前馈神经网络。
是深度学习结构的一种,是一种深度、前馈神经网络。
可以使用 BP 算法进行训练
ConvNet architectures make the explicit assumption that the inputs are images, which allows us to encode certain properties into the architecture
卷积神经网络的前提:输入是二维结构或者三维结构,但起比较大作用的是空间维度(spacial),深度那一维并没有太明显的作用。
AXI4-Stream协议是一种用来连接需要交换数据的两个部件的标准接口,它可以用于连接一个产生数据的主机和一个接受数据的从机。当然它也可以用于连接多个主机和从机。该协议支持多种数据流使用相同共享总线集合,允许构建类似于路由、宽窄总线、窄宽总线等更为普遍的互联。比较重要的信号线有:
ACLK: 时钟源,全局时钟信号。所有信号在ACLK信号上升沿采样。
ARESETn:复位源,全局复位信号。ARESETn低电平有效。
TVALID:主机数据同步线,为高表示主机准备好发送数据,表示主设备正在驱动一个有效的传输。
TREADY:从机数据同步线,为高表示从机准备好接收数据,表示从设备在当前周期能够接收一次传输。
开发环境 VirtualBox, Ubuntu 16.04 64 bit, Petalinux 2015.4
在VirtualBox中安装Ubuntu,用户名:xilinx-arm 密码:rootstep1: 与Win10共享文件问题(百度)
step2. apt-get更新源
运行apt-get update。
apt-get update
step3. 安装petalinux需要的依赖库
<strong>前言</strong>
FPGA的能耗比优于GPU,且设计自由度高,受到许多深度学习开发者的青睐。但是用HDL语言开发神经网络过于复杂,利用Xilinx公司的高层次综合工具vivado HLS开发RTL逻辑的IP核则可以降低开发难度。
本文主要描述了如何使用vivado HLS的基本功能。文章内容主要来自于Xilinx官方文档:ug871-vivado-high-level-synthesis-tutorial,所用代码来自于Xilinx官方例程:ug871-design-files\2016.1\Introduction\lab1。读者可以在原文档中阅读到更详细的内容。
前言
在上一次分析中,分析到了
HandoffAddress = LoadBootImage();
在分析这个函数之前,在从0地址运行之前,在复位(上电复位)之后会从bootROM这个位置开始执行代码,在bootROM中,程序会将QSPI(如果是从qspi启动的话)的前nK的数据拷贝到OCM中,然后跳转到OCM中执行。把生成的BOOT.bin文件用二进制程序打开,根据数据手册可以分析一下前面的数据含义。
花了几天看完了FSBL的代码,在这里做个总结,分析一下zynq的启动过程。
众所周知,xilinx zynq 7000系列的芯片中包括两个部分,PS和PL,也就是FPGA的逻辑编程的部分跟嵌入式ARM的部分,ARM部分是双核的A9处理器。关于FPGA的部分在这里就不说了。其实说的简单点,可以吧这个芯片看成一个带有FPGA外设的ARM处理器,下面详细分析一下启动流程。
摘要: 还在为特征选择抓狂?这个工具了解一下!
特征选择,即在数据集中查找和选择最有用的特征的过程,是机器学习的关键步骤。不必要的特征会降低训练速度、模型的可解释性,最重要的是会降低测试集的泛化性能。
Python中的lambda提供了对匿名函数的支持。使用lambda,我们可以实现函数编程,即将函数作为参数传递给其他函数。在Python中,lambda的作用可以从多个例子来理解:
1, 用在过滤函数中,指定过滤列表元素的条件:
filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9])
> [3, 6, 9]
2, 用在排序函数中,指定对列表中所有元素进行排序的准则:
sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))
> [5, 4, 6, 3, 7, 2, 8, 1, 9]