自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

转载 进阶项目(12)PS2键盘驱动程序设计讲解

写在前面的话我们从小就开始接触电脑,曾经多么羡慕那些在键盘上洋洋洒洒的人,手指轻柔的飞舞,刻画出一章章美丽的篇幅…那么作为工程师的我们,同样拥有着属于我们的情怀。如果曾经的向往变成我们喜欢的玩具;如果曾经的神秘变成我们夜以继日的痴迷。那么,一切又将如何?梦翼师兄携手大家一起来欣赏、来品味。项目需求设计一个ps2键盘的接口驱动电路。原理分析ps2的接口如下图所示:其...

2019-09-15 08:34:00 1272

转载 进阶项目(11) 矩阵键盘程序设计讲解

写在前面的话在使用按键的时候,如果按键不多的话,我们可以直接让按键与FPGA相连接,但是如果按键比较多的时候,如果还继续使用直接让按键与FPGA相连接的话,会大量增加FPGA端口的消耗,为了减少FPGA端口的消耗,我们可以把按键设计成矩阵的形式。接下来,梦翼师兄将和大家一起学习扫描键盘的电路原理以及驱动方式。项目需求设计4*4矩阵键盘按键扫描模块,正确解析按键值。矩阵键盘...

2019-09-15 08:30:00 1693

转载 基础项目(10)BCD转二进制程序设计讲解

写在前面的话在前面小节的学习中,我们已经掌握了将二进制数转换成BCD码的方法。那么现在我们就反过来思考一下,设计一个什么样的电路,才可以将BCD码转换成二进制数呢?基本概念在数学中,我们都知道随便一个十进制数如5468 ,那么它的计算过程可以转换为:5468= 5*1000+4*100+6*10+8,因此BCD码转成二进制数的算法就是:abcd = a*1000 + b*...

2019-09-15 08:26:00 1291

转载 基础项目(9)异步复位同步触发程序设计讲解

写在前面的话在FPGA设计中,很多同学会纠结到底是应该使用同步复位还是应该使用异步复位。实际上,无论是同步复位还是异步复位都有各自的优缺点。在这里梦翼师兄和大家一起学习另外一种复位信号的处理方式-异步复位同步释放。基本概念FPGA设计中常见的复位方式有同步复位和异步复位,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效;异步复位是指无论时钟沿是否到来,只要...

2019-09-15 08:23:00 676

转载 进阶项目(10)基于Altera厂商的SignalTapII在线调试逻辑分析仪使用讲解

写在前面的话在诸多数字系统设计书籍中,关于FPGA开发的基本流程,几乎都介绍到了嵌入式逻辑分析仪(或称之为虚拟逻辑分析仪)的相关知识,包括为什么要有这样的在线调试逻辑分析仪,它可以做什么,什么情况下使用,基于什么样的原理,有哪些逻辑分析仪等等。读者在知道了它的种种之后,存在脑袋中的很大疑问就是如何使用,那么本篇章梦翼师兄就将带领大家解开这些疑团,教给大家如何使用基于Altera厂商的...

2019-09-15 08:19:00 1087

转载 基础项目(8)边沿检测程序设计讲解

写在前面的话在项目设计中,我们经常需要检测信号由高到低或者由低到高的跳变。本节,梦翼师兄和大家一起学习一个经典的边沿检测电路,通过该电路,我们可以在信号出现跳变沿的时候产生尖峰脉冲,从而驱动其他电路模块进行相应的动作。电路原理分析我们来分析一下这个电路结构和工作原理(1)当系统处于复位状态即rst_n信号为低电平时,假设输入信号为低电平,寄存器inst清零端生效,寄...

2019-09-15 08:01:00 329

转载 基础项目(7)generate语句块的讲解

写在前面的话在设计中,很多情况下我们需要编写很多结构相同但参数不同的赋值语句或逻辑语句块,当参数量很大的情况下,原始的列举就会变得很笨拙甚至是不可行的。C语言处理这种问题通常情况下会使用如for循环语句来完成多次的相同操作。而verilog 语言呢?同样的为我们提供了generate语句块来帮助我们完成这些过程。接下来,梦翼师兄将和大家一起开始generate语句的学习。基本概念...

