
Verilog/FPGA 实用总结区
文章平均质量分 74
本专栏旨在总结学习Verilog以及使用Verilog做项目当中关键常用的知识点,从广袤的Verilog HDL语法草原中寻找最有价值的知识。
李锐博恩
退网中
展开
-
Vivado IP核的综合模式:Global以及Out of context的区别理解
在Vivado中使用 "Out-Of-Context"方法的好处是节省了合成时间,无需在每次运行时重新合成IP。原创 2020-08-29 17:21:50 · 6080 阅读 · 1 评论 -
FPGA中有限状态机的状态编码采用格雷码还是独热码?
今天看《从算法设计到硬件逻辑的实现》这本电子书时,遇到了一个问题,就是有限状态机的编写中,状态编码是采用格雷码还是独热码呢?究竟采用哪一种编码呢?采用独热码为什么节省许多组合电路?等等问题,就这些问题我收集了一些说法,觉得很有意思,在这里我们一起讨论下。还是先简介下有限状态机:有限状态机是由寄存器组和组合逻辑构成的硬件时序电路,其状态(即由寄存器组的1和0的组合状态所构成的有限个状...原创 2018-09-02 22:42:52 · 7745 阅读 · 4 评论 -
为什么在 Verilog HDL 设计中一定要用同步而不能用异步时序逻辑?
本博文内容来源于:《从算法设计到硬件逻辑的实现》,仅供学习交流使用!同步时序逻辑是指表示状态的寄存器组的值只可能在唯一确定的触发条件发生时刻改变。只能由时钟的正跳沿或负跳沿触发的状态机就是一例。always @(posedge clock) 就是一个同步时序逻辑的触发条件, 表示由该 always 控制的 begin end 块中寄存器变量重新赋值的情形只有可能在 clock 正跳沿发生。...原创 2018-09-02 17:23:43 · 4154 阅读 · 0 评论 -
数据流动控制学习笔记
组合逻辑和时序逻辑学习笔记服完上篇博文的知识,再服用此博文效果更佳!认真看下去,其实还挺有意思。本文来自于《从算法设计到硬件逻辑的实现》,仅供学习交流使用!我们知道,诸如加、减、乘、除、比较等运算都可以用组合逻辑来实现,但运算的输入必须稳定一段时间,才可能得到稳定的输出,而输出要被下一阶段的运算作为输入,也必须要有一段时间的稳定,因而输出结果必须保存在寄存器组中。在计算电路中设有许多寄...原创 2018-09-02 17:03:02 · 1809 阅读 · 0 评论 -
组合逻辑和时序逻辑学习笔记
目录数字逻辑电路的种类组合逻辑时序逻辑同步有限状态机数字逻辑电路的构成组合逻辑构成时序逻辑构成组合逻辑举例一、一个八位数据通路控制器二、一个八位三态数据通路控制器数字逻辑电路的种类组合逻辑输出只是当前输入逻辑电平的函数(有延时),与电路的原始状态无关的逻辑电路。也就是说,当输入信号中的任何一个发生变化时,输出都有可能会根据其变化而变化,但与电路目...原创 2018-09-02 16:49:18 · 3180 阅读 · 0 评论 -
读论文之《基于EV10AQ190的高速ADC接口设计》
背景:之前通过数据手册简单地认识了一下 EV10AQ190这款ADC芯片,见博文地址:EV10AQ190A(4核ADC)博客精选目录这个博文目录里面收录了有关博文,可以作为初步参考。回顾:今天看了这篇论文,感觉还挺有吸引力,就做了如下的笔记:如下图,首先以单通道工作方式为例,回顾一下这款ADC芯片的工作模式:外部给该ADC芯片提供一个时钟CLK,频率为2.5GHz,...原创 2018-08-15 15:12:41 · 4537 阅读 · 6 评论 -
解读ADC采样芯片(EV10AQ190A)的工作模式(单通道模式)
有了上两篇博文的铺垫,双通道模式以及四通道模式,单通道模式也就很容易理解了,并且我已经想好了下一篇博文要写什么了。直接看框架图吧:直接说重点,任意一个输入端口输入的模拟信号同时进入ADC芯片的四个核(也可以理解为4个通道),这四个核的时钟输入是由内部时钟电路(Clock Circuit)产生的,这四个时钟之间是什么关系呢?首先这四个时钟频率一致,都是1.25GHz。其次,假设以ADC A这个核的时...原创 2018-07-16 00:11:43 · 4282 阅读 · 1 评论 -
解读ADC采样芯片(EV10AQ190A)的工作模式(四通道模式)
上篇博文讲了EV10AQ190A这种ADC芯片的工作模式:双通道模式我十分重视这些内容,因为这是我认识硬件工作模式的起点,当然这也只是理论上的内容,实际采样过程中也许会遇到这样那样的问题,那就需要自己慢慢探索了,理想与工程还是会有一定的差距的!这篇博文主要讲四通道模式:这种模式的框架或者组态(configuration)(我真的不知道这个单词如何用中文准确的翻译处理,我总感觉应该是原理框图),算了...原创 2018-07-15 23:26:02 · 7189 阅读 · 4 评论 -
解读ADC采样芯片(EV10AQ190A)的采样(工作)模式(双通道模式)
工作模式有三种:分别为四通道模式、双通道模式以及单通道模式,这里先简单讲述双通道模式(由于工程中用过双通道模式);双通道模式组态:从这张图中可以得到的信息是什么呢?首先有两个模拟输入,分别为AAI,AAIN(这是一个模拟输入 Analog Input A)和CAI,CAIN(Analog Input C),根据实际工程需要,选择使用A输入端口,或者C输入端口,或者两个都用。当信号从A输入端口输入时...原创 2018-07-15 18:17:49 · 10479 阅读 · 5 评论 -
Verilog: How to avoid 'Redeclaration of ansi port'
上次想要Vivado完整(无奈没有板子)实现一遍操作流程,学习使用jou文件来学习下工程模式的Tcl命令,于是就写了一了小到不能再小的程序,一个二分频的程序,就几行代码,可即使如此简单的一个程序,也出现了一些问题,这里记录下来,也许能帮到后来的人呢。程序原来是这样的:`timescale 1ns / 1ps////////////////////////////////////////...原创 2018-12-25 21:01:47 · 14223 阅读 · 3 评论 -
【 FPGA 】超声波测距小实验(四):数码管显示测距结果
上篇博文:测了回响脉冲的宽度为多少个10us,这篇博文要算出距离,且用数码管显示距离的十进制结果。功能框图如下: 、距离计算:还是先给出程序之后在简单解释吧。顶层模块:///////////////////////////////////////////////////////////////////////////////工程硬件平台: Xilinx ...原创 2019-01-19 22:13:25 · 4929 阅读 · 6 评论 -
【 FPGA 】超声波测距小实验(三)回响脉宽计数之均值滤波
这是小实验还是接着上个小实验的:超声波测距小实验(一)数码管显示回响信号脉冲宽度先说说实验的要求:超声波测距回响脉宽计数之均值滤波处理,每100ms产生1个超声波测距模块所需的10us高脉冲激励(超声波测距模块的触发信号),并用数码管以16进制数据显示经过滤波处理的回响信号的高脉冲计数值(以10us为单位)。如下为功能框图:滤波算法与实现:先给出主模块程...原创 2019-01-19 16:19:05 · 3320 阅读 · 1 评论 -
【 FPGA 】超声波测距小实验(二):数码管显示回响信号脉冲宽度
这篇博文快速完成,对上篇博文的一个延续,用动态扫描数码管显示模块来显示回响信号的脉冲长度,从而知道测距值。上篇博文:超声波测距小实验(一)关于数码管的动态扫描显示的博文之前也写了几篇,这里直接调用其模块即可:控制数码管动态扫描显示的小实验功能框图:同样为25MHz的时钟频率,所以段选,片选模块可以直接使用:///////////////////////////////...原创 2019-01-19 13:29:56 · 3537 阅读 · 6 评论 -
【 FPGA 】超声波测距小实验(一)
超声波测距原理:超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似。 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t(秒),就可以计算出发射点距障碍物的距离(s),即:s=340...原创 2019-01-18 21:20:31 · 7494 阅读 · 8 评论 -
【 FPGA 】控制数码管动态扫描显示的小实验
实验的功能很简单,就是让4个数码管每隔1s递增显示,使用动态扫描的方式来实现。从这个功能的描述可以看出,我们首先要写一个计数器模块,来让计数值每隔1s增加1,暂时实现的是16进制的东西,从0到f,之后10到1f等等。我们的实验平台的系统时钟是25MHz,不是25MHz的实验平台,可以通过PLL来分频或倍频得到25MHz的时钟。其次,写一个模块来控制数码管的位选和段选。实验平台...原创 2019-01-16 22:40:19 · 8402 阅读 · 1 评论 -
8段数码管译码表
每次玩数码管的时候都得百度去查数码管的译码表,自己推更是不太可能,太麻烦。这里给出,为了方便查看,红色的位置为共阴极的译码表,//后面的为共阴极译码表。//数码管显示 0~F 对应段选输出parameter NUM0 = 8'h3f,//c0, NUM1 = 8'h06,//f9, NUM2 = 8'h5b,...原创 2019-01-16 22:22:22 · 9133 阅读 · 0 评论 -
【 FPGA 】四位16进制的数码管动态显示设计
数码管的动态显示是对每个数码管采用分时复用的方式轮流点亮每个数码管,在同一时间只会点亮一个数码管。分时复用的扫描显示利用了人眼的视觉暂留特性,如果公共端的控制信号刷新速度足够快,人眼就不会区分出LED的闪烁,认为4个数码管是同时点亮。如下图:D1、D2、D3、D4就是公共控制端口,也就是片选端,控制哪一个数码管被选中。而abcdefg是段选,用来控制数码管的显示内容。下面代...原创 2019-01-05 22:34:55 · 16796 阅读 · 2 评论 -
数码管显示实验(一)(初步明白片选、段选)
背景:这是一个让我感到耻辱而又欣慰的实验,大约花了我4个半小时时间才调通我下面要写的这篇博文的内容,这篇博文的内容比较简单,所以花这么久时间让我感到自己很弱,故而耻辱,而通过自己的各种改动,适合自己的一块没有资料的FPGA开发板,又是很欣慰的。一个带小数点的数码管的所有8个发光二极管的正极或负极有一个公共端,通常必须接GND(共阴极数码管)或者接VCC(共阳极数码管),而另一个非公共端的8...原创 2018-08-17 17:57:40 · 27252 阅读 · 4 评论 -
《基于PLL分频计数的LED灯闪烁实例》实验记录
问题概述:输入FPGA引脚上的25MHz时钟,配置PLL使其输出4路分别为12.5MHz、25MHz、50MHz和100MHz的时钟信号,这4路时钟信号又分别驱动4个不同位宽的计数器不停的计数工作,这些计数器的最高位最终输出用于控制4个不同的LED亮灭。由于这4个时钟频率都有一定的倍数关系,所以我们也很容易通过调整合理的计数器位宽,达到4个LED闪烁一致的控制。问题就这么多,我觉得有必...原创 2018-08-16 22:51:51 · 3031 阅读 · 0 评论 -
经典模式流水灯实验的个人总结和思考
问题叙述:当拨码开关SW3处于OFF时, LED停止不动,只有一个LED处于点亮,并且点亮的LED不会变化;而SW3处于ON状态时,流水灯处于流动状态。导航按键S2被按下后,LED流动方向是从上到下(D9到D2方向);导航按键S3被按下后,LED流动方向是从下到上(D2到D9)。这里面用到了拨码开关,按键,以及led灯,那么我把这三种外设的电路图给出来,并简单解释:拨码开关:...原创 2018-08-16 21:22:37 · 12430 阅读 · 0 评论 -
记录使用Spartan-6进行流水灯控制的实验
整个过程我没有记录,因为之前记录过了,都是一样的,这里只是记录了下思路。之前的博文:全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制这些LED的正极连接510欧姆限流电阻到3.3V电压,负极都连接到了FPGA的IO引脚上。因此,FPGA可以通过引脚的高或低电平控制LED的亮灭状态。8个LED指示灯,我们依次给他们赋值,每次只有一个LED点亮,每次点亮某个LED的时间一定(固定延时)...原创 2018-08-15 22:30:21 · 2429 阅读 · 2 评论 -
记录使用Spartan-6 FPGA进行一次3-8译码器实验
之前仔细的记录过一次PWM蜂鸣器的实验,见博文:全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制,这里就不再仔细的写下全过程了,因为都是一样的过程,只记录一下做这个小实验的思路即可。3-8译码器实验 SW3 SW6,SW5,SW4 复位 点亮LED X X,X,X ...原创 2018-08-15 22:20:41 · 1894 阅读 · 0 评论 -
全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制
目录简单介绍:设计思路Verilog HDL硬件语言描述:语言检测引脚分配综合实现器件配置时间不饶人,我快速记录一下这个过程吧。简单介绍:蜂鸣器是一种最简单的发声元器件,它的应用也非常广泛,大都是作为报警或发声提醒装置。PWM即脉冲宽度调制,PWM的输出只有高电平1和低电平0。PWM不停的重复输出周期为T,其中高电平1时间为t的脉冲,t/T是它的占空...原创 2018-08-15 10:55:32 · 19353 阅读 · 3 评论 -
PLL_BASE——Basic Phase Locked Loop Clock Circuit(Virtex-5, Spartan-6)
声明:这篇博文只是一个大概性的认识,有一篇更走心的博文请看:MMCME2_ADV介绍 高级混合模式时钟管理器(7 Series FPGA)下面介绍的一个基本锁相环时钟电路是Spartan-6里面的一个设计元件(Design element):PLL_BASE基本锁相环时钟电路( Basic Phase Locked Loop Clock Circuit)原语。This desig...原创 2018-08-11 17:22:04 · 4200 阅读 · 1 评论 -
Xilinx® 7 series FPGAs CLBs专题介绍(二)
目录背景CLB布局(CLB Arrangement)ASMBL ArchitectureCLB SlicesCLB/Slice ConfigurationsSlice DescriptionLook-Up Table (LUT)Storage ElementsControl Signals背景本博文是上篇博文的续集:Xilinx® 7 series FP...原创 2018-08-08 15:47:06 · 2587 阅读 · 1 评论 -
Xilinx® 7 series FPGAs CLBs专题介绍(一)
背景前面我们已经知道7 series FPGA的总体架构,其中包括CLBs,本篇博文根据赛灵思官方文档,专门介绍一下CLBs。7 Series FPGAs Configurable Logic Block,简称CLB,也就是可编程逻辑块;用户手册上说:Usually, logic synthesis assigns the CLB resources without system...原创 2018-08-08 15:46:17 · 3108 阅读 · 0 评论 -
【FPGA】Spartan-6的时钟管理器(CMT)之数字时钟管理器(DCM)
目录时钟管理器(CMT)DCM(digital clock manager)组成结构DCM原语时钟管理器(CMT)Spartan-6 CMT是一个灵活、高性能的时钟管理模块。它位于芯片中央、垂直的全局时钟网络旁。如图2-17所示,它包含一个PLL和两个DCM。 图2-17 Spartan-6 FPGA CMT片内布局图 DCM(digital...转载 2018-07-30 19:34:28 · 4370 阅读 · 0 评论 -
FPGA转载文章目录
一、赛灵思7系列FPGA相关1.1 Xilinx_7Series_FPGA高速收发器使用学习—概述与参考时钟篇1.2 Xilinx-7Series-FPGA高速收发器使用学习—TX发送端介绍1.3原创 2018-06-14 19:42:44 · 1505 阅读 · 0 评论 -
FPGA block RAM和distributed RAM区别(以及xilinx 7系列CLB资源)
原地地址:FPGA block RAM和distributed RAM区别区别之1block ram 的输出需要时钟,distributed ram在给出地址后既可输出数据。区别之2distributed ram使用更灵活方便些区别之3block ram有较大的存储空间,distributed ram浪费LUT 资源补充:1,物理上看,block ram是fpga中定制的ram资源,distrib...转载 2018-06-09 18:20:06 · 10569 阅读 · 0 评论 -
FPGA开发之RAM IP的使用
CORE Generator里有很多的IP核,适合用于各方面的设计。一般来说,它包括了:基本模块,通信与网络模块,数字信号处理模块,数字功能设计模块,存储器模块,微处理器,控制器与外设,标准与协议设计模块,语音处理模块,标准总线模块,视频与图像处理模块等。在Xilinx的IP核里有xilinx core generator 里面的memory interface generator 和block ...转载 2018-05-29 18:26:02 · 3560 阅读 · 2 评论 -
使用ISE创建IP核(以加法器的IP核建立为例)
IP核介绍:IP(知识产权)核将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器,SDRAM控制器,PCI接口等做成一个“黑盒”或者可修改参数的模块,供设计者使用。IP核包括硬IP与软IP。调用IP核能避免重复劳动,大大减轻设计人员的工作量。IP Core生成器(Core Generator)是Xilinx FPGA设计中的一个重要设计工具,提供了大量成熟的、高效的IP Core为用户所用,...原创 2018-05-28 19:33:13 · 16435 阅读 · 3 评论 -
基于FPGA的IP核RAM的设计和调用
介绍IP核:IP(知识产权)核将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器,SDRAM控制器,PCI接口等做成一个“黑盒”或者可修改参数的模块,供设计者使用。IP核包括硬IP与软IP。调用IP核能避免重复劳动,大大减轻设计人员的工作量。首先,使用Xilinx ISE建立一个RAM的IP核。步骤如下:1)用ISE Project Navigator 新建一个工程,命名为IP_RAM,右击...原创 2018-05-29 18:04:30 · 9793 阅读 · 0 评论 -
Xilinx FPGA器件中时钟资源的说明以及使用
xilinx 时钟资源分为两种:全局时钟和第二全局时钟。一、全局时钟资源Xilinx 全局时钟采用全铜工艺实现,并设计了专用时钟缓冲与驱动结构,可以到达芯片内部任何一个逻辑单元,包括CLB、I/O引脚、内嵌RAM、硬核乘法器等,而且时延和抖动都很小。对FPGA设计而言,全局时钟是最简单最可预测的时钟,最好的时钟方案是:由专用的全局时钟输入引脚驱动单个全局时钟,并用后者去控制设计中的每个触发器。全局...转载 2018-05-21 15:39:35 · 2841 阅读 · 0 评论 -
Xilinx FPGA全局时钟和第二全局时钟资源的使用方法
目前,大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时和抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。 FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM...转载 2018-05-21 15:31:46 · 1996 阅读 · 0 评论 -
PicoBlaze 设计实例
PicoBlaze 设计实例一、 设计要求1. PICOBLAZE 嵌入式系统,包括1 个8 位的方波输出口,一个驱动两位7 段LED 的输出口,一个时钟输入和一个中断输入。2. 在Spartan-3an starter 套件中实现。二、 设计过程1. 在ISE 11.x中建立一个新的项目,项目名为kcpsm3_int_test,并加入源文件kcpsm3.vhd,这仅仅是一个PicoBlaze控...转载 2018-05-20 13:30:40 · 2812 阅读 · 0 评论 -
PicoBlaze性能
PicoBlaze性能表12-4列出了PicoBlaze微控制器在不同的FPGA系列和不同的速度等级的器件中能达到的最高频率。通常情况下,如果对性能要求不是太高,最好是让PicoBlaze在低频下工作,因为它所处理的外设一般为低速设备,例如,串行通信,按键等。另外,低频工作也会减少等待周期,降低系统功耗。12.4 PicoBlaze在FPGA设计中的应用PicoBlaze以三种方式提供给设计者使用...转载 2018-05-20 13:30:34 · 2001 阅读 · 0 评论 -
PicoBlaze 指令存储器配置方式
PicoBlaze 指令存储器配置方式PicoBlaze微控制器实际上包含两个部分,分别是内核KCPSM3 和指令存储器ROM。为了确保在程序运行期间不会有写入操作,BRAM 的WE 端接地,如图12-18 所示。当然,除了这种方式,还会有多种其他方式,下面将一一介绍。图12-18 PicoBlaze 微控制器存储器的标准配置1K×18应用程序被编译后并被综合作为FPGA 实现的一部分,与FPGA...转载 2018-05-20 13:30:25 · 1479 阅读 · 0 评论 -
PicoBlaze输入/输出端口
PicoBlaze输入/输出端口PicoBlaze微控制器支持最大256个输入口和256 个输出口,PicoBlaze与输入和输出有关的信号在“PicoBlaze微控制器接口信号”部分有详细说明,包括PORT_ID[7:0]、IN_PORT[7:0]、OUT_PORT[7:0]、READ_STROBE WRITE_STROBE。在时序要求苛刻的设计中, 对PORT_ID 和数据路径允许两个时钟周期...转载 2018-05-19 21:14:54 · 1439 阅读 · 0 评论 -
PicoBlaze中断
PicoBlaze中断我们知道,PicoBlaze微控制器只提供一个中断输入口,如果设计中需要多个中断,可以在FPGA中用逻辑实现。图12-4 所示为一个简单的中断连接图,当有中断发生时,触发器的2端输出一个高电平, 当PicoBlaze响应中断信号INTERRUPT_ACK有效时,触发器3端为高电平,其输出被清零,外部中断被撤消。图12-4 实现简单的中断接下来,我们结合图12-5和图12-6...转载 2018-05-19 21:14:49 · 1495 阅读 · 0 评论 -
PicoBlaze 8 位微控制器
PicoBlaze 8 位微控制器PicoBlaze 是一个8 位的微控制器,非常适合于Spartan 系列及Virtex 系列FPGA。还可以用于CPLD,但是需要外部加SRAM 存储器以运行程序。它又被称为常数化的可编程状态机KCPSM((K)constant Coded Programmable State Machine),之所以这样称呼它,是因为PicoBlaze 非常适合实现复杂的、实...转载 2018-05-19 21:14:43 · 2010 阅读 · 0 评论