代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

推荐文章

基于FPGA的VGA展示静态图片

    基于FPGA的VGA显示静态图片  终于熬到暑假了,记过三四周的突击带考试,终于为我的大二画上了一个完整的句号,接下来终于可以静心去做自己想做的事情了,前一阵子报了一个线上培训班,学学Sobel边缘检测,之前一直在学习图像处理,但是因为一直看人家的代码,到后来难免有点空虚。所以说自己狠下心来,报了一个线上培训班,重新学习一下,自己设计Sobel边缘检测,势要摆脱抄别人代码的魔咒。所以这次图像显示部分和在彩色条纹中显示一副图片的代码,全部是我自己设计的,虽然不是什么大工程,但是还是满满的成就感,这次用的时间比较久,因为使用的是新板子,Xilinx的ZYBO,之前没用过,一直放在实验室里吃灰,所以不如把它用起来,想起来要学的东西还是很多的,慢慢学呗。          ZYNQ算是Xilinx的一款比较高端的板子了

    阅读全文>>

作者:coody分类:【_Verilog浏览(1527

2018-05-23

串口发送模块——一字节数据发送

    串口发送模块——1字节数据发送  设计思想与代码规范均借鉴明德扬至简设计法,有不足之处希望大家多提建议,真正做到至简设计。本篇着重提出FPGA通用设计思想,以计数器为核心的代码规范以及VIVADO debug操作流程。   此次试验旨在通过串口试验,讲述FPGA的硬件设计思想和通用设计流程。串口是电子设计中非常常见,可以说掌握了串口数据收发,就明白了最基本的时序操作。串口的数据收发过程有其固定的数据格式。下面是本次实验使用的数据格式,在满足串口格式规范前提下是可变的:   空闲状态下为高电平,当发送数据时,先发送低电平起始位,后从低位开始逐位发送有效数据比特,数据位位数由双方约定,此处设定为8位。可在数据位后添加数据校验位,但这不是必须的。发送完后发送高电平停止位并持续空闲状态直至下一次发送。虽然本次实验没有用到,但这里简要讲一下奇偶校验的原理:   奇偶校验是一种非常简单常用的数据校验

    阅读全文>>

作者:coody分类:【_Verilog浏览(915

2018-05-28

关于Test-Pattern Generator IP核的测试

    关于Test--Pattern Generator IP核的测试关于Test--Pattern Generator IP核的测试 1.Test--Pattern Generator 功能介绍 生成24-bit RGB视频流,此IP核可以用于系统测试,不需要先在片上ROM存储图片数据,然后在进行后续操作。   2.Qsys系统搭建   3.将Qsys系统生成的模块添加进入工程,并编写顶层文件   顶层文件:   4.编写testbench,并在modelsim中仿真   5.验证分析     在Test-Pattern Generator中设定生成图片为:4X3,则会生成12个像素点的数据。     6.生成一副较大的图片,并将像素数据导入到matlab中显示出来  &n

    阅读全文>>

作者:coody分类:【_Verilog浏览(878

2018-05-23

Xilinx 学习笔记1-新建工程跟创建源代码文件

    Xilinx 学习笔记1---新建工程和创建源代码文件  最近终于有空可以记录一些之前学习的内容,本博客系列记录笔者Xilinx ISE学习之旅,当然现在Vivado是学习热门,一步一步来。搞定 ISE,Vivado上手也会很快。 1.安装软件 软件部分的下载与安装可自行到Xilinx官网下载http://china.xilinx.com/ 2.新建工程文件并编写源程序 图1 新建工程       用过Altera的Quartus II,再使用Xilinx的ISE,基本上流程都差不多,在file---new project,如图1所示,出现如下图2界面,分别填写工程名称,具体路径和工作目录,并选择顶层源文件类型为HDL,输入完毕后点击next。 图2工程名填写      

    阅读全文>>

作者:coody分类:【_Verilog浏览(701

2018-05-26

基于FPGA的侵蚀膨胀算法实现

    基于FPGA的腐蚀膨胀算法实现         本篇文章我要写的是基于的腐蚀膨胀算法实现,腐蚀膨胀是形态学图像处理的基础,,腐蚀在二值图像的基础上做“收缩”或“细化”操作,膨胀在二值图像的基础上做“加长”或“变粗”的操作。那么什么是二值图像呢?把一幅图片看做成一个二维的数组,那么二值图像是一个只有0和1的逻辑数组,我们前面Sobel边缘检测后的图像输出边缘效果,设置个阈值,大于阈值输出为1,小于阈值输出为0,最后输出就是一幅二维图像了。 上一篇我是直接用MATLAB处理后的灰度图片进行Sobel边缘检测的,在图片的选取中难免会有噪声的出现,所以为了使边缘检测的效果更加显著,我们将图像先进行中值滤波,然后再进行Sobel边缘检测,最终加上腐蚀膨胀算法使图像边缘更加细腻并硬朗。 首先我们比较一下中值滤波前Sobel和中值滤波后Sobel两种方法

    阅读全文>>

作者:coody分类:【_Verilog浏览(1076

2018-05-27

FPGA基础知识(3)典型FPGA开发流程

    FPGA基础知识(三)典型FPGA开发流程FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。FPGA的开发流程一般下如图所示,包括电路设计、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。   1. 电路设计 在系统设计之前,首先要进行的是方案论证、系统设计和FPGA芯片选择等准备工作。系统工程师根据任务要求,如系统的指标和复杂度,对工作速度和芯片本身的各种资源、成本等方面进行权衡,选择合理的设计方案和合适的器件类型。一般都采用自顶向下的设计方法,把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接使用EDA元件库为止。 2. 设计输入 设计输入是将所设计的系统或电路以开发软件要求的某种形式表示出来,并输入给EDA工具的过程。常用的方法有硬件描述语言(H

    阅读全文>>

作者:coody分类:【_Verilog浏览(1128

2018-05-26

MATLAB设计不同构造的FIR或IIR滤波器

    MATLAB设计不同结构的FIR或IIR滤波器  网上很多教程都是使用MATLAB的FDATool工具设计滤波器,然后将系数导出,放到IP核中,由IP核根据数据速率核主处理时钟来决定滤波器的结构。这种设计方式很方便但是不灵活,有时会碰到这种情况:我们需要一个FIR滤波器,数据速率和主处理时钟速率都很高,甚至一样,且滤波器的阶数又很高,这个时候由IP自己来生成滤波器时,会生成全并行滤波器,会占用大量资源,甚至资源都不够用。此时我们希望能自己决定滤波器的结构,从而达到资源和效率相匹配的目的。高手可以自己动手用HDL语言来实现自己所需结构的滤波器,本文介绍一种用MATLAB提供的Filterbuilder工具来设计滤波器,并自动生成我们所需结构滤波器的HDL代码。 打开Filterbuilder工具   打开Filterbuilder工具有两种方式,一种是在MATLAB的的应用程序中的信号处

    阅读全文>>

作者:coody分类:【_Verilog浏览(1259

2018-05-27

状态机设计——从容易的按键消抖开始

    状态机设计——从简单的按键消抖开始  目前笔者正在接受明德扬FPGA网上培训班的培训,讲的内容非常适合新手,且以练习和互动答疑的教学模式让我学到了很多东西。由于是根据自身时间安排进度的,所以战线拉的比较长,发现做些设计总结非常重要,可以帮助自己理清思路,同时也能得到很好的复习。   之前一直在做altera FPGA的相关学习,对xilinx还不是很熟悉,借着这个契机,将比较基础常用的设计在VIVADO开发环境中过一遍,对我来说是个不错的选择。进入今天的正题,本篇博文旨在通过一个小例子掌握状态机的设计方法。由于设计非常简单,采用常见的三段式状态机来规范设计。后续复杂的例子中,将采用明德扬提出的四段式状态机,个人理解虽然与三段式基本思想相同,但有助于简化设计,理清思路。   众所周知,硬件按键都存在机械抖动。所以一次人为按下的动作会触发数次按键按下的行为。所谓“按键消抖”模块的功能就是将抖动

    阅读全文>>

作者:coody分类:【_Verilog浏览(2229

2018-05-26

异步复位、同步开释机制——系统完美稳定

    异步复位、同步释放机制——系统完美稳定  白驹过隙,寒假已经余额不足,回头想想,也就是看了两本书,做了几个并不大的工程,看着QQ群里面一些大神们聊天,时不时有的没的还插几句,一句话没人理也是正常事情。有时候还帮同是菜鸟的网友解决问题,好不尴尬!在大神们的只言片语中,也汲取出来一点对行业的认识,数电、模电和信号处理这几门课没有系统的学习没有学确实基础比较差,被前辈指教后也是深深认识到自己太急于求成了,晚上的博文鱼龙混杂、千篇一律,所以还不如静下心来读一本好书。学到的只是就应该用出来,才能成为自己的东西,下面的异步复位,同步释放机制,是我根据自己的理解总结出来的。 D触发器的两种表示形式 同步复位 1 always @(posedge mclk) 2 begin 3 if(!rst_n)//if(rst_p) 4 q <= 1’b

    阅读全文>>

作者:coody分类:【_Verilog浏览(611

2018-05-26

量化补缺与量化压缩

    量化补偿与量化压缩  学习博客:http://lhtao31.blog.163.com/blog/static/2972647020103814044158/   最近在学习调试摄像头,配置OV7670摄像头采集到的数据是RGB565,移植别人的代码,从ZYNQ移植到Basys3,VGA输出引脚需要又RGB565转到RGB444,我采用分别取RGB565三分量高位的方法,最终显示输出,视频图像会变得更模糊,这是由于在转换的时候去掉低位会损失精度。而OV7670的图像采集效果也是不怎么样,所以后面会尝试配置OV7725,追求完美,达到更好的显示效果。查询了很多资料后,知道了这是什么原因,下面我自己查阅的资料整理一下,以后查询起来方便。 1 /* vga_red <= frame_pixel[15:11]; 2 vga_green <= frame_pixel[10:5];

    阅读全文>>

作者:coody分类:【_Verilog浏览(655

2018-05-25

V3学院带你学习-缩水汉明码Hamming(12,8)的FPGA实现

    V3学院带你学习-缩短汉明码Hamming(12,8)的FPGA实现此文章为原创出自 V3学院 www.v3edu.org,FPGA培训专家 汉明码是一种实现简单并且可以检测和纠正错误的编码, 汉明码是在原编码的基础上附加一部分数据比特,使其满足纠错码的条件。它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的一类码。 V3学院FPGA Verilog 汉明码实现,Hamming(12,8)表示数据位长K=8,编码后码字长N=12,校验位长R=12-8=4,最小汉明距离是H=3(观察其生成矩阵,不同行向量间最少不同比特的数量),纠错能力为(H-1)/2=2/2=1. Hamming(12,8)生成矩阵为: 表 2.2 Hamming(12,8) 生成矩阵 标号 11 10 9 8 7 6 5 4 3 2 1 0 编号 X^7 X^6 X^5 X^4 X^3 X^2 X^1

    阅读全文>>

作者:coody分类:【_Verilog浏览(715

2018-05-23

FPGA基础知识(4)锁存器、触发器、寄存器和缓冲器的区别

    FPGA基础知识(四)锁存器、触发器、寄存器和缓冲器的区别一、锁存器锁存器(latch)---对脉冲电平敏感,在时钟脉冲的电平作用下改变状态锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才会随着数据输入发生变化。锁存器不同于触发器,它不在锁存数据时,输出端的信号随输入信号变化,就像信号通过一个缓冲器一样;一旦锁存信号起锁存作用,则数据被锁住,输入信号不起作用。锁存器也称为透明锁存器,指的是不锁存时输出对于输入是透明的。锁存器(latch):我听过的最多的就是它是电平触发的,呵呵。锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,当锁存器处于使能状态时,输出才会随着数据输入发生变化。(简单地说,它有两个输入,分别是一个有效信号EN,一个输入数据信号DATA_IN,它有一个输出Q,它的功能就是在E

    阅读全文>>

作者:coody分类:【_Verilog浏览(1144

2018-05-26

nRF2401无线模块接收_FPGA实现~

    nRF2401无线模块接收_FPGA实现~~    最近胶囊内窥镜项目中用到了业界常用的无线收发模块,即恩智浦公司nRF系列无线收发模块,该模块当前有好几种选择,比如nRF24L01只有无线收发模块,需要外部MCU进行驱动及数据收发,还有nRF24LE1自带单片机内核,即单片机集成在收发模块内。另外还有nRF24xx+USB模块,这种模块使用起来更方便,数据收发后直接跟上位机通信。nRF系列常用模块有nRF24L01、nRF24LE1,当前项目架构是内部胶囊使用的是nRF24LE1无线模块,而外部接收仪(fpga做主控)使用的是nRF24L01模块。这两种无线模块的寄存器配置完全兼容。     下面针对nRF24L01的驱动及数据收发的FPGA实现进行总结。     首先本人之前从未用过nRF2401,因此先看起nRF2401的数

    阅读全文>>

作者:coody分类:【_Verilog浏览(1637

2018-05-27
上一页 1/10页 下一页