自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SLAM_masterFei的博客

很多要学的啊。。。

  • 博客(54)
  • 收藏
  • 关注

原创 闲聊

以及快半年没更了,博主最近准备毕业论文,所以更新可能要等到明年34月份吧关于内容,博主打算以后专门更新FPGA或者数字IC方面的一些简单基础,模拟可能也会涉及但是不多,有些视觉或者软件的朋友就抱歉啦,博主以后可能不会更新这方面的了。关于工作,博主今年8月开始找工作,最终确定某微电子研究所,IC设计方向。当然同时还有另一家研究所的offer,fpga设计想说一点,如果是非科班的同学,找工作有疑惑可以和我交流,博主愿意解答哈哈哈。最后,博主是机械专业的,最后取IC是不是很可怕哈哈哈,我也觉得。。。

2020-12-25 20:34:21 443 4

原创 verilog编写异步时序中的握手信号

在数字电路设计中,往往不存在一个系统共用一个时钟源的情况,在异步电路中,为了使得数据之间的传输不发生错误,基本有以下三种方式:1.寄存器打两拍 2.握手信号 3.异步fifo下面简单介绍一下握手信号,做过iic通信的小伙伴应该知道在iic通信里会有一个ask应答信号来表明数据的正确传递,那么它到底是怎么产生的呢?来看下图上图din为clk_1时钟下产生的数据,在clk_2时钟下产生dout,由于clk_1时钟明显比clk_2时钟来的快,显然打两拍方法根本不可能采集到正确的数据(没有满足3个沿)。所以

2020-05-29 10:21:44 4586 4

原创 D触发器的建立时间和保持时间原理

大家都知道D触发器需要建立时间和保持时间,它们的含义大家也清楚,但是为什么需要建立时间Tsu和保持时间Th?下图展示了一般D触发器的内部结构具体的分析有兴趣可以慢慢分析,不是很难。主要说一下大概:默认SD,RD信号为高,cp=0时,D信号作用于G5,G6两个与非门分别输出D和!D,当cp=1时,G5,G6的输出端数据经过G3,G4到达其输出端,然后根据RS触发器得到输出Q。其中当cp=1时,无论D信号怎么变化都不会影响G3,G3输出的结果。(这里假设忽略了门延时)。这样的话一个上升沿触发的D触发

2020-05-28 10:59:54 3633

原创 verilog写一个简单的仿真文件(readmenh和task用法的简单体现)

