![](https://img-blog.csdnimg.cn/725cfdde065e414b9f05c4cd4dc7928a.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
FPGA
文章平均质量分 81
关于 FPGA 的各类知识
Linest-5
日拱一卒,功不唐捐!
展开
-
【状态机设计】Moore、Mealy状态机、三段式、二段式、一段式状态机书写规范
目录状态机介绍状态机类型Moore 型状态机Mealy 型状态机状态机设计流程自动售卖机状态机设计:3 段式(推荐)实例实例状态机修改:2 段式实例状态机修改:1 段式(慎用)实例状态机修改:Moore 型实例实例有限状态机(Finite-State Machine,FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机不仅是一种电路的描述工具,而且也是一种思想方法,在电路设计的系统级和 RTL 级有着广泛的应用。都说状态机是 FPGA 设计的灵魂,可见其重要之处,在原创 2022-06-27 08:00:00 · 5274 阅读 · 3 评论 -
【Xilinx AX7103 MicroBalze学习笔记6】MicroBlaze 自定义 IP 核封装实验
MicroBlaze 自定义 IP 核封装实验原创 2022-06-22 08:00:00 · 1860 阅读 · 2 评论 -
【CDC设计】跨时钟域处理(四)其他细节问题
目录命名约定和设计划分时钟和信号命名约定没有命名约定的多时钟/多源模块每个时钟域的时序验证面向时钟的设计划分时钟分区模块的时序分析使用 MCP 方法进行分区多时钟门级仿真问题同步器门级 CDC 仿真问题从门级仿真中去除 X 传播的策略关闭时序检查的模拟器命令将触发器建立和保持时间更改为 0复制和修改新的触发器模型使用多个 SDF 文件总结与结论单 bit CDC 技术多 bit CDC 技术推荐的命名约定和设计划分多时钟门级 C原创 2022-05-30 22:15:39 · 1247 阅读 · 0 评论 -
【CDC 系列】跨时钟域处理(三)在时钟域之间传递多bit信号
目录在时钟域之间传递多个信号多位 CDC 策略多比特信号合并问题 ‑ 两个同时需要的控制信号解决方案 ‑ 合并问题 ‑ 两个相移排序控制信号解决方案 ‑ 合并和额外的触发器问题 ‑ 多个 CDC 信号传递多个 CDC 信号的解决方案多循环路径(MCP)公式(握手法)使用同步使能脉冲的 MCP 公式闭环 ‑ 带反馈的 MCP 公式闭环 ‑ 带有确认反馈的 MCP 公式同步计数器二进制计数器格雷码格雷码到二进制的转换二进制到格雷码的转换原创 2022-05-25 16:34:09 · 1962 阅读 · 0 评论 -
【CDC 系列】跨时钟域处理(二)快时钟域信号同步到慢时钟域
目录快时钟域到慢时钟域时钟域间可靠信号传递的要求“三边沿”要求问题 ‑ 通过快速 CDC 脉冲问题 ‑ 对长 CDC 脉冲进行采样 ‑ 但时间不够长开环解决方案 ‑ 使用同步器采样信号闭环解决方案 ‑ 使用同步器采样信号往期系列博客快时钟域到慢时钟域如果 CDC 信号在时钟域之间传递时不能被跳过,则在时钟域之间传递时考虑信号的宽度和同步技术很重要。与同步器相关的一个问题是,来自发送时钟域的信号可能会在采样之前更改两次值,或者可能过于接近较慢时钟域的采样边.原创 2022-05-20 20:39:12 · 6785 阅读 · 0 评论 -
【CDC 系列】跨时钟域处理(一)同步器
目录同步器两种同步场景两级触发同步器平均故障前时间--MTBF三级触发同步器同步来自发送时钟域的信号将信号同步到接收时钟域说明同步器在时钟域之间传递信号时,要问的一个重要问题是,我是否需要对从一个时钟域传递到另一个时钟域的信号的每个值进行采样?两种同步场景跨 CDC 边界传递信号时可能出现两种情况,确定哪种情况适用于设计很重要:(1) 允许错过在时钟域之间传递的样本。(2) 必须对时钟域之间传递的每个信号进行采样。第一种情况:有时不需要对每原创 2022-05-17 21:51:18 · 2657 阅读 · 0 评论 -
【FIFO】FIFO 最小深度计算
目录为什么使用 FIFOFIFO 的深度大小题型及解答为什么使用 FIFO当我们需要在两个模块之间进行数据的传输,并且两个模块的时钟是不同的,当一定数量数据传输时为了避免数据出现丢失,而且此时写入数据速率大于读出数据速率时,这时候需要将利用 FIFO 做缓冲。FIFO 的深度大小FIFO 的深度(大小)应使 FIFO 可以存储所有较慢的模块不读取的数据。 FIFO 仅在数据以突发形式出现时才起作用;不能有连续的数据进出(比如ADC连续采集数据)。如果有连续的数据流,那么所原创 2022-05-15 22:31:35 · 2046 阅读 · 0 评论 -
一文看懂异步 FIFO 架构(三) 双时钟的异步 FIFO
在本系列的第一篇文章中,我们看到了 FIFO 的一般架构,并分析了一个时钟的简单情况。该系列的第二部分描述了一种可能的双时钟设计的架构。在第三部分中,我们将探索另一种选择双时钟 FIFO 架构;这种替代架构不一定更好,它只是另一种实现方式。工作原理到目前为止,我们已经发现,任何涉及来自不同时钟域的多位二进制量的计算都需要对它们进行格雷编码。这种架构也不例外。它与之前的架构仅在一个方面有所不同,找出导致读写指针相等的条件。读写指针的相等意味着要么是满条件要么是空条件,这取决于是写还是读(分别)导致原创 2022-05-12 22:17:10 · 978 阅读 · 0 评论 -
一文看懂异步 FIFO 架构(二) 读写时钟独立的异步 FIFO
目录写在前面亚稳态解决时间MTBF 和可靠性同步采样计数器同步:解决可靠性问题悲观报告:正确处理错误架构 1创建空、满条件第一个解决方案执行时序考虑往期系列博客写在前面在本系列的前一部分中,我们看到了如何使用以下方法设计同步 FIFO一个双端口、非寄存输出 RAM。 这部分检查了相同的概念如何可能扩展以产生具有独立、自由运行的读取和写入时钟的 FIFO。 有自由运行的时钟简化了一些问题,但这会导致针对特定情况的解决方案。最普遍的情况是对原创 2022-05-09 22:00:54 · 2437 阅读 · 0 评论 -
一文看懂异步 FIFO 架构(一) 单时钟的异步 FIFO
目录FIFO 的用途单时钟 FIFO 的例子FIFO 空满信号FIFO 读写指针空满信号条件FIFO 的用途首先, FIFO 通常用于跨时钟域,因此是双时钟设计。换句话说,该设计使用两个时钟,因此最常见的情况是设计的 FIFO 没有假定这两个时钟之间的关系。但是,我们不会从这样的架构开始我们将从仅在一个时钟上运行的 FIFO 的简单情况开始。我想这样的电路在实践中的用途有限,但它非常有用,可以为更复杂的设计奠定基础。单时钟 FIFO 的例子FIFO 有几种可能的架构。原创 2022-05-07 22:13:24 · 1980 阅读 · 0 评论 -
【CDC 设计】FPGA 跨时钟域设计方法
目录跨时钟域介绍建立时间和保持时间建立时间保持时间局部同步设计概念跨时钟域的问题同步化多时钟域设计的分类亚稳态什么是亚稳态引起亚稳态的原因亚稳态对系统可靠性的危害如何减少亚稳态的风险单一时钟域内信号跨时钟域的信号同步化技术同步器同步器的分类电平同步器边沿检测同步器脉冲同步器同步器设计推荐的做法使用同步器需要注意的问题总线信号跨时钟域保持寄存器和握手FIFOFIFO 写满和读空标志的产生总结原创 2022-05-01 22:01:49 · 1830 阅读 · 0 评论 -
【Xilinx AX7103 MicroBalze学习笔记5】MicroBlaze 串口中断实验
目录实验任务实验框图硬件设计(Vivado部分)新建工程Block Design搭建软件设计(SDK部分)新建工程代码部分实验任务利用 UART IP 以及 AXI Interrupt Contriller IP 实现通过串口发送数据产生中断,控制器接收到中断并将串口发送出来的数据重新通过串口打印出来。实验框图实验框图比较简单,相比较 hello world 的实验,只添加了一个中断 AXI Interrupt Contriller IP,用于实现..原创 2022-04-26 22:16:26 · 3290 阅读 · 5 评论 -
【XINLIX 原语】XILINX 原语的使用之 IBUFDS 差分转单端、OBUFDS 单端转差分
目录IBUFGDSIBUFDS 介绍IBUFDS 示意图例化方式OBUFDSOBUFDS 介绍OBUFDS 示意图例化方式在 XILINX 中有许多原语,常见的差分转单端 IBUFDS、单端转差分 OBUFDS。IBUFGDSIBUFDS 介绍IBUFDS 即专用差分输入时钟缓冲器(DedicatedDifferential Signaling Input Buffer with Selectable I/O Interface)IBUFDS:在实验.原创 2022-04-24 21:08:08 · 16312 阅读 · 4 评论 -
【Xilinx AX7103 MicroBalze学习笔记4】MicroBlaze 按键中断实验
目录实验任务实验框图硬件设计(Vivado部分)Block Design 搭建软件设计(SDK部分)代码部分上板验证往期系列博客实验任务通过 AXI GPIO 检测按键状态产生中断信号,中断控制器检测到中断后,给处理器发送中断请求,处理器接收到中断并控制 LED 灯的亮灭。本实验基于 Vivado2018.2 实现。实验框图系统框图中,按键 KEY 作为 AXI GPIO 的输入,LED 作为 AXI GPIO 的输出。当 AXI GPIO 检测到原创 2022-04-18 21:59:01 · 2340 阅读 · 2 评论 -
【Xilinx Vivado 时序分析/约束系列11】FPGA开发时序分析/约束-FPGA DDR-PLL接口的 input delay 约束优化方法
目录DDR-PLL 简述实际操作实际工程顶层代码PLL配置添加时钟约束添加 input delay 约束添加 False PathSetup TimeHold TimeMulticycle约束解决办法PLL配置发现问题建立时间中保持时间中添加 False Path总结往期系列博客DDR-PLL 简述在之前介绍了 DDR-Direct 的时序模型,也就是不带有 PLL 的普通时序模型,这节重点介绍带有 PLL 的模型,在.原创 2022-04-10 21:39:27 · 4114 阅读 · 3 评论 -
【Xilinx Vivado 时序分析/约束系列10】FPGA开发时序分析/约束-FPGA DDR-Direct接口的 input delay 约束优化方法
目录DDR采样简述第一种模型(不带PLL)实际操作总结约束实际工程顶层代码时钟约束input delay约束查看时序报告解决办法添加原语原语解释查看时序报告时序分析总结往期系列博客DDR采样简述在之前分析了SDR采样,也就是单边采样,接下来介绍DDR采样,也就是双边采样,在实验应用中,DDR采样也是很广泛的,比如CMOS、DRAM、ADC、千兆以太网等,都是DDR接口的,因此也需要去分析时序是否正确,学会如何去进行时序约束。原创 2022-04-08 21:16:30 · 3442 阅读 · 3 评论 -
【Xilinx AX7103 MicroBalze学习笔记3】MicroBlaze 利用 AXI GPIO 控制 LED 灯
实验任务本实验通过使用 AXI GPIO IP,实现对 LED 灯的控制。本实验基于 Vivado 2018.2 实现实验框图实验框图如下,相比较之前的 Hello World 的实验工程框图,这个实验只是多了AXI GPIO这个IP核。AXI GPIO 和 AXI UART 都通过 AXI Interconnect 模块与 MicroBlaze 互联,Microblaze 处理器输出 LED 灯的控制信号,通过 AXI Interconnect 互联模块传输到 AXI GPIO 模块,AX原创 2022-04-07 21:32:22 · 2161 阅读 · 7 评论 -
【Xilinx AX7103 MicroBalze学习笔记1】MicroBlaze介绍
目录MicroBlaze简介MicroBlaze框架图MicroBlaze开发流程Vivado部分SDK部分总结MicroBlaze简介软核 MicroBlaze是一款软核微处理器,专为Xilinx FPGA 而设计。作为一款软核处理器,MicroBlaze 完全采用 Xilinx FPGA 的通用存储器和逻辑结构实现。就其指令集架构而言,MicroBlaze类似于Patterson和Hennessy在一本流行的计算机架构书中描述的基于RISC的DLX架构。除..原创 2022-04-03 11:57:37 · 7045 阅读 · 1 评论 -
【Xilinx AX7103 MicroBalze学习笔记2】MicroBlaze 串口发送 Hello World 实验
目录实验介绍硬件设计(Vivado部分)创建工程搭建Block DesignMicroBlaze部分外围模块部分时钟模块Uart部分管脚绑定、时钟约束生成Bit流文件软件设计(SDK部分)板级验证总结往期系列博客实验介绍本节介绍最简单的实验工程,用串口打印helloworld。实验工程基于Vivado2018.2实现下图是实验工程的框图,非常简单,MicroBlaze作为处理软核,搭载着片上存储器BRAM,MB通过AXI互联接到原创 2022-04-06 20:34:18 · 3559 阅读 · 3 评论 -
【常见错误 error】Vivado SDK在启动程序时显示cannot stop MicroBlaze.MicroBlaze is held in reset 问题解决办法
目录问题描述调试过程总结问题描述在第一次使用AX7103这块黑金的板子,打算先做个helloworld的串口打印实验来验证板子的可行性,在创建工程BD如图所示,很简单的一个uart打印实验。添加约束文件并生成比特流文件后,将硬件信息导入到SDK中,并新建一个新的工程,直接调用helloworld模板就可以了,于是出现了如标题所示的报错。不能停止MicroBlaze,MicroBlaze处于复位状态。调试过程以下时我的调试过程:1、之前做的MicroBlaz原创 2022-04-04 20:13:10 · 7966 阅读 · 2 评论 -
【定点数运算】定点的乘法和加法
定点的介绍在之前的博客中介绍了定点数和浮点数,想要了解的可以前往以下链接:【定点和浮点】定点数与浮点数的解释定点的优势使用定点表示有什么优势?为什么不简单地将所有值规范化为整数范围并处理整数。将所有值规范化为整数,这会产生非常不可读的代码和文档。在观察某些代码时,定点通常更加方便。例如,如果我正在查看源代码,如下代码所示:c0 = fixbv(0.0032, min=-1, max=1, res=2**-15)c1 = fixbv(-0.012, min=-1, max=1, res原创 2022-03-31 22:13:40 · 2496 阅读 · 0 评论 -
【Xilinx Vivado时序分析/约束系列9】FPGA开发时序分析/约束-FPGA单沿数据input delay边沿对齐,不同时序模型实操练习
目录边缘对齐采样时序图更改PLL参数综合布线report timing路径分析两种约束模型第一种模型实际操作添加约束路径分析第二种模型顶层代码添加时钟约束解决办法input delay约束综合布线结果总结往期系列博客边缘对齐采样边缘对齐采样的方式进行input delay约束,在系列第八讲中介绍过,在边缘对齐采样的情况下,容易出现保持时间余量不足的情况,这是由于在发射时钟的下一个时钟作为采样时钟去采数据时,由于间隔了原创 2022-03-26 19:52:49 · 5611 阅读 · 2 评论 -
【Xilinx Vivado时序分析/约束系列8】FPGA开发时序分析/约束-FPGA数据中间采样、边缘采样PLL时序优化实操
目录时序分析实操分析数据手册实验工程输入部分输出部分顶层部分设计层次综合布线时序约束时钟约束输入延时约束分析输入延时的约束如何设计数据中间采样最小延时约束最大延时约束结果分析数据边缘采样添加input delay约束时序报告解决方法PLL IP配置参数综合布线改变PLL IP中的相移参数综合布线结果分析往期系列博客时序分析实操本实验根据数据手册分析,对时序进行约束,分为两种情况:数据中间采样.原创 2022-03-22 21:51:07 · 6341 阅读 · 2 评论 -
【亚稳态、建立时间和保持时间】亚稳态的产生原因、危害及解决方法
一、亚稳态的产生原因如图所示,当sys_clk时钟信号上升沿踩到Rx信号的变化间隙时,此时输出的Rx_reg1信号就会出现亚稳态,其输出信号就会出现震荡、毛刺或者固定在某一电压值,而不是等于D端输入的值,经过震荡之后,Q端会输出0或者1。出现亚稳态的原因:在信号输入到寄存器的时候,建立时间Tsu和保持时间Th不满足条件。这里就涉及到建立时间和保持时间的概念。建立时间:时钟信号上升沿到来之前,输入信号数据需要维持一定时间的稳定状态,这个“一定时间”就是建立时间。保持时间:时原创 2022-02-26 16:51:02 · 3168 阅读 · 2 评论 -
【信号采集】基于FPGA的高速信号采集系统
1、高速采集系统实现的功能,FPGA内部功能模块组成;2、高速ADC接口的FPGA实现;3、数字下变频(DDC)的FPGA实现;4、三倍抽取功能的FPGA实现;5、Aurora接口的FPGA实现;高速采集系统的功能和组成:1、实现功能:对中频模拟信号进行采集变成中频数字信号,将中频信号下变频为零频数字信号,数据做一定处理后,通过高速数字接口发送给后级处理系统;2、系统组成:高速ADC完成对模拟信号的采集,DDC将采集到的信号滤波下变频,数据处理模块对数据进行三倍抽取,通过原创 2022-02-11 12:52:47 · 9917 阅读 · 2 评论 -
【ZYNQ-GPIO MIO】Xilinx 知识点笔记(GPIO篇、MIO)
1、GPIO是一个外设,用来对器件的引脚作观测(input)以及控制(output)。2、MIO(Multiuse I/O),将来自PS外设和静态存储器接口的访问多路复用到PS的引脚上。3、GPIO可以独立且动态地编程,作为输入/输出以及中断模式。4、GPIO被分成了4个BANK,Bank0/Bank1通过MIO连接到PS的引脚,Bank2/Bank3通过EMIO连接到PL,可以通过配置其寄存器所在的地址对其进行控制。5、软件通过一组存储映射的寄存器来控制GPIO。...原创 2022-02-11 12:45:38 · 1517 阅读 · 0 评论 -
【ZYNQ-EMIO】EMIO学习笔记
1、EMIO的定义关于EMIO的定义,在Vivado官方文件ds190和ug585中有详细的解释。EMIO(extendable multiplexed I/O)EMIO是PS和PL之间的接口。EMIO是扩展的MIO,当PS的引脚不够用的时候,可以通过EMIO来进行扩展,从而是其用PL的引脚。2、如何使用MIO的输入?①配置成输入②读DATA_RO寄存器注意事项:①如果只用了PS端的引脚,是不需要进行管脚约束的,当进行generate o...原创 2022-02-10 16:17:04 · 2365 阅读 · 0 评论 -
【JTAG】保证JTAG正常操作的检查步骤
检查JTAG1、首先要确保安装了驱动,安装vivado好软件就自带安装好了驱动。2、用MICROUSB线(一般买来会附赠,也可以用手机USB连线替代)链接板子PROG口和电脑的USB口。如下图粉色的USB线。3、给板子上电,查看电脑的设备管理器,在 通用串行总线控制器里找到 USB Serial Converter,就说明驱动已经正确安装,并且连接好了USB线。4、注意5根跳线都接GND,这样设置到JTAG启动模式,这点很重要。5、跳线设置完毕...原创 2022-02-10 15:49:00 · 1466 阅读 · 1 评论 -
【Xilinx DMA】Xilinx FPGA DMA介绍
DMA(Direct Memory Access 直接内存访问)可以在不受CPU干预的情况下,完成对内存的存取。在PS和PL两端都有DMA,其中PS端的是硬核DMA,而PL端的是软核DMA。如何选用这两个DMA呢?如果从PS端的内存DDR3到I/O、DDR3、OCM,少量的数据传输就用PS端的DMA;而对于大量数据的搬运,内存DDR3到PL的软核AXI DMA,并且用HP接口以达到高速传输的效果,但是其缺点是会占用FPGA的一部分逻辑资源,以内存换速率。AXI DMA为内存和AXI4原创 2022-02-07 14:33:10 · 7243 阅读 · 0 评论 -
【Xilinx DMA SG】Xilinx DMA SG 模式
DMA简介:AXI 直接存储器访问 (AXI DMA) IP 提供高带宽直接存储器 AXI4 存储器映射和 AXI4-Stream IP 接口之间的访问。它SG模式还可以从中央处理中卸载数据移动任务 基于处理器的系统中的单元 (CPU)。初始化、状态和管理寄存器是 通过 AXI4-Lite 从接口访问。图说明了功能 核心的组成。1、系统内存和stream目标之间的主要高速 DMA 数据移动是 通过 AXI4 Read Master 到 AXI MM2S Stream Master,以及.原创 2022-02-05 14:19:53 · 5692 阅读 · 4 评论 -
【BRAM、DRAM】BRAM和DRAM的区别
Xilinx的FPGA开发板可以直接调用RAM,其中包括了BRAM和DRAM。经过网上查找资料发现,这两者的区别在于:选择distributed memory generator和block memorygenerator标准:Dram和bram区别:1、bram 的输出需要时钟,dram在给出地址后即可输出数据。2、bram有较大的存储空间,是fpga定制的ram资源;而dram是逻辑单元拼出来的,浪费LUT资源3、dram使用更灵活方便些补充:在Xilinx Asynchro原创 2022-01-28 17:28:27 · 4467 阅读 · 0 评论 -
【Xilinx DDR3 MIG】Xilinx FPGA DDR3读写实验相关用户接口引脚解释
用于生成MIG IP核的时钟。原创 2022-01-28 17:24:46 · 1178 阅读 · 0 评论 -
【Xilinx 程序固化】FPGA程序固化方法:SD卡、flash
什么是FPGA程序的固化?通常对FPGA下载程序时,会采用JTAG口下载,完成好HDL设计,并且验证无误后,对设计文件进行综合,布局布线以及生成比特流文件,而FPGA开发板要想工作,需要将该文件烧写进FPGA芯片中。但是FPGA是基于RAM工艺(如LUT的实质就是RAM),因此会掉电丢失,再次上电后需要重新加载bit流。一般FPGA的外围会有一个非易失性存储器:Flash或SD卡等。可以将程序加载进去,这样的话,下次上电后可以直接从该存储器中加载程序,这就是固化的过程。FSBL的功能:(first原创 2022-01-26 12:56:21 · 8274 阅读 · 0 评论