2019-09-15 07:59:00 785

转载 进阶项目(9)IIC通信协议程序设计讲解

写在前面的话IIC的通信协议和通信接口在很多工程中有广泛的应用,如数据采集领域的串行AD,图像处理领域的摄像头配置,工业控制领域的X射线管配置等等。除此之外,由于IIC协议占用的IO资源特别少,连接方便,所以工程中也常选用IIC接口做为不同芯片间的通信协议。IIC协议的完成靠的是严紧的时序,一个周期都不能错,这也正是梦翼师兄设置本实验的目的。通过IIC的学习,锻炼大家的时序实现技...

2019-09-15 07:53:00 576

转载 进阶项目(8)数码管显示设计讲解

写在前面的话在项目设计中,我们通常需要一些显示设备来显示我们需要的信息,可以选择的显示设备更是种类繁多,玲琅满目,数码管无疑是最常用,最简单的显示设备之一。本节,梦翼师兄和大家一起学习数码管的显示原理和驱动方式,为我们以后项目的开发做好准备。项目需求设计一个数码管的驱动电路,使数码管能够同时显示出任意的六位数字(梦翼师兄使用的开发板集成的数码管为六位连体数码管)。原理分析...

2019-09-15 07:46:00 1522

转载 进阶项目(7)流水线设计讲解

写在前面的话作为初学者,通常情况下我们所设计的电路都是低速的电路,一般都在百兆以下。那么,当我们需要设计高速电路的时候,就需要用到流水线。本节,梦翼师兄和大家一起初步地学习流水线。流水线基本概念流水线的设计,就是指对延时较大的组合逻辑插入寄存器,把较大的组合逻辑拆分成几个时钟周期来完成,以提高系统的最大时钟频率。但是这样做,会导致数据输出的延时,假若插入一个寄存器,则数据输...

2019-09-15 07:42:00 510

转载 基础项目(7)穿行转并行程序设计及讲解

写在前面的话串并/并串转换是FPGA设计过程中的一个重要技巧,经常被用在高速数据流处理中,特别是在通信接口方面尤为重要。如UART串口协议、SPI串口协议、IIC串口协议都需要用到串并/并串转换。本节,梦翼师兄和大家一起来学习串并/并串转换的实现方法。需求分析并转串的设计思想是这样的:首先准备好一组寄存器,把需要发送的数据(并行数据)放到这个寄存器组里面,然后通过位拼接的移位...

2019-09-15 07:34:00 404

转载 移位寄存器的 IP核调取及应用

写在前面的话做很多图像算法的时候,我们经常需要用到模板运算(如sobel图像边缘检测、中值滤波、均值滤波等等),处理这些问题的时候,我们可以借助altera提供的移位寄存器IP核来简化我们的设计,从而提高设计效率。本节,梦翼师兄和大家一起学习这个适合用于模板运算的移位寄存器IP核的用法。功能要求假设数据在一个ROM中以如下图所示的方式存放,列加行的值作为该数的地址...

2019-09-14 09:41:00 2366

转载 进阶项目(7)VGA显示程序设计讲解

写在前面的话可能大家觉得之前设计都是各种看波形,比较的单一、乏味。那么本节的内容,一定可以带给大家全新的感受,现代电子技术中,图像处理技术可谓是发展迅猛,其带给大家独特的视觉感受也总是那么的赏心悦目。这里,梦翼师兄和大家一起敲开图像世界的大门,让我们一起为之痴迷,为之陶醉。什么是VGA?VGA(Video Graphics Array,视频图形阵列),是IBM 于1987...

2019-09-14 09:35:00 1010

转载 基础项目(6)基于尖峰脉冲的按键消抖程序设计讲解

写在前面的话我们通常所用的按键开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会马上断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了避免这种现象造成的干扰而作的措施就是按键消抖。抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点...

2019-09-14 09:28:00 627

转载 基础项目(5)任意时钟分频程序设计讲解