仿真是FPGA验证很重要的一环,但是开始的时候由于我们的电路比较简单所以仿真文件的设计也相对简单。那么一旦系统复杂起来,输入的数据也复杂的话,可能就需要用到系统函数$readmemh和$readmemb了,它们可以读取文本的文件然后用来做激励信号等等,或者会用到task函数来循环操作某些赋值。下面给出一个带有$readmemh和task的简单仿真文件来具体说明下:module read_test(input clk,input rst,input [7:0] data_in,output re

2020-05-27 17:34:55 5035

原创 FPGA时序分析建立松弛和保持松弛

最近在做TDC的时候算是把时序稍微了解了一下,也明白了时序报告里建立松弛(WNS)和保持松弛(WHS)的概念和计算过程,这里分享一下,也欢迎大家一起交流。这里的建立松弛和保持松弛都是在FPGA内部的触发器之间的关系,并没有考虑到外部的输入输出延时。一般的模型为如下:建立松弛指的是,在下一次时钟触发脉冲来时,第一级触发器输出数据到建立时间前之间的时间最大为多少,这个一般用来确定时钟最大的...

2020-04-18 14:47:39 1204 2

原创 基于FPGA的TDC(数字时间转换)设计

额,老师让做一个TDC的计时模块用FPGA,那就做呗。。。首先说一句,我在做的过程中发现有些人说vivado不太可以做TDC的后仿,我自己试着发现是可以的,当然也许我其实是错的 哈哈哈 先不管了。首先上一张后仿的图大家不要在意我的傻吊命名。我设置的起始和结束信号之间的差值是21ns,那我最后的结果是多少呢(5-1)*4+(37+27)*76/1000=20.864ns 我不知...

2020-04-17 16:35:28 13065 13

原创 基于FPGA的DDS实现原理

嗯。。。最近画了个FPGA开发板练练手。。。希望一切的努力最后都能有所收获吧。DDS Direct Digital Synthesis,即直接数字合成器,可以用来生成频率范围很宽的各种波形。其原理图如下所示:比较重要的两个参数是相位控制字和频率控制字,一个用来控制初相位,一个来控制频率。那么这是如何做到的呢我们假设有一个基波,它一个周期有64个采样点,那么怎么把它的频率变成两倍呢?...

2020-04-09 20:45:15 2008

原创 xilinx 7系列FPGA配置

这篇还是以应用为主,介绍为辅,因为博主理解也不是很深。。。7系列有哪些配置呢,如下:其中应用比较广泛的是主模式和JTAG模式,那么如何决定模式呢,FPGA对应有M0-M2这三个接口,通过使这些接口接高电平还是地来决定哪个配置模式。其中高电平接的是FPGA的V CCO我们以常用的Master SP模式和JTAG为例1.JTAG模式JTAG模式很简单,对应端口相连就可以了。...

2020-04-01 21:53:11 1012 3

原创 xilinx 7系列FPGA时钟介绍

嗯。。。疫情影响各位小伙伴们还好吗。。。博主快炸了,老是担心工作,今年秋招啊。。。之前一直都是用人家的开发板来直接写逻辑的,但是最好自己还是要做一块嘛。。。最近已经开始动手画了,当然会参考人家现成的东西,谁让他们产品稳定呢,以后有机会会分享一下自己做的开发板,当然比较垃圾啊。我个人想法是想先画一个只有led和开关逻辑的简单FPGA板子,主要走通的流程,至于毕设用的,等等吧,毕竟对DDR3的走线...

2020-04-01 20:16:00 1662

原创 verilog -:或+:用法

最近在刷一些Verilog的题,希望对后续的找工作有所帮助吧。。。一般而言对于类似多位输出赋值,一般而言是这样的:wire a[MSB:LSB];assign a=b[MSB:LSB];这里的MSB 和LSB 都需要是常数而不能是变量,那么现实中很有可能需要对变量来进行操作,比如多路选择器等等,那么就可以用到 -:和+:操作符了,具体用法如下:module top_modul...

2020-03-16 12:15:29 7533 2

原创 verilog使用可综合的for语句

今天刷题,偶然接触到generate用法,小结如下:generate可以用来构成循环语句,但是必须要定义genvar作为循环变量结尾必须接上endgenerategenerate定义for循环时,必须要加类似如下形式for(i=0;i<n;i=i+1)begin: label ... ...endlabel是你自己定义的标签,可以理解为c++中的实例...

2020-03-12 12:13:23 9327 2

原创 同步和异步区别

同步和异步在数字电路时序逻辑中经常出现,怎么理解同步和异步呢,我拿同步清零和异步清零来简单描述下来看代码always@(posedge clk)begin if(!reset) out<=1'b0;//同步清零 else ...endalways@(posedge clk or negedge rst)begin ...

2020-02-06 12:00:39 1891

原创 MOS管开通过程和关断过程和简单恒流源电路解释

最近在做恒流源电路,也没有设计,直接抄的论文的电路。。。咋说呢,电路本身分析不难,有负反馈,虚短虚断直接用很容易得出激光的电流i=Vin/R4但是呢,我之前一直搞不懂它是怎么达到稳态的,就是说负反馈是如何作用使得电路稳定,因为我之前一直任务MOS管只要栅源电压超过阈值,ids的电流就直接由Vgs决定,那样mos管一开始就饱和了呀。。。后来才发现mos管是有开通和关断时间的。...

2020-01-06 19:42:30 10013 2

原创 Verilog表示小数-定点小数

最近博主搞FPGA图像处理,由于用作三维成像那么精度必不可少啊,但是Verilog又不像c等高级语言一样,我随便设个double就可以赋值啊啥的,那么咋办,定点小数就孕育而生了。当然verilog也可以用浮点数表示,这里博主就不提及了。何谓定点小数,顾名思义,就是小数位后的数目固定,即精度固定,这里假设有一个16位的变量,我们使它的精度为8位,那么它的精度是多少呢? 其实就是1/2^8=0.0...

2019-11-27 17:23:54 9668 1

原创 FPGA读取ov5642摄像头

豪威的ov系列的摄像头可谓在FPGA图像处理中应用广泛,虽然博主利用黑金给的教材直接跑程序就可以得到摄像头的实时显示,但是无奈黑金给的代码太多,太繁琐。看了半天勉强看懂每个文件的大体意思,知道了之间的关系,会改改基本参数,仅此而已。那还毕业毛业啊这样。。。所以博主打算自己编写一套完整的系统来实现读取摄像头并且进行图像处理,然后实时显示的系统。虽然说万事开头难,但是怎么说呢,不积跬步,无以至千里。所...

2019-11-03 20:51:11 2556

原创 vivado下ddr3的读写和测试详解

最近博主在根据例程做ddr3的读写测试,发现根本看不到好吧,虽然之前博主做过SDRAM的读写测试,但是ddr3更加复杂,时序写起来很吃力,所以需要用到vivado下自带的ip核。具体来看下面例化过程:1.在ip核下搜索mig 双击打开2.直接next 然后在当前界面修改你的ddr3ip核的名字这里博主是因为已经例化了ip核,所以名字不能修改,然后next3.这是要不要兼容...

2019-09-25 12:05:20 16164 19

原创 vivado验证简单的iic通信

关于iic的时序,之前已经讲过,这里纠正一个小错误就是inout类型的变量不可以用reg型,只能用wire型,之前在alter板子上reg可以也不知道为啥,反正vivado不行。由于博主很懒,就把之前写的代码照搬过来了,修改下,就可以在vivado上用了。关于代码不做介绍,通过实验验证了我们的程序在连续写或读的时候都不会存在问题,有想修改的朋友直接照搬即可,然后自己修改测试程序就是,读和写单字...

2019-09-17 11:32:06 1740 1

原创 利用FPGA实现简单的sdram的读写操作

没有什么事都是一帆风顺的,学业,感情。。。让人学会了很多但是又让人难以忘怀。。。人生路上起起伏伏,并不是真心的付出就可以得到相同的回报,有时候可能还会恰恰相反。。。好了,负面情绪就不带给大家了,博主还是来讲sdram吧。其实博主搞了3,4天才搞明白sdram的大体流程,其实主要是被那么多的地址线啊,各种工作条件给懵逼了,其实学下来发现也就不过尔尔有一个规律可循,以及知道了看数据手册的必要。不过...

2019-09-06 11:54:53 3373 5

原创 利用FPGA实现简单的iic通信协议

最近博主马不停蹄的学习FPGA就是为了可以尽快用FPGA来实现图像处理,好让我们的博客恢复正常内容哈哈哈,我说几句题外话,其实关于图像处理,工程应用和写论文是完全不一样的,如果是以找工作为目的,在牛逼的算法其实很难进行实际运用,归结到底就是速度以及实际效果。所以如果是以找工作为目的的小伙伴们其实不妨把时间花在积累工程经验中来,毕业论文啥的随便找两个算法复现了调调参就可以了。当然我这么说,读博的朋友...

2019-09-02 20:09:58 3584 5

原创 利用FPGA做FIFO测试

很久没有更新博客了,很抱歉,博主近两个月的时间做了一个决定,开始转战fpga领域,毕竟项目要落地,一味用电脑做也不行,所以以后的大方向是用FPGA来实现图像处理,怎么说呢,研究方向不变,但是过程变了。好了废话不多说,开始来实现。fifo即先进先出,它的输入输出参数如下:module fifo ( clock, data, rdreq, wrreq, empty, full,...

2019-08-30 14:58:36 1006

原创 c++二级指针和一级指针

对于指针,大家都不陌生,最常见的就是一级指针用来指向一个变量,最简单的例子这样可以通过对p解引用来改变a的值那么二级指针是什么?分两种情况,一种是指向一个一级指针,一级指针指向一个变量,可以如下表示:这是一个简单的例子,题中,指针p存放的是a的地址,二级指针q指向变量p,即q存放的是p的地址,所以对q解一次引用得到的是变量p,即a的地址,解两次引用相当于对p解引用得到变量a...

2019-06-16 16:17:42 1892 1

原创 c++华为面试题--牛客网-3.0

越做越觉得非科班出身的艰难。。。要不还是老老实实画图去?好吧 再来一题:给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”这个就是简单的循环归类。。。找出每个字符串相同字符的个数,来看代码...

2019-05-19 10:51:00 875 3

原创 转换构造函数和转换函数

何谓转换构造函数,来举个简单例子:#include<iostream>#include<string>#include<vector>using namespace std;class a{public: int x, y; a(int i, int j=2) :x(i), y(j) { }};int main(){ ...

2019-05-06 19:14:13 919 3

原创 c++华为面试题--牛客网-2.0

虽然现在才研一,但感觉做项目之余还是很有必要去做一些面试题的,怎么说呢,这样可以巩固下基础,毕竟自己的工作可能还是偏一些算法会导致有些地方注意不到。好,来看这题:描述:输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001这题十分简单啊,大一c语言就有十分基础,来看博主参考代码:#include...

2019-05-04 17:05:48 1004 2

原创 c++华为面试题--牛客网-1.0

有空开始看看牛客网的题,题目要求是输入一个字符串,得到最后一个单词的长度。直接来代码需要注意的是不能直接定义一个char* 然后输入,因为如果用cin输入字符串必须是一个数组用char数组来输入也不行,因为cin 当输入空格或回车会存在输入流中。等待下次cin读取。#include<iostream>using namespace std;int main()...

2019-04-26 10:58:54 712

原创 QT为按钮添加图片以及鼠标停靠显示内容

应项目要求,对方提出不希望通过下拉菜单进行点击,希望添加快捷键并且进行图片添加。大致是这样的:具体做法如下,我采用了比较方面且直观的设计器进行设计:1.添加按钮:然后在其属性列表找到进行图片的添加。2.添加样式如下,注意图片一定要在你当前代码的工作空间(注意pcl_test是我的当前的工作目录,可以照此写出你的目录):3.然后就可以使用信号槽进行功能的实现,一般形式为...

2019-04-20 11:59:54 4251

原创 基于灰度质心法和骨架的激光中心线提取

之前博主一直在做线结构光成像,硬件比较垃圾,相机加镜头和线激光器总共成本在1000以内,精度在0.1mm左右,感觉这种成本做出来还是不错的,其实主要大部分时间花在了分析上来达到最好的效果。一般对于激光条纹线,主流的方法是利用steger或者它的改进方法去提取中心线,但是博主之前实现了一下,感觉图像里的hessian矩阵并不能很好的描述条纹的法向,所以就另换方法,这次采用先骨架提取再利用法线上的...

2019-04-03 11:43:51 8073 35

原创 vs2015编译boost库

最近需要把之前做的qt软件的可执行文件放在别的电脑上运行,但是编译提示缺少boost库,没办法,只好安装下。1.首先访问官网下载你要的版本https://sourceforge.net/projects/boost/博主这里下载的是1.64.2.解压并且启动vs的命令行,一般在这里从你的开始启动菜单去找vs2015的文件夹就可以找到了3.切换到你的解压缩目录执行如下:...

2019-03-24 19:37:30 216

原创 opencv读取大恒相机

大恒相机真的是坑,如果你想连续保存保存图像基本会蓝屏,至于原因我还在找,感觉它的sdk做的不是很人性化,怎么说呢,用opencv读图像一点问题没有,显示也没有,但是想要连续保存就会蓝屏,真的不是很懂。我用的代码几乎就是sdk里面doc文档的c++,但是怎么用opencv来读取图像呢,需要用到memcpy这个内存拷贝函数,代码如下Mat curr(objImageDataPointer-&...

2019-01-05 11:50:09 6304 10

原创 3维Harris角点提取pcl实现

Harris响应一般是用在二维图像上的,用来寻找图像上的角点,算法见上一节描述,如何将二维扩展到三维呢,博主看的还不是很清楚,但是大致是这样的,对于空间上的某一个点,进行一个半径r的搜索,对于区域内的点进行pca重新确定它的主方向,我个人理解是相当于确定新的x和y方向,这样就可以类比到平面了,虽然会丢失一个维度,但是没有关系啊,对于最后一个维度,我们认为是该点拟合的x,y平面的法线方向,这也是十分...

2018-12-28 16:57:35 6283 13

原创 Harris响应的一点认识

最近学习了一下关于Harris响应的相关知识,主要用于角点的提取上,它主要是利用一个滑动的窗口,对于某个固定方向的(u,v),我们可以得到在当前像素下的窗口进行移动所产生的像素差,公式如下:w为窗口函数,代表了窗口下每个像素点的权重,一般采用高斯函数,表示越靠近所选点,其权值越大。然后对于变化的像素点,我们为了加速,用泰勒展开这样我们成功将差值转换为了这样的二次型,然后对中间的...

2018-12-25 17:52:45 4212

原创 vs2015安装opencv3.4.1

vs2015的安装可以见之前的博客,关于opencv,还是很简单的,首先去官网下载opencv你要的版本https://opencv.org/,然后直接安装,按照提示将opencv的文件装的你要的位置,然后进行环境变量的设置,在path里添加E:\opencv\opencv\opencv\build\x64\vc14\bin然后打开vs2015新建一个项目,然后在属性里设置它的包含项和库...

2018-12-24 22:18:08 576 1

原创 windows下qt输出中文

请在你的头文件中输入这个即可解决#if defined(_MSC_VER) &amp;&amp; (_MSC_VER &gt;= 1600)  # pragma execution_character_set("utf-8")  #endif

2018-12-14 22:03:17 589

原创 QT框架下进行pcl点选功能

首先感谢学长的帮助,关于pcl点选网上有源码,但是如何移植到qt里面呢,通过将回调函数设定为静态函数便可以实现这一功能,然后需要注意的是在初始化函数中,需要对点选功能进行操作viewer-&gt;registerPointPickingCallback(point_callback, this);这里面利用this指针将类成员传给函数,这样就可以使用类里面的成员了。需要注意的是,初始...

2018-12-09 17:08:00 4045 47

原创 QT进行pcl可视化显示

首先由于pcl的vtk与qt的不兼容需要下载vtk控件,详细的介绍见之前的博客。然后打开你的vs,新建qt项目,然后进入qtdesign,找到qvtk控件,在下图所示,然后加一些常用的控件就好了。然后就可以愉快的写代码了,我这个实现了打开文件和滤波两个功能,敬请参考#include &lt;QtWidgets/QMainWindow&gt;#include "ui_pcl_te...

2018-12-06 20:22:48 5954 1

原创 pcl点云库实时显示点云变化

最近有需要用到pcl点云库来显示点云,并且还要根据时间来实时显示它的变化,实时显示主要是要用到CloudViewer这个类,它创建一个显示器用来显示点云,一般来讲动态显示点云就在这个显示器中不断地添加或者删除一些点来达到动态实时的功能。废话不多说,一般用法如下,即新建一个点云指针用来存放点云,然后显示void show(vector&lt;Point3d&gt;&amp; pt5,pcl...

2018-12-02 16:22:39 6757 10

原创 c++计算程序运行时间

用法很简单,就是头文件包含ctime这个库,然后在你想要的计算一段程序运行时间的开头加上clock_t start=clock();结尾地方加上clock_t finish=clock()那么运行的时间就是:(double)(finsish-start)/CLOCKS_PER_SEC很简单是不是。。。...

2018-12-02 16:14:52 392

原创 vs2015配置pcl1.8.1和qt5.7.1

恩。。。之前的三个软件都已经装好了,具体可以见之前的文章,现在是想要在qt中显示点云,但是pcl的vtk并没有,所以需要自己编译。vtk8.0的链接在这https://gitlab.kitware.com/vtk/vtk/tree/v8.0.0  将下载好的VTK-8.0解压到pcl的3rdParty下,在VTK-8.0里新建build文件夹,并清空PCL自带的VTK文件夹的内容,使用camke进...

2018-11-27 19:39:32 2057

原创 windows下安装cmake

步骤很简单安装cmake1.打开网址https://cmake.org/download/   2.选择msi文件下载可以直接安装,注意跳出的选项请点击for all users 这个选项也就是第二个,然后安装在你想要的目录3 完成注意:最后不要下zip文件,不然有可能下zip会出现没有bin文件的情况。。。...

2018-11-27 10:52:49 686

原创 vs2015配置pcl1.8.1

之前前配置好了vs2015和qt5.7.1由于项目需求,需要用到pcl,进行配置。。。首先下载pcl,我下的是vs2015 win64位的,网址在这里https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.8.1哎,但我知道好多小伙伴下不了的,所以我放到我的百度云里面了,你们可以下。链接在这里https://pan.baidu....

2018-11-26 19:29:16 1111 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除