FPGA的几种经典模块划分架构

     今天更新这篇博客主要介绍几种经典的模块划分架构,工作日下班更新博客言简意赅,这些也是在FPGA工程开发中常用到的,其广泛应用在FPGA对通信领域、高速接口、图像视频、数字信号、人工智能处理等多个方面,虽然应用场景在变换、实际需求在增加、项目工程在迭代,但是对于模块划分的理念和核心设计的思想依然是相通的。

一、直接交互架构

       如图1所示,直接交互架构是最简单易行的模块划分架构,上游模块A直接把数据扔给下游模块B,下游模块B在对数据进行处理即可,一般用于下游模块处理速度远远高于上游模块的应用场景,也就是说数据消耗的速度远快于数据产生的速度,在这种情况下选用该架构方式设计最为简便。

FPGA的几种经典模块划分架构_第1张图片

图1 直接交互架构示意图

二、上游缓存架构

        如图2所示,上游缓存架构也是一种在项目工程中用到较多的模块划分架构,当下游模块B发送rdy信号给上游模块A时,上游模块A立刻从FIFO中取出缓存数据送至下游模块B,这种模块划分架构通常用在上游模块产生数据快,而下游模块消耗数据慢的应用场景,当然也可能设计当中上游模块A需要同时发送多包相关的包文给模块B,所以需要借用FIFO临时缓存数据。

FPGA的几种经典模块划分架构_第2张图片

图2 上游缓存架构示意图

三、下游缓存架构

        如图3所示,下游缓存架构可以说是应用最多的设计架构模式,当下游模块B发送rdy信号给上游模块A时,上游模块A只要有数据产生就立刻把数据扔给下游模块B,因为下游模块B有FIFO缓存,所以能够非常好的解决上下游模块读写速度不匹配等项目工程中经常遇到的问题。

FPGA的几种经典模块划分架构_第3张图片

图3 下游缓存架构示意图

四、请求应答架构

      如图4所示,请求应答架构也是一种广泛使用的模块划分架构,当上游模块A发送req请求信号,下游模块B接收到后根据本模块的设计,进行判断后返回ask应答信号,而这时候上游模块A在收到应答后,就可以根据实际需求,传输相关的包文数据了,这种架构一般来说,应用在上游模块需要等待下游模块做一系列相关数据处理后,再连续发送多包数据包文的情况。

FPGA的几种经典模块划分架构_第4张图片

图4 请求应答架构示意图

五、多级通信架构

       如图5所示,多级通信架构一般应用在指令解析模块和指令动作模块之间,比如上位机通过各种接口发送指令至FPGA端,ARM、DSP通过不同总线发送数据至FPGA端,一般在经过接口驱动模块、通信协议模块后,即进入了下图模块A的指令、数据解析模块,模块A会对不同包文进行指令解析,而每个指令背后可能又需要模块B、模块C、模块D等多个模块去响应对应的指令。

FPGA的几种经典模块划分架构_第5张图片

图5 多级通信架构示意图

  

六、流水处理架构

       如图6所示,流水处理架构虽然没有前面几个模块划分架构用的频繁,但也是一种经典的架构,从图中大家可以非常容易想象到其用途,模块A进过一系列数据处理后把中间数据data1送至模块B,模块B处理后再将中间数据data2送至模块C,依次类推,比如后期大家在学习千兆以太网实现ARP、ICMP、UDP通讯协议时,就会遇到这种经典架构,网口收到的数据会根据不同层协议进行层层解析。

FPGA的几种经典模块划分架构_第6张图片

图6 流水处理架构示意图

七、外设连接架构

       如图7所示,是FPGA控制外设芯片,外接接口常用到的模块划分架构,一般来说FPGA在驱动外接芯片或者接口的时候,会有多个接口模块实现对底层驱动的开发,当然对于一些芯片或者外设,例如WM8731音频转化芯片,OV7725系列摄像头,这里需要配置模块初始化其内部寄存器后才可以正常使用,为了方便大家理解所以该模块在图中用虚线标出了,再由上游命令模块发送数据和指令,通过接口模块实现对外设的逻辑控制。

FPGA的几种经典模块划分架构_第7张图片图7 外设连接架构示意图

你可能感兴趣的:(FPGA,基础知识,fpga开发,硬件工程,嵌入式硬件)