赞
踩
本文摘自《FPGA之道》,一看来学习下作者的看法。
抛开应用背景、科研领域不谈,单从FPGA设计本身的一些特性出发,就可以将它划分成若干个基本类别。在动手用HDL代码实现FPGA设计之前,最好先分析一下待实现的FPGA设计具有哪一个或者哪几个基本类别的特征,从而采用更加适合的编程思路来编写HDL代码。
按功能来看,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设计做一个速度与规模的评估,从而估计开发难度以及采取相应的开发策略。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。