写在前面的话在数字逻辑电路设计中,分频器是一种基本的电路单元。通常用来对某个给定频率进行分频,以得到所需的频率。分频在FPGA的设计中一直都担任着很重要的角色,而说到分频,我相信很多人都已经想到了利用计数器计数来得到想要的时钟频率,但问题是仅仅利用计数器来分频,只可以实现偶数分频,而如果需要三分频、五分频、七分频等等奇数类分频,那应该怎么办呢?在这里,梦翼师兄为大家介绍一种可以实现任...

2019-09-14 09:25:00 1399

转载 基础项目(4)二级制转换BCD

写在前面的话我们的数据在运算或者存储的时候,一般都是以二进制的格式存在的。但是在很多情况下,我们需要将运算结果显示到某种显示设备上,如果直接以二进制的形式来显示的话,会非常不便于我们查看。因此,我们需要首先将二进制数转换为十进制数再进行显示。二进制到十进制的转换有很多种方法。本节,梦翼师兄和大家一起学习一种国外目前最为流行的转换方法-逐步移位法。通过这种方式,我们不但可以在没有周期差...

2019-09-14 09:21:00 478

转载 数据缓存器FIFO IP核调取及应用

写在前面的话在项目设计中,我们通常需要在两个模块之间传输数据,如果两个模块的数据处理速率相同,那么自然没有任何问题,直接数据对接就可以。但是,如果两个模块的数据处理速度不同呢?数据接收模块和数据发送模块的速度不一致,必然会导致采集数据的遗漏或错误。那么,该如何解决这个问题呢?梦翼师兄的办法是在他们之间加一个数据缓存器,所有数据先经过缓存器缓存,然后再输入到数据接收模块。那么本节,梦翼...

2019-09-14 09:05:00 399

转载 进阶项目(4)蜂鸣器程序设计讲解

