文章目录

  • 前言
  • 设计的分类
    • 按功能分
    • 按面向分
    • 按速度和规模分
      • 按速度分
      • 按规模分
      • 按速度、规模分

前言

本文摘自《FPGA之道》,一看来学习下作者的看法。

设计的分类

抛开应用背景、科研领域不谈,单从FPGA设计本身的一些特性出发,就可以将它划分成若干个基本类别。在动手用HDL代码实现FPGA设计之前,最好先分析一下待实现的FPGA设计具有哪一个或者哪几个基本类别的特征,从而采用更加适合的编程思路来编写HDL代码。

按功能分

按功能来看,FPGA设计可以分为控制类、通信链路类和数据处理类

  • 其中,控制类设计主要通过对FPGA外围硬件电路的协调、控制,从而完成整个硬件系统所需功能;
  • 通信链路类设计本身一般不承担主要的硬件系统功能,它通过将外围主要硬件芯片的数据管脚全部连接到FPGA芯片上,从而实现了一个非常灵活的总线结构罢了(此时的FPGA设计也常被称为胶合逻辑);
  • 而数据处理类是一个比较大的类别,它完成了FPGA设计所基于的应用背景与科研领域所要求的一些高级功能。

从按功能划分的各个类别的说明来看,只有具有数据处理类别特征的FPGA设计才可能成为整个硬件系统中的主角。因为如果以人的神经系统作为比喻的话:通信链路类就好比分布在身体各个地方的神经元,只完成信息的传递功能;控制类就好比脊柱,不光完成关键信息传递,还可以适当的发挥自己的主观能动性(尤其是在大脑睡眠的时候);而数据处理类就好比大脑,完成了几乎所有的对信息的处理工作。因此,在了解了FPGA设计功能的侧重点之后,也可以对其在硬件系统中的角色定位有一个基本认识,从而可以在进行硬件系统级设计的时候就能评估好FPGA设计的任务量及重要性,从而分配好投入到FPGA设计中的人力、物力和财力。

按面向分

按面向来看,FPGA设计可以分为接口处理类与内部逻辑类。

  • 其中接口处理类主要负责和FPGA外围的路的一些通信,主要包括数据的接收与发送功能;
  • 而内部逻辑类主要完成数据的整合、处理和生成等功能。

因此,一般来说,FPGA设计均同时具备这两种基本类别的特征,而这两种基本类别也是相互依存的。接口处理类与内部逻辑类之间的关系就好比人的五官和大脑一样,五官负责接收外部信息(光、声音、热量等)和向外界发送信息(声音、书写、手势等),而大脑则负责处理五官接收到的信息和产生需要经由五官输出的信息。如果突然间眼瞎了、耳聋了、嘴哑了、身瘫了,那么即使再聪明的大脑也无法发挥作用;同样,如果大脑不灵光,即使拥有再好的视力、听力、嗅觉、触感,也一样搞不清看到的、听到的、闻到的、摸到的到底是怎么回事,更不知道该如何反馈自己得到的信息。因此,编写HDL代码之前,要清楚的区分好FPGA设计的接口处理部分与内部逻辑部分,然后在保证“看的准确”、“说的准确”的同时,保证“分析的准确”,从而保证FPGA设计的准确。
根据FPGA设计的具体情况,一般按面向分后的侧重点也不同。一般来说,简单的FPGA设计两个类别的HDL编写都比较简单,就好比阅读一样,眼睛获取了文字图像,大脑识别后直接通过嘴巴发声读出;有些设计则比较偏重于内部逻辑类,就好比做数学题一样,眼睛看到的算式图像,大脑识别后,还需要再根据相应的运算符号的意义进行运算,然后才能调用嘴巴发声说出结果;而有些设计则比较偏重于接口处理类,就好比玩连连看游戏,靠的就是眼疾手快;另外,还有一些设计两种特征都很偏重,就好比打篮球,拼速度、拼身体、更拼篮球智商。因此,在了解了FPGA设计面向的侧重点之后,就可以尽早的把握好FPGA设计的难点所在,能够更加充分评估FPGA设计的复杂度、可行性,以及合理分配投入在每一方面的精力等。

按速度和规模分

按速度分

如果仅仅按速度分,那么FPGA设计可分为纯组合逻辑设计、低速设计、中速设计、高速设计四类。 速度的概念,其实是和FPGA设计中时钟信号的频率息息相关的。如果FPGA设计中,根本没有时钟信号的概念(如果锁存的控制信号也看作时钟的一种的话),那么表明它也不会使用到任何的存储单元,因此,这种设计就是一个纯组合逻辑设计,对于这种设计来说,如果纯看FPGA内部,没有什么速度的概念,但是其内部的门延迟和线延迟等,可能会影响到整个硬件系统的速度和性能。而通常来说,FPGA设计中一般都是有时钟信号的,而且大部分时候可能还不止一个,此时可以根据时钟信号频率的高低,再细分为低速、中速或高速设计。实现同样的逻辑功能,如果对时钟速度的要求越高,那么开发起来难度就越大,因此可以根据FPGA设计中时钟速度的需求,来评估开发难度、采取相应的开发策略。

按规模分

如果仅仅按规模分,那么FPGA设计可以分为小规模设计、中规模设计和大规模设计三类。规模的大小其实也就是实现一个FPGA设计所需要使用到的资源的多少。因此规模越大,能够实现的逻辑功能也就越多、越复杂,但是随之而来,编译器的负担也越大,尤其是FPGA设计的资源占用率也很大时,布局布线的成功率会明显降低。因此也可以根据FPGA设计的规模来评估开发难度以及采取相应的开发策略。

按速度、规模分

