
硬件学习
文章平均质量分 83
wangbowj123
炼丹中。
展开
-
一文带你深入理解电路中的亚稳态现象与跨时钟域信号处理
前言亚稳态是一种现象,可以导致数字设备(包括FPGA)出现系统故障。当一个信号在不相关或异步时钟域的电路之间传输时,亚稳态现象较容易出现。本文描述了亚稳性,解释了为什么会出现这种现象,并讨论了它是如何导致设计失败的。由亚稳态引起的平均无故障时间(MTBF)的计算表明设计者是否应该减少此类失败机会的步骤。亚稳态数字设备(如FPGA)中的所有寄存器都定义了信号时序要求,允许每个寄存器在其输入端正确捕获数据并产生输出信号。为确保可靠运行,寄存器的输入必须在时钟边沿之前的最短时间(寄存器的建立时间tSUt_{原创 2021-06-26 21:19:40 · 2145 阅读 · 1 评论 -
同步FIFO和异步FIFO的实现
同步FIFO的实现首先是同步的实现,只需要一个时钟用来控制读写。同步 FIFO 实现较为直接,如下图所示,一个 FIFO 内部实现了 RAM 和一个控制读写的控制端,和普通的随机存储器不一样的是,FIFO 内部需要自动产生读写地址。控制端产生空、满信号。因此如何实现控制端去产生空满信号是主要需要考虑的地方。通常空满的判断是通过读、写地址进行的。第一种思路,利用读写地址的大小来判断空、满方法很简单,设置一个信号量 factor 来表识空满,每次读一个数据则令 factor - 1,写一个数据则令其原创 2021-06-10 17:32:55 · 1435 阅读 · 0 评论 -
使用 Verilog 实现排序
使用Verilog编写电路,实现排序操作。原创 2021-06-06 17:01:22 · 11941 阅读 · 1 评论 -
zynq sdk 开发之通过 BRAM 进行 PL 与 PS 的数据交互
如何在 zynq 中进行 PL 端与 PS 端的数据交互?在zynq的使用中,高效的进行 BRAM 与 zynq 硬核的数据交换至关重要,当我们需要进行小批量的数据交换时,可以考虑采用 BRAM 作为数据交换的媒介,在 PS 端,将数据通过 AXI 总线写入 PL端的 BRAM 里面去,并且再读出来。整体的设计图如下所示:PL 端硬件的设计在 vivado 2017.4 下,可以通过 block design 快速进行模块的添加与设计。设计出来的架构如图所示:注意事项:BRAM 使用真实双端原创 2020-10-06 15:54:19 · 6441 阅读 · 44 评论 -
FPGA 可编程性与布局布线原理探究
学习 FPGA 也有了一段时间,在不断 coding 的过程中,对综合、布局布线等操作感到一丝丝的困惑,特将一些个人感悟总结如下:为什么说 FPGA 是可编程的?以基于 SRAM 的 FPGA 举例,由于 FPGA 是极其细粒度的架构,无论是怎样的电路,综合到片上之后都将以 LUT 、触发器和 MUX 的结构组成,而一个 k 输入的 LUT 又是由 2k2^k2k 个 SRAM bit 位作为选择输出,从而一个 k 输入的查找表可以配置实现任意 k 输入1输出的组合逻辑,如下图所示。之所以说 FPGA原创 2020-10-04 22:34:18 · 7366 阅读 · 0 评论 -
《计算机体系结构:量化研究方法》读书笔记
Lecture 1: Quantitative Approach1.计算机体系结构与计算机组成原理有什么区别?计算机的实现包括两个方面:组成和硬件。组成一词包含了计算机设计的高阶内容,例如存储器系统,存储器互连,设计内部处理器 CPU (中央处理器——算术、逻辑、分支和数据传送功能都在内部实现)。有时也用微体系结构一词来代替“组成”。例如AMD Operon和Intel Core I7是两个指令集体系结构相同但组成不同的处理器。这两种处理器都实现X86指令集,但它们的流水线和缓存组成有很大的不同。硬件指原创 2020-10-04 21:50:16 · 4462 阅读 · 0 评论