感悟:FPGA的串行及并行设计思路
前言
FPGA设计过程中, 会遇到大量的串行转并行或者并行转串行的问题;
这些问题主要体现在FPGA对于速度和面积的均衡上;
一般而言, FPGA使用并行的设计可以提高处理的速度, 消耗更多的资源;
FPGA使用串行设计, 可以节约资源, 处理速度有所下降;
而在实际的使用过程中, 串行的设计往往贯穿于整个项目, 用于控制整个工程的执行逻辑;
并行的设计往往体现在局部需要加速的部分;
内容
串行设计
串行设计的方法比较多, 常见的有状态机/流水线/乒乓操作等, 其主要的作用是控制数据在不同阶段的处理;
用状态机可以将设计流程图直接转化为具体的代码, 实现对应的操作;
配合条件控制和状态驱动, 状态机可以将整个模块大部分的功能整合到一个整体,从而实现代码效率及可读性的跨越;
流水线操作的流程是串行的,处理的数据却是同步进行的; 通过控制每个模块的刷新节奏, 实现数据的逐级独立处理;
乒乓操作针对的主要是串行设计中数据从高速到低速或者从一个不稳定速度到稳定速度的操作, 基本思路是用类似的逻辑实现操作时序的缓冲;
并行设计
并行设计一般体现为一个模块的多次调用,构成一个重复模块的并行处理同一个数据的特性;
当然也可以是不同的模块处理同一个数据, 主要的特点在于一份数据被多个模块同时调用;
并行设计的前提是数据操作可以被分别执行且消耗的资源可以接受;
简单的例子是求A的4次方,在资源充足的条件下, 可以由两个乘法器并行执行后在将结果并行执行;
如果乘法器的性能足够好的话, 也可以直接用四个乘法器在一个周期内完成计算;
更加复杂的并行则是使用参数化的模块, 通过修改少量的参数并行执行不同的任务, 从而实现数据的大幅提升;
并行设计是模块化设计提高效率的基本原理;
总结
早期FPGA设计训练一般以串行设计为主, 但是在串行设计熟练后, 应该穿插并行设计, 以实现更高性能的设计;
感悟:FPGA的串行及并行设计思路的更多相关文章
- Xilinx FPGA高速串行收发器简介
1 Overview 与传统的并行实现方法相比,基于串行I/O的设计具有很多优势,包括:器件引脚数较少.降低了板空间要求.印刷电路板(PCB)层数较少.可以轻松实现PCB设计.连接器较小.电磁干扰降低 ...
- 芯航线FPGA学习套件之多通道串行ADDA(TLV1544,TLC5620)模块测试手册
芯航线FPGA学习套件之多通道串行ADDA模块测试手册 本手册以简明扼要的方式介绍芯航线FPGA学习套件提供的ADDA模块的测试方法: 连接开发板,如下所示: 2.将ADDA V1.1模块与开 ...
- 基于FPGA实现的高速串行交换模块实现方法研究
基于FPGA实现的高速串行交换模块实现方法研究 https://wenku.baidu.com/view/9a3d501a227916888486d7ed.html
- Silverlight并行下载与串行下载
思路清晰后仅仅只需百来行代码便可轻松编写出一套完整的资源动态下载组件- SerialDownloader和ParallelDownloader,它们共用一个完成资源表,且串行下载集成了优先机制(Dow ...
- RAPIDIO高速串行协议
RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能. 低引脚数. 基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放式互连技术标准.RapidI ...
- 【高速接口-RapidIO】2、RapidIO串行物理层的包与控制符号
一.RapidIO串行物理层背景介绍 上篇博文提到RapidIO的物理层支持串行物理层与并行物理层两种,由于Xilinx 部分FPGA内部已经集成了串行高速收发器,所以用FPGA实现RapidIO大多 ...
- 2.RapidIO串行物理层的包与控制符号
转自https://www.cnblogs.com/liujinggang/p/9932150.html 一.RapidIO串行物理层背景介绍 上篇博文提到RapidIO的物理层支持串行物理层与并行物 ...
- NodeJs使用async让代码按顺序串行执行
描述 由于nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A需要四五个参数,而这四五个参数值都是通过函数调用获得,因此按顺序写代码时,执行到函数A时,往往函数A需要的参数值因为参数的异步 ...
- MFC六大核心机制之四:永久保存(串行化)
永久保存(串行化)是MFC的重要内容,可以用一句简明直白的话来形容其重要性:弄懂它以后,你就越来越像个程序员了! 如果我们的程序不需要永久保存,那几乎可以肯定是一个小玩儿.那怕我们的记事本.画图等小程 ...
- Promise的并行和串行
Promise 并行 这个功能Promise自身已经提供,不是本文的重点.主要是依赖Promise.all和Promise.race. Promise.all是所有的Promise执行完毕后(reje ...
随机推荐
- 【Unity3D】人机交互Input
1 前言 Input 是 Unity3D 中用于人机交互的工具类,用户可以调用其 GetKey.GetMousePosition.GetMouseButton.GetAxis.GetButton ...
- pt-table-checksum对比数据测试(dsns方式)
1.1.工作原理 pt-table-checksum会对校验的表数据进行数据块(数据块大小根据服务负载情况调整)划分,并对数据块数据进行checksun处理:存储在建立的表中.在主库中执行基于stat ...
- Springboot thymeleaf实战总结
介绍 以下总结了使用Thymeleaf做项目过程中碰到的有价值的知识点.拿出来分享! 1.配置context-path 在公共模板中添加: <script type="text/jav ...
- Vue+SpringBoot+ElementUI实战学生管理系统-9.教师管理模块
1.章节介绍 前一篇介绍了班级管理模块,这一篇编写教师管理模块,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.实现效果 教师列表 修改教师 4.模块 ...
- 使用virtualenv新建django项目
# 安装virtualenv pip install virtualenv # 创建虚拟环境 virtualenv venv # 进入虚拟环境 venv\Scripts\activate # 安装dj ...
- Java集合框架学习(一)介绍
介绍 Java集合框架是一组接口和类的集合,它使得存储和处理数据更加有效率. 该框架有一些类,有很多函数使得程序员更加容易的处理集合类型数据. 后面的教程就是针对这些常用类展开,配合例子代码来给大家一 ...
- [BUUCTF][WEB][极客大挑战 2019]BabySQL 1
靶机打开url 界面上显示,它做了更严格的过滤.看来后台是加了什么过滤逻辑 老规矩先尝试时候有sql注入的可能,密码框输入 123' 爆出sql错误信息,说明有注入点 构造万能密码注入 123' or ...
- Programming Abstractions in C阅读笔记:p293-p302
<Programming Abstractions in C>学习第73天,p293-p302总结,总计10页. 一.技术总结 1.时间复杂度 (1)quadratic time(二次时间 ...
- KPTP 汇报模板
1.什么是KPTP 它是由4个单词:Keep.Problem.Try.Plan的首字母组成的. K:keep,今天做了哪些工作: P:problem,遇到了哪些问题: T:try,计划尝试如何解决这些 ...
- iterables/generators/yield
iterables # 当你创建了一个列表,你可以一个一个的读取它的每一项,这叫做iteration: >>> mylist = [1,2,3] >>> for i ...