写在前面的话经过前面内容的学习,梦翼师兄相信大家的基础知识水平一定已经很扎实。那么本节,我们就一起来庆祝一下,用播放器奏响一曲《欢乐颂》,奏响我们凯旋的乐章。什么是蜂鸣器?蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、电子玩具、定时器等电子产品中作为发声器件。蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种,在电路中用字母“H”或“HA”(旧标准用“FM...

2019-09-14 08:53:00 3482

转载 基础项目(3)三态门程序设计讲解

写在前面的话我们所接触到的IO都是单纯的输入(input)或者输出(output)类型,而我们的一些总线协议如IIC等,要求信号为三态类型,也就是我们所说的输入输出(inout)类型。那么,本节梦翼师兄将和大家一起来探讨三态门的用法。项目需求设计一个三态门电路,可以实现数据的输出和总线“挂起”。系统架构模块功能介绍模块名功能描述...

2019-09-14 08:45:00 917

转载 进阶项目(6)LCD12864液晶屏幕设计讲解

写在前面的话液晶(LCD)显示具有功耗低、体积小、重量轻、超薄等许多其他显示器无法比拟的优点,近几年被广泛应用于FPGA控制的智能仪器、仪表和低功耗的电子产品中。LCD可分为段位式LCD、字符式LCD和点阵式LCD。其中段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图像曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且...

2019-09-14 08:32:00 5491

转载 进阶项目(5)DDS程序设计讲解

写在前面的话DDS是直接数字式频率合成器(Direct Digital Synthesizer)的英文缩写。与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。项目需求设计一个相位和频率可调的波形(正弦波)发生器。项目分析问题1:什么是波形发生器?波形发生器是一种数据信号发...

2019-09-13 21:45:00 711

转载 锁相环(PLL)的IP核调取及应用详解

写在前面的话梦翼师兄经常告诉大家,FPGA最明显的优势就是它的速度。那么本节,梦翼师兄和大家一起来学习FPGA片内时钟管理单元PLL(锁相环)的应用。利用锁相环,我们可以在一个很宽广的范围内实现任意的分频和倍频。使用锁相环,可以有效的减少我们在时钟发生部分的代码量,同时更重要的,利用锁相环的“全局时钟树”,可以保证很好的时钟质量。项目需求我们使用锁相环生成两路时钟,一路为25...

2019-09-13 21:35:00 1569

转载 进阶项目(3)UART串口通信程序设计讲解

写在前面的话UART串行接口简称串口,是我们各类芯片最常用的一种异步通信接口,通过串口我们就可以建立起计算机和我们实验板之间的通信和控制关系,也就是我们通常所说的上下位机通信。串口可以说是不同平台互相通信、控制的一个最基本的接口。项目需求设计一个UART控制器,当控制器从上位机接收到数据以后,马上将数据输出,发送回上位机,完成“回环测试”。UART的原理分析要实现U...

2019-09-13 21:19:00 1127

转载 基础项目(2)二选一数据选择器的设计

写在前面的话数据选择器在数字电路设计中的应用尤为广泛。同时,作为基础的电路功能单元,也比较适合作为初学者的入门实验。现在梦翼师兄陪大家一起来设计一个最基础的数据选择器。项目需求设计一个二选一数据选择器,然后用一路控制信号选择输出数据选通哪一路输入的数据信号。系统架构模块功能介绍模块名功能描述mux2...

2019-09-13 21:12:00 8089

转载 读写储存器RAM IP核的调取及应用

写在前面的话在很多时候,我们需要将采集得到的数据先存储起来,等到了需要的时候再调用。如果是这种情况,那么就要求我们的存储器必须可读可写。本节,梦翼师兄就和大家一起学习FPGA可读写存储器IP核-RAM的使用。项目需求设计一个RAM控制器,该控制器负责对RAM 进行读写操作,首先将数据写入RAM,然后再将数据全部读出。如果读出的数据和写入的数据完全一致,说明我们的操作和设...

2019-09-13 21:08:00 1387

转载 进阶项目(1)字符状态机讲解

写在前面的话作为一个电子男,一直被女孩子认为是刻板、不懂浪漫的,其实不然,我们可以以我们独特的方式来表达我们的浪漫情怀。这一节,梦翼师兄就用我们电子男特有的方式对我们最亲爱的人说一声I Love You!项目需求设计一个电路,输入端cap_flow输入的是随机的大写字母数据流,输入端low_flow输入的是随机的小写字母数据流,输出端output_flow输出的是从两个...

2019-09-13 20:59:00 191

转载 基础项目(1) 流水灯项目讲解

写在前面的话这一节呢,我们来实现一个流水灯驱动程序的编写,当然啦,点灯不是目的,最重要的是我们通过这个流水灯代码的实现可以掌握一些重要的规范。项目需求我们要求流水灯模式如下:当复位键按下时,灯全部熄灭,当复位键放开以后,首先,点亮第一个灯,然后第一个灯熄灭,同时点亮第二个灯,接着,第二个灯熄灭,同时点亮第三个灯,然后,第三个灯熄灭,同时点亮第四个灯,最后第四个灯熄灭,同时点亮...

2019-09-13 20:51:00 1520

转载 只读储存器ROM IP核的调取及应用

写在前面的话在项目设计中,我们通常需要使用一些固定的数据。如果是使用单片机,那么在数据量比较大的情况下,这些数据就必须存储在外挂的存储芯片中。那么,使用FPGA呢?在数据量不是特别大的情况下,我们可以将这些数据存储到FPGA片内的存储器中,这样既节约了板级成本,又可以保证数据不容易受到外界干扰。那么本节,梦翼师兄和大家一起学习FPGA只读存储器IP核-ROM的设计。项目需求设...

2019-09-13 07:18:00 799

转载 常见的关系运算符(移位运算符)

写在前面的话移位运算符是双目运算符,将运算符左边的操作数左移或右移指定的位数,用0来补充空闲位。如果右边操作数的值为X或Z,则移位结果为未知数X。在应用以为运算符的时候一定要注意它的这个特性,那就是空闲位用0来填充,也就是说,一个二进制数不管原数值是多少,只要一直移位,最终全部会变为0。移位运算符实例Verilog HDL 中有两种移位运算符:<<(逻辑左移)和&...

2019-09-13 06:50:00 409

转载 常见的关系运算符(缩减运算符)

写在前面的话缩减运算符是单目运算符,也有与或非运算。其与或非运算规则类似于位运算符的与或非运算规则,但其运算过程不同。位运算是对操作数的相应位进行与或非运算,操作数是几位数则运算结果也是几位数。而缩减运算则不同,缩减运算是对单个操作数进行与或非递推运算,最后的运算结果是一位的二进制数。缩减运算的具体运算过程是这样的:第一步先将操作数的第一位与第二位进行与或非运算,第二步将运算结果与第...

2019-09-13 06:48:00 3273

转载 常见的关系运算符(位拼运算符)

写在前面的话位拼运算符是将多个小的表达式合并形成一个大的表达式,用符号{}来实现多个表达式的连接运算,各个表达式之间用“,”隔开。位拼运算符是梦翼师兄特别喜欢的一种运算符,它聪慧灵秀,不但可以进行简单的数据拼接,更是可以用来执行移位操作,而且数据永远是循环的,不会丢失,用途非常广泛。代码实例/******************************...

2019-09-13 06:45:00 920

转载 常见的关系运算符(if else和case语句)

写在前面的话说起关系运算符,真的是满心伤痕,这里有一个优先级的问题:关系运算符的优先级别低于算数运算符的优先级别。关系运算符种类(1)a<b a小于b(2)a>b a大于b(3)a<=b a小于或者等于b(4)a>=b a大于或者等于b关系运算符使用意义在进行关系运算时,如果申明的关系是假的(fa...

2019-09-13 06:42:00 804

转载 测试文件的简易结构

测试文件结构为什么简易的测试代码可以通用呢?这要从测试文件的结构说起。首先我们将测试代码再给大家列出来一次,方便解说/**************************************************** * Engineer : 梦翼师兄* QQ : 76166...

2019-09-13 06:33:00 139

转载 Modelsim和Quartus II联合使用

写在前面的话 在这里梦翼师兄想特地强调一下Modelsim 这个软件,那么这个软件到底是做什么的呢?在这里,我问大家一个问题,假设我们有一块硬件电路板设计完成以后,不知道功能是否正常,那么我们需要怎么做呢?答案很简单的啦,就是我们所谓的“测试”,给电路板上电以后,输入一定的测试激励,观察电路板有什么样的结果输出,如果输出结果和输入激励的对应关系是正确的,说明电路板没有问题,反之,如...

2019-09-12 19:36:00 910

转载 top_down设计的认知

写在前面的话本节呢,梦翼师兄重点和大家谈一下层次化设计方法,我们所谓的层次化设计,实际上就是对一个很大的系统设计进行拆分,直到拆分成很容易实现的最小模块为止。我们都知道,如果我们想要盖一栋大楼,那么首先一定是先设计好工程图纸,然后建筑工人才可以根据设计图纸施工。那么电子系统设计呢?其实也是这样的,在进行具体代码设计之前,我们首先应该认真分析整个的项目需求,在确定项目需求理解无误的情况...

2019-09-10 20:49:00 502

转载 赋值语句的运用

写在前面的话开发过程中,我们用的最多的恐怕就是赋值语句了,我们常用的赋值方式有两种:阻塞赋值和非阻塞赋值。梦翼师兄刚开始学的时候就被这两种赋值方式搞晕了,当时脑子里面有几个问题总是一团乱麻-什么是阻塞赋值?什么是非阻塞赋值?什么时候用阻塞赋值?什么时候用非阻塞赋值?这两种赋值方式到底有哪些不同?什么时候两种赋值方式结合起来用?当时由于好的教材比较少,因此梦翼师兄被这些简单的问题困扰了...

2019-09-10 20:42:00 743

转载 Altera Quartus II 15.0安装

写在前面的话开始学习之前,我们首先应该选择并安装好自己的开发工具,那么我们用什么软件来编译代码呢?梦翼师兄推荐给大家的是Altera 目前最新的Quartus II 15.0版本,当然啦,这可不是喜新厌旧哦,FPGA开发的未来趋势是SOC,既然15.0可以支持SOC的开发,那么就让我们一步到位吧。梦翼师兄喜欢15.0还有一个原因,那就是本人也是“外貌协会”的啦,15....

2019-09-10 19:55:00 1775

空空如也

空空如也

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

TA关注的人

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