如果综合时钟速度要求与资源规模预期,又可将考虑FPGA设计分为四个类别:低速小规模设计、低速大规模设计、高速小规模设计、高速大规模设计。低速小规模设计最简单;低速大规模设计难点主要在逻辑功能上;高速小规模设计难点主要在逻辑性能上;而高速大规模设计的难点则同时在逻辑功能与性能上,并且一般都需要用到时空变换的思想来达到系统需求。因此,在写HDL代码前先对自己的FPGA设计做一个速度与规模的评估,从而估计开发难度以及采取相应的开发策略。

FPGA之道(42)FPGA设计的分类相关推荐

  1. FPGA之道(2)FPGA应用方向

    文章目录 前言 ASIC原型验证 流片 SOC SOPC 小规模产品 要求功能灵活可配置的产品 更新换代快的产品 科研领域 前言 备注:本篇博客内容摘自于<FPGA之道> FPGA已经从最 ...

  2. FPGA之道(71)提高设计的综合性能(三)提高设计的重用性与易改性

    文章目录 前言 提高设计的重用性 构建自己的IP库 提高设计的易改性 常量参数化模块设计 结构参数化模块设计 总线参数化 规模参数化 功能参数化 参数化设计的参数管理与组织 参数相关性 可传递的模块参 ...

  3. FPGA之道(50)复位的设计

    文章目录 前言 复位的设计 为什么FPGA设计中要有复位 复位方式的分类 同步复位 异步复位 复位的设计方法 同步信号同步复位 同步信号异步复位 异步信号同步复位 异步信号异步复位 复位高扇出的解决方 ...

  4. FPGA之道(18)FPGA设计的编译过程

    文章目录 前言 FPGA设计的实现过程 编译概述 编译流程之综合 综合的输入 HDL代码 综合设置 综合的输出 综合的工具 编译流程之翻译融合 翻译融合的输入 翻译融合的输出 翻译融合工具 编译流程之 ...

  5. FPGA之道(17)FPGA设计的时序分析

    文章目录 前言 FPGA设计的时序分析 一.时序分析的概念和必要性. 二.时序分析的分类 三.时序分析工具介绍. 四.时序约束与时序分析的关系. 五.时序分析的好处与隐患. 六.时序分析环节的输出. ...

  6. FPGA之道(72)提高设计的综合性能(四)提高设计的移植性与保密性

    文章目录 前言 提高设计的移植性 保持良好的代码风格 按照硬件依赖性区分代码 少使用专有IP核 提高设计的保密性 动态配置参数法 采用具有保密性的技术 前言 本文节选自<FPGA之道>. ...

  7. FPGA之道(70)提高设计的综合性能(二)提高设计的自测性

    文章目录 前言 提高设计的自测性 增加测试管脚 状态寄存器集 虚拟示波器 ChipScope&SignalTap 自己编写VirtualScope 编写激励发生测试模块 前言 本文节选自< ...

  8. FPGA之道(69)提高设计的综合性能(一)提高设计的鲁棒性

    文章目录 前言 提高设计的鲁棒性 一些影响设计正常工作的原因 非法输入 环境干扰 应对方法之输入预处理 应对方法之RAM替换FIFO 应对方法之状态机超时跳转 应对方法之三模冗余 应对方法之全局复位 ...

  9. FPGA之道(54)状态机的设计

    文章目录 前言 状态机的设计 状态浅析 真正的状态 抽象的状态与中间变量 抽象状态的设计方法 抽象状态与中间变量的权衡 基本状态介绍 初始态 结束态 中继态 分支态 复位态 空闲态 多余态 状态的一些 ...

最新文章

  1. SpringBootH ttpInvoker接口调用
  2. jquery实现上下左右键盘监听_python 使用pygame工具包实现贪吃蛇游戏(多彩版)
  3. [ARM异常]-图解armv7/armv8的异常向量表和基地址
  4. 范数和机器学习中的范数
  5. Java培训教程分享:变量与常量
  6. gj4 深入类和对象
  7. 数据库方面的操作示例
  8. java tostring格式_如何在Java中使用toString()获得数字的字符串表示形式?
  9. ruby wxruby rubytk的安装
  10. activity调用fragment的方法_Fragment 的现在以及未来
  11. 搜索引擎字符串(亲测)
  12. ST-Link驱动安装
  13. 栈和队列_入门oj题目练习:1用队列实现栈2用栈实现队列
  14. 页面风格设定参考——色彩及其效
  15. 智能卡(Smart Card)服务修复工具(解决无法读取外接设备的问题)
  16. 下一代Web服务的基础框架——F2F俱乐部SOA系列活动
  17. domian index域索引和全文索引
  18. php把搜索的结果导出,excel表格查找数据之后导出-如何将Excel查找全部后得到的内容Copy出来...
  19. SQL Plus的使用
  20. CANdbc编辑器的下载和入门介绍

热门文章

  1. Flex Builder 开发语言切换问题
  2. 号召一下,看有多少人能响应!
  3. oracle crs 不能启动,oracle 10g crs 不能启动问题解决案例
  4. 公共端接正极还是负极_【动力电池大事记】现代摩比斯启动首批模组工厂,松下拟挪威建厂,200名车主起诉现代,密歇根大学开发锂金属固态电池及“无负极”工艺...
  5. 查看一个索mysql_如何查看MySQL索引
  6. android view爆炸效果,Android 显示view的粒子爆炸/绽放效果
  7. 驻极体,PN结以及电子管相关问题
  8. 智能车竞赛线上比赛部分镜头
  9. 卡式水分滴定仪预测模型分析
  10. 几类 3.3V降压稳压电源IC芯片简介