- 博客(35)
- 资源 (1)
- 收藏
- 关注
转载 如何在FPGA中实现高效的compressor加法树
引言大规模的整数加法在数字信号处理和图像视频处理领域应用很多,其对资源消耗很多,如何能依据FPGA物理结构特点来有效降低加法树的资源和改善其时序特征是非常有意义的。本篇论文是基于altera公司的FPGA,利用其LUT特点,探索设计最大程度利用LUT以及改善时序的compressor树的结构。1 半加器和全加器半加器是两个输入bit相加,输出结果S和进位C。表达式为:S=A^B...
2019-06-02 09:29:56
2937
原创 用LUT来搭建乘法器
引言卷积占据了CNN网络中绝大部分运算,进行乘法运算通常都是使用FPGA中的DSP,这样算力就受到了器件中DSP资源的限制。比如在zynq7000器件中,DSP资源就较少,神经网络的性能就无法得到提升。利用xilinx器件中LUT的结构特征,设计出的乘法器不但能灵活适应数据位宽,而且能最大限度降低LUT资源使用。01Xilinx ultrascale器件LUT结构在这里简要介绍一下...
2019-05-25 22:53:54
2964
2
原创 图像处理一:加速直方图统计
01 引言 直方图统计在图像增强和目标检测领域有重要应用,比如直方图均衡,梯度直方图。直方图的不同种类和统计方法请见之前的文章。本章就是用FPGA来进行直方图的计算,并且利用FPGA的特性对计算过程进行加速。安排如下:首先基于直方图算法进行FPGA架构设计,这里主要考虑了如何加速以及FPGA资源的利用两个因素;最后基于system Verilog搭建一个验证系统。 02 FPG...
2019-04-19 09:31:02
1602
原创 稀疏LSTM硬件结构
本文介绍稀疏LSTM的硬件架构,一种是细粒度稀疏化,权重参数分布随机,另外一种是bank-balance稀疏化。1. 文章结构Long-short term memory,简称LSTM,被广泛的应用于语音识别、机器翻译、手写识别等。LSTM涉及到大量的矩阵乘法和向量乘法运算,会消耗大量的FPGA计算资源和带宽。为了实现硬件加速,提出了稀疏LSTM。核心是通过剪枝算法...
2019-03-29 21:55:13
1525
1
原创 LSTM原理
“本文从处理具有时间依赖的信息出发,介绍了RNN的原理和存在问题,在此基础上引出了LSTM,讨论了LSTM对于解决RNN的长时依赖问题的方法。作者/编辑:moon”Long-short term memory,简称LSTM,被广泛的应用于语音识别、机器翻译、手写识别等。他们由Ho...
2019-03-29 07:55:43
2235
原创 脉动阵列
脉动阵列是一个比较古老的概念,早在1982年就有了,可是,最近google的TPU采用了这个结构,脉动阵列又火了起来。我也是从今年新入职了一家公司后才接触到的,对比之前自己设计的AI架构,脉动阵列确实有很多优势。所以本文从传统AI计算架构和脉动阵列的对比来说明脉动阵列的设计方法和优势。卷积运算在正式介绍AI硬件架构前,简单讲一下卷积运算。因为卷积运算在CNN中发挥着重要作用,...
2019-03-29 07:55:04
15350
1
原创 剪枝
本文主要介绍了一种压缩网络的方法:剪枝。剪枝就是去除网络中一些不重要的神经元,大大降低了计算量和权重数量,提高了网络运行效率。01决策树剪枝决策树剪枝在周志华老师的《机器学习》一书中给了简洁易懂的介绍,此处主要引自书中。剪枝技术最先被用于决策树,是决策树对付过拟合的重要办法。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,导致结点过多。这时就可能因为决策树学...
2019-03-29 07:54:21
4921
转载 Modelsim下uvm环境搭建
1. 下载modelsim软件下载modelsim,这里用的是modelsim10.4版本。下载地址:https://pan.baidu.com/s/1wnCwlQ2EblCkKHFOM6gEyw 提取码:772l 。完成下载和安装,在安装文件夹中可以看到uvm-1.1d,这是我们使用的uvm版本。在uvm-1.1d/win64下有uvm_dpi.dll文件,这是已经编译过的uvm库。...
2019-03-03 19:35:04
3378
原创 zynq上IIC驱动
i2c总线驱动编写:/*filename: I2C.cauthor: pingbo andescription: EEPROM I2C*/#include <linux/module.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/kernel.h>...
2019-02-15 20:56:18
2822
原创 MIPI-CSI-2协议
整体结构CSI-2为发送者和接收者数据传输和控制提供了规范,从物理上看包含了控制部分和数据传输部分。发送者作为从设备而接收者作为主设备。协议包含了三个层次:物理层、协议层和应用层。其作用为:物理层:定义了物理链路的连接方式。 协议层:又分为三层(像素打包解包格式,低水平协议,链路管理),主要关于图像数据打包方式,以及处理多通路图像数据的方式等。 应用层:协议的最上层,和图像数据编解码等处...
2018-12-17 22:18:47
17128
1
原创 block驱动
#include <linux/module.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/genhd.h>#include <linux/blkdev.h>#include <l...
2018-12-08 10:34:13
473
原创 LED驱动
基于xilinx zynq平台。#include <linux/module.h>#include <linux/init.h>#include <linux/cdev.h>#include <linux/fs.h>#include <linux/kernel.h>#include <linux/uaccess.h&...
2018-12-08 10:31:33
288
原创 zynq上KEY按键中断驱动编写
#include <linux/module.h>#include <linux/init.h>#include <linux/cdev.h>#include <linux/fs.h>#include <linux/kernel.h>#include <linux/ioport.h>#include <as...
2018-12-08 10:29:46
913
原创 模式识别(六)特征生成2
根据处理的图像,声音,文本等信息的统计特性,可以给出很多反映信息特性的特征。模式识别也是对特征的辨别,不管是有监督的学习分类还是无监督的聚类,都间接或者直接的对特征进行了提取或者表征。比如线性回归,在使用一条曲线拟合一堆数据的时候,这条曲线(或者曲线参数)就是这堆数据的特征,而结果和实际值的平方和就是这种特征和数据的接近程度。 1. 图像的区域特征 (1) 一阶统计特征: 一幅图像的一阶统计
2018-03-01 17:03:31
544
原创 模式识别(五)特征生成-1
Karhunen-Loveve变换KL变换用于维数降低,维数降低可以大大降低计算量。KL变换是通过线性变换,将空间映射到另外空间,然后可以在另外空间进行维数裁剪,去掉影响较小的维,从而降低维数。假设由x映射到y,变换为A,即有其中R_y就是对角矩阵。然后可通过选择对应最小特征值的向量来作为新的维,从而降低维数。奇异值分解奇异值分解被广泛用
2018-01-23 20:52:42
800
原创 模式识别(四)特征选择
数据归一化 归一化是为了将数据特征值限制在固定区间,这样可以在分类任务中更能关注相对特征值而不是特征值的绝对大小。归一化通常采用均值和方差来进行:
2017-12-28 20:26:11
2018
原创 zynq平台PS端对DDR绝对地址访问
当PL端需要通过AXI总线访问DDR时,而PS端同样要访问到DDR,为了实现PL和PS对相同地址访问,可以通过定义变量到绝对地址的方法。 1. 单个变量 当只有一个变量情形下,可以定义一个指向DDR内存中的指针,比如: int* p=(int*)(0x100000); 2. 数组 对于数组不能用分配指针的方式来分配地址,这样在通过指针写或者读数据时,有可能同其它变量发生冲突。 需要修改l
2017-12-26 14:06:27
11572
1
原创 模式识别(三)非线性分类器
遇到像图1中所示的样本分类,线性方法是无法发挥作用的。因为塔是线性不可分的,这时候必须采用非线性方法。1. 多层感知器网络多层感知器包含一个以上隐层和一个输出层,隐层将输入映射到一个超立方体顶点,输出层完成线性分类。通过隐层不断映射,最终可以将样本映射为线性可分。隐层中每个神经元相当于一个超平面,超平面将样本点映射到超立方体顶点上。假设一个感知器网络由L层构成,每层有
2017-09-23 22:21:58
3359
原创 system verilog中不可不小心的陷阱
任务和函数(task and function) 任务可以调用函数以及其他任务,但是函数不可以调用任务。在verilog中函数必须有返回值,但是在system verilog中扩展了函数功能,其可以返回空,即void。同时task参数列表可以表示为类似C的形式,用括号括起来,如:task test(input logic a, input reg[5:0]b, output logic c);任
2017-09-09 13:46:07
13753
原创 图像处理(3)频率域滤波
Fourier变换 Fourier变换最开始由傅里叶提出,当时为了解决热力学问题。后来经过发展形成了一套完整的理论,应用在物理学、信号学等很多方面。如果一个函数满足绝对可积条件,即: 因为计算机处理的是离散值,要求对f(x)和F(w)都采样,这时Fourier变换被称为离散Fourier变换(DFT),为: 求出离散Fourier变换需要的计算次数很多,为了降低计算量,可以利用快速Fo
2017-07-29 22:58:57
8709
3
原创 图像处理(2)空间滤波
滤波原理 滤波是为了消除噪声影响,提高图像质量,滤波方法的选择取决于噪声的特性。滤波包括空间滤波和频率域滤波,在数学上二者可以相互转化。空间滤波本质上是通过临近像素的微操作来实现噪声降低,比如线性平滑滤波,就是通过临近像素的加权或者不加权平均来消减噪声强度,这对于方差较小较稳定的噪声效果较好。用公式来表示空间滤波就是: 实际上就是通过一个w模板在图像上移动,然后进行相关性运算。也可以进行卷积
2017-07-23 10:11:31
650
原创 图像处理(1)直方图均衡
为了增强图像对比度,通常需要调整图像的灰度级分布,使得亮暗更加分明。如果一幅图像中某些灰度级分布概率过小,就会导致这部分图像不清晰,因此灰度级分布的越平均图像对比度越好。表现在空间上,如果减小分布较大的灰度级的面积,而增加分布较小的灰度级面积,就会突出原来显示不清晰的部分。 调整图像对比度可以看作一个灰度级变换的过程,通过灰度级变换来改变直方图分布。假设原来图像函数为f(r),分布概率密度为p(r
2017-07-22 14:13:46
660
原创 LVDS调试问题
1. 结构主控板和喷头版之间采用LVDS线路连接,主控板上serializer将10bit数据进行串行转换,喷头版deserializer将LVDS串行数据信号转化为并行10bit。Deserializer通过对LVDS数据采样来同步于serializer芯片,如果没有同步,会有失锁信号产生。LVDS线路采用双绞线,长1m。接口用RJ45-14网口。喷头版接口图如下:其中
2017-06-30 16:01:19
10308
2
原创 HDMI协议
1. 信号定义Type A:TMDS Data:采用差分传输,共有三路。TMDS Data shield:TMDS clock:A类型的时钟频率小于55MHz,即最大传输165Mpixels/sec。TMDS clock shield:SCL:串口通信时钟。SDA:串口通信数据通路。CEC:用户可以通过CEC协议对设备进行控制。Hot Plug D
2017-05-24 23:02:19
19838
3
原创 QT学习(七)QT之重复绘图
1. 很多时候,需要在绘图设备上进行连续或者重复绘图,如果每次都要进行重新绘图,会大大降低绘图效率。比如,要连续绘制椭圆形,采用以下方式:voidWidget::paint(){ QPainterpainter; QColorblack(0,0,0); QColorlime(0,255,0); QPenpen(black,1.5);
2017-05-03 11:23:02
3061
原创 QT学习(六)QT之贪吃蛇
1、开始界面对话框设置:设置对话框控件以及标题 1. GameStart::GameStart(QDialog*parent)2. :QDialog(parent)3. {4. 5. createWidgets();6. setWindowTitle
2017-03-22 22:52:33
891
1
原创 QT学习(五)QT之多线程
1. 线程同时进行QT提供了QThread来定义一个线程,我们通过定义类thread来重新实现它。classThread:publicQThread{ Q_OBJECT public: Thread(); voidsetMessage(constQString&Message); voidstop(); protected
2017-02-26 21:11:18
363
转载 QT学习(四)定时器
1、时间设置QT中的QTimer类是用于定时功能,通过调用start()函数和stop()函数可以实现定时开始和结束,当所定时间到,其会自动发射timeout()信号。Timer::Timer(QWidget *parent) : QWidget(parent){ finishTime=QDateTime::currentDateTime();
2017-02-24 08:10:41
585
原创 QT学习(三)文件操作
一、MainWindow设置1. 设置窗口内容窗口包含菜单栏、工具栏、主窗口内容和状态栏。新建QTextEdit或者其他窗口内容(如 spreadsheet等),然后将之放置窗口中间。 textEdit=new QTextEdit(this); setCentralWidget(textEdit); setWindowTitle(tr("
2017-02-19 15:20:55
1576
原创 QT学习(二)QT对话框——利用QT设计师
1. 新建工程项目,application-QT widgets application,名字dialog,基类选择QDialog,选择使用界面文件(.ui)。2. 打开dialo.ui文件,即打开了界面编辑,界面中包含Buttons、Containers、input widgets等窗口部件。(1)依次向对话框中拖入3个pushButton,类名分别命名为
2017-01-07 12:04:59
4105
转载 QT学习(一)QT对话框设计
软件和系统:QTcreator5.7,win8.11. 首先新建项目,选择application中的Qt widgets application。 2. 创建类Dialog,选择QDialog作为基类。3. 由于对话框简单,可以通过代码实现,而不用ui。4. 首先了解以下几个控件:(1) QCheckBox一个选项按钮
2017-01-02 13:22:19
991
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人