完整word版FPGA研发牛人心得总结推荐文档.docx

上传人:b****0 文档编号:9951202 上传时间:2023-05-22 格式:DOCX 页数:69 大小:345.03KB
下载 相关 举报
完整word版FPGA研发牛人心得总结推荐文档.docx_第1页
第1页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第2页
第2页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第3页
第3页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第4页
第4页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第5页
第5页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第6页
第6页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第7页
第7页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第8页
第8页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第9页
第9页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第10页
第10页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第11页
第11页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第12页
第12页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第13页
第13页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第14页
第14页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第15页
第15页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第16页
第16页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第17页
第17页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第18页
第18页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第19页
第19页 / 共69页
完整word版FPGA研发牛人心得总结推荐文档.docx_第20页
第20页 / 共69页
亲,该文档总共69页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完整word版FPGA研发牛人心得总结推荐文档.docx

《完整word版FPGA研发牛人心得总结推荐文档.docx》由会员分享,可在线阅读,更多相关《完整word版FPGA研发牛人心得总结推荐文档.docx(69页珍藏版)》请在冰点文库上搜索。

完整word版FPGA研发牛人心得总结推荐文档.docx

完整word版FPGA研发牛人心得总结推荐文档

FPGA研发之道

FPGA是个什么玩意?

FPGA是个什么玩意?

      首先来说:

       FPGA是一种器件。

其英文名feildprogramable gatearry。

很长,但不通俗。

通俗来说,是一种功能强大似乎无所不能的器件。

通常用于通信、网络、图像处理、工业控制等不同领域的器件。

就像ARM、DSP等嵌入式器件一样,成为无数码农码工们情感倾泻而出的代码真正获得生命的地方。

只不过,一样的编程,却是不一样的思想。

嵌入式软件人员看到的是C。

而FPGA工程师看到是硬件描述语言,verilog或VHDL。

软件看到是函数、对象、重构。

FPGA工程师则是模块、流水、复用。

从现象上看,都是代码到下载程序再到硬件上运行。

不能只看现象而忽略本质。

FPGA开发本质上是设计一颗IC,“**的身子,丫鬟的命”不是所有verilog/VHDL代码,都能获得青睐去流片成为真正的芯片,而更多的则成为运行在FPGA器件上,成为完成相同功能的替代品。

其实现的功能却一点也不逊色于百万身价流片的近亲。

从而成为独树一帜的行业。

           FPGA开发的流程,是通过verilog/VHDL等硬件描述语言通过EDA工具编译、综合、布局布线成为下载文件,最终加载到FPGA器件中去,完成所实现的功能。

那硬件描述语言描述的是什么?

这里描述的就是组合逻辑电路和时序逻辑电路。

组合逻辑电路就是大家所熟知的与门、或门、非门。

时序逻辑电路则是触发器。

数字芯片上绝大部分逻辑都是这两种逻辑实现的。

也就是基本上每个电子行业的人所学过的数字电路。

顺便说一下,感谢香农大师,在其硕士毕业论文<继电器与开关电路的符号分析>就奠定了数字电路的的根基。

只不过在FPGA中,与或非的操作变成了查找表的操作。

于是所有的数字电路变成了查找表和寄存器,这就构成了FPGA的基础。

查找表负责逻辑实现,寄存器存储电路状态。

二者配合,双剑合璧,天衣无缝。

这是最初的FPGA的雏形。

现代FPGA内部出了查找表和寄存器之外,还有RAM块,用于存储大量的数据块,这是因为RAM块较寄存器来存储大量数据更能节省芯片实现的面积。

FPGA内部的时序电路则需要时钟的输入,通常FPGA内部需要时钟种类较多,因此需要在片内产生所需的的相关的时钟,如不同频率,不同相位的时钟,因此时钟管理单元DCM/PLL也是必不可少的内部部件。

除此之外,FPGA内部还包括接口I/O,I/O分为普通I/O和高速I/O,高速I/O支持例如高速的SERDES,用于实现XAUI,PCIE等高速接口,这些接口动辄几Gbps到10Gbps以上。

此外种类多种多样的硬核IP也是各FPGA厂商差异化竞争利器,例如POWERPC、ARM等硬核IP。

从而构成CPU+FPGA于一体的集可编程性和可重构的处理平台。

因此,相对来所,FPGA虽然发展有二三十年的历史,其基本架构一直不变不大。

      

        回到问题开始的地方,FPGA的英文翻译过来是现场可编程门阵列。

这是相对ASIC来说的,ASIC的硬件也可看做是门阵列,但是其是非可编程的器件。

流片完成其功能就固化了,而FPGA的可编程性就在其能够重新下载配置文件,来改变其内在的功能,这就是其可编程性的由来。

从前端开发流程来说,FPGA和ASIC开发并无二至。

由于ASIC开发一次性投入成本较高,FPGA无疑是一种经济的替代方案,用于实现的高速的数据并行处理。

如业务能够支撑大规模应用并且协议固化,则能够分摊成本的ASIC实现就有成本的优势。

      FPGA作为一种器件,技术上主要垄断在少数大公司手中,那就是双巨头ALTERA和XILINX。

除此之外还有一些份额相对较小的公司,例如ACTEL和LATTICE。

不止是FPGA的硬件芯片,其配套的EDA工具技术壁垒更高。

因此相对于CPU来说,FPGA的国产化更不乐观,不过已经有国内的厂商来从事这一行业,例如国微和京微雅格等,也在一些细分市场上推出自己的FPGA产品。

FPGA和他那些小伙伴们

(一)系统架构组成

通常来讲,“一个好汉三个帮”,一个完整的嵌入式系统中由单独一个FPGA使用的情况较少。

通常由多个器件组合完成,例如由一个FPGA+CPU来构成。

通常为一个FPGA+ARM,ARM负责软件配置管理,界面输入外设操作等操作,FPGA负责大数据量运算,可以看做CPU的专用协处理器来使用,也常会用于扩展外部接口。

常用的有ARM+FPGA,DSP+FPGA,或者网络处理器+FPGA等种种架构形式,这些架构形式构成整个高速嵌入式设备的处理形态。

   不得不说的是,随着技术的进步,现在CPU中集成的单元也随之增加,例如TI的“达芬奇”架构的处理器内部通常由ARM+DSP构成。

同时异构的处理器形态业逐渐流行,如ARM9+ARM7的结构。

这类一个主要处理系统(ARM9)外带辅助处理系统(ARM7)的设计,同样成为现在处理器设计的流行方向。

主处理系统运行嵌入式操作系统,而辅助处理单元则专注某一些的专用领域的处理。

这些系统的应用减少了FPGA作为CPU协处理单元的领域。

因为毕竟FPGA相比ARM等流行嵌入式处理器价格要相对较高。

   在这种情形下,FPGA的厂商似乎也感受到了压力,不约而同推出了带ARM硬核的FPGA,例如ALTERA的 和XILINX的ZYNQ和ALTERA的SOCFPGA。

这是即是互相竞争的需要,也是同众多CPU厂商一掰手腕的杰总。

即使在这两种在趋势下,经典的处理器+FPGA的设计仍然可看做为高性能嵌入式系统的典型配置。

   经典的处理器+FPGA的配置中有多种的架构形式,即多个处理器单元,可能是ARM,MIPS,或者DSP,FPGA也可能是多片的配置,具体架构形式于具体处理的业务相关和目标设备的定位也相关。

因为FPGA作为简单业务流大数据量的处理形态仍然是CPU无可比拟的优势,FPGA内部可以开发大量业务数据并行,从而实现高速的数据处理。

   在实现高速处理方面,CPU的另一个发展趋势是多核,多核处理器也能处理大数据量的业务的并行,例如业界TERILA已推出64核的多核处理器,采用MIPS处理器,通过二维MASH网络连接在一起,形成NOC的结构。

在性能上已经和现有的高速FPGA的处理能力上不相上下。

但是多核处理器的不得不说的问题就是,同一业务流分配到多核处理上后,如需交互,例如访问同一资源,就会造成读写的缓存一致的问题,解决的这一问题的天然思路是加锁,即在变量访问上加自旋锁,但是带来的问题就是处理性能的急剧下降。

而FPGA无论并行处理和同一变量的访问,都可以变成工程师的设计水平的问题,没有原理性的挑战。

    没有一种器件可以满足全人类的众多需求,因此不用担心FPGA没有用武之地。

必定是一系列产品的组合。

下面主要介绍一下FPGA可以作为现今热门场景的几种应用。

(1)网络存储产品,特别是现在的NAS,或者SAN设备上,其存储的时间、接口、安全性等都要求较高,而FPGA无论处理性能还是扩展接口的能力都使其在这一领域大有作为。

现在高端FPGA单片就可以扩展32个或者更多4G或者8G的FC接口。

并且其协议处理相对的固定,也使FPGA在这一领域有大量的可能应用。

(2)高速网络设备,现在高速网络设备10G、40/100G以太网设备领域,同样FPGA也是关键的处理部件。

特别是IPv6的商用化及大数据对于基础设施的高要求,都使这一领域的处理应用会逐渐广泛,这一领域通常是高速网络处理器(NP)+FPGA的典型架构。

(3)4G等通信设备,对于新一代通信基站的信号处理,FPGA+DSP阵列的架构就是绝配。

特别是在专用处理芯片面世之前,这样的架构可以保证新一代通信基础设施的迅速研发和部署。

   没有完美的架构,只有合适的组合,各种芯片和架构都是为应用服务,互相的渗透是趋势,也是必然。

FPGA相对处理器的可编程领域,仍然属于小众(虽然人数也不少)。

但是正像一则笑话所说:

大腿虽然比根命根子粗,但决没有命子重要。

这算开个玩笑。

FPGA的实现为以后的芯片化留下了许多可能和想象空间,从而在应用大量爆发时通过芯片化来大幅降低成本,这这也正是其他可编程器件所不能比拟的。

FPGA和他那些小伙伴们

(二)器件互联

系统架构确定,下一步就是FPGA与各组成器件之间互联的问题了。

通常来说,CPU和FPGA的互联接口,主要取决两个要素:

   

(1)CPU所支持的接口。

   

(2)交互的业务。

     通常来说,FPGA一般支持与CPU连接的数字接口,其常用的有EMIF,PCI,PCI-E,UPP,网口(MII/GMII/RGMII),DDR等接口。

作为总线类接口,FPGA通常作为从设备与CPU连接,CPU作为主设备通过访问直接映射的地址对FPGA进行访问。

根据是否有时钟同步,通常总线访问分为同步或异步的总线,根据CPU外部总线协议有所不同,但数据、地址、控制信号基本是总线访问类型中总线信号所不能省略的。

CPU手册中会对信号定义和时序控制有着详细的说明,FPGA需要根据这些详细说明来实现相应的逻辑。

同时CPU还可以对访问时序进行设置,比如最快时钟,甚至所需的最小建立时间和保持时间,这些一般CPU都可以进行设置,而这些具体参数,不仅影响FPGA的实现,也决定总线访问的速度和效率。

对于同步总线,只需要根据输入时钟进行采样处理即可,但对于异步总线,则需要的对进入的控制信号进行同步化处理,通常处理方式是寄存两拍,去掉毛刺。

因此用于采样的时钟就与CPU所设置的总线参数相关,如采样时钟较低,等控制信号稳定后在译码后输出,一个总线操作周期的时间就会相对较长,其处理的效率也相对较低;假如采样时钟过快,则对关键路径又是一个挑战,因此合理设定采样频率,便于接口的移植并接口的效率是设计的关键点和平衡点。

     对于总线型的访问来说,数据信号通常为三态信号,用于输入和输出。

这种设计的目的是为了减少外部连线的数量。

因为数据信号相对较多一般为8/16/32位数据总线。

总线的访问的优势是直接映射到系统的地址区间,访问较为直观。

但相对传输速率不高,通常在几十到100Mbps以下。

这种原因的造成主要为以下因素

(1)受制总线访问的间隔,总线操作周期等因素,总线访问间隔即两次访问之间总线空闲的时间,而总线操作周期为从发起到相应的时间。

(2)不支持双向传输,并且FPGA需主动发起对CPU操作时,一般只有发起CPU的中断处理一种方式。

这种总线型操作特点,使其可以用作系统的管理操作,例如FPGA内部寄存器配置,运行过程中所需参数配置,以及数据流量较小的信息交互等操作。

这些操作数据量和所需带宽适中,可以应对普通的嵌入式系统的处理需求。

    对于大数据流量的数据交互,一般采用专用的总线交互,其特点是,支持双向传输,总线传输速率较快,例如GMII/RGMII、Upp、专用LVDS接口,及SERDES接口。

专用SERDES接口一般支持的有PCI-E,XAUI,SGMII,SATA,Interlaken接口等接口。

GMII/RGMII,专用LVDS接口一般处理在1GbpS一下的业务形式,而PCI-E,根据其型号不同,支持几Gbps的传输速率。

而XAUI可支持到10Gbps的传输速率,lnterlaken接口可支持到40Gbps的业务传输。

     对于不同所需的业务形式及处理器的类型,则可选择相应的接口形式,来传输具体的业务。

现今主流FPGA中都提供的各种接口的IP。

选择FPGA与各型CPU互联接口,一般选择主流的应用交互方案,特殊的接口缺少支撑IP,导致开发、调试、维护和兼容性的成本都较大,同时注意系统的持续演进的需要,如只在本项目使用一次,而下一项目或开发阶段已摒弃此类接口,则需提前规划技术路线。

毕竟一个稳定、高效的接口互联是一个项目成功的基础。

    不是所有的嵌入式系统都需要“高大上”的接口形式,各类低速的稳定接口也同样在FPGA的接口互联中有着重要的角色,其中UART、SPI、I2C等连接形式也非常的常见。

毕竟,一个优秀的设计不是“高大上”的堆积,而是对需求最小成本的满足。

适合的才是最美的。

灵活性的陷阱

如果说用一个词来描述FPGA的特性,灵活性肯定名列前茅。

    FPGA的灵活性在于:

     

(一)I/O的灵活性,其可以通过其I/O组成各种接口与各种器件连接,并且支持不同的电气特性。

     

(二)内部存储器灵活性,可以通过IP生成工具生成各种深度和宽度的RAM或者FIFO等。

     (三)逻辑的灵活性,内部逻辑通可生成的各种类型IP。

 

     对于I/O接口来说,FPGA的I/O可以支持不同类型的电平和驱动能力,各I/O未定义之前其地位平等,例如一个数据信号可将其约束在任意引脚,只要其电平符合连接的规范。

因此硬件工程师基于这种认识,在PCB布线时,基于布线需要,便调整其布线的顺序,例如互换两个信号的位置。

通常情况上,这种调整是没有任何问题的。

但是随着FPGA的接口IP核硬核化的趋势,逐渐由很多的接口IP不能支持这种调整。

例如对于较早的SDRAM或者DDRSDRAM来说,在xilinx和ALTERA的FPGA上,其数据、地址信号等都是可调的。

但是随着DDR2,DDR3接口的出现,其IP接口,只能支持在某个BANK并且例化结束后直接生成相应的约束文件,而这些的改动将会导致布局布线的错误。

另一些例子则是一些高速SERDES的组合。

例如对于XAUI接口来说,其硬核IP(ALTERA)上就不支持4组SERDES的顺序互换,这将会影响其硬核FCS的编码。

如果板级连接上与PHY的顺序与FPGA例化IP的约束不一致,则其硬核PCS就不能布局布线通过(软核FCS可以支持调整)。

这种灵活性认识导致硬件板级互联的问题可谓屡见不鲜,特别是系统复杂度的上升,板级连线的增加,将会导致设计人员疏忽从而掉入“灵活性的陷阱”。

解决此类问题的方法。

包括

(1)预评估,在设计之前就在FPGA上评估所需的接口的逻辑占用、约束位置、时钟需求等等,预先评估给系统设计提供相应的数据支撑和设计参考。

(2)沟通,对于设计的变更,要进行有效沟通,不能使铁路警察,各管一段。

(3)设计评审,虽然老套,但每个环节上的评审能有效减少掉入类似陷阱的几率。

    对于内部存储资源,大多数FPGA工程师就是拿来就用的状态。

而缺少整体内部memory规划,一般来说,对于单端口、双端口、假双端口,各型芯片手册中都有明确的定义,例如xilinx的SPATAN3系列中最小RAM单元为18K。

一个RAM例化最小单位就是18K。

而新的器件中最小单位一般为9K。

也就是说虽然工程师例化的较小的RAM,例如256*16.只有4K,但是其也占用一个最小单元,根据器件的不同而不同。

而乱用双端口导致RAM资源的过分占用则是更常见的设计问题。

FPGA内部对于单个RAM能够支持的真双端口是有限制的。

举例说明,对于ALTERA的9K的存储单元一般支持512*18的双端口RAM。

但如果是一个256*32的双端口则需要占用2个9K的存储RAM。

也就是说,RAM器件的能力是有限的,这取决于RAM的外部互联线是有限的,以刚才说的256*32的双端口RAM来说,其需要数据线就是64根(双端口),对于单个RAM的连线资源来说,这是FPGA内部逻辑资源难以承受的。

所以根据器件特定,合理规划内部memory资源,才能在最大限度的达到高效的利用。

    FPGA内部可以例化各型IP,基于IP的复用的可以大大增加研发的进度。

但是各种IP的互联之间则需对IP的特性了解清楚,明确IP是否为业务所需的IP。

有的IP和工程所需可能只是名称一致,但其功能却不是你想要的。

例如网口IP在MII连接方式下,是用于FPGA连接PHY的操作。

如果FPGA与CPU通过MII连接,现有的IP则难以满足需求。

这是因为MII连接PHY其所有的时钟都是PHY提供的。

CPU的设计也是与PHY连接,其时钟也有PHY提供。

而如果二者连接,就变成都等着对方提供时钟,则就变成没有时钟。

这种调试问题相对来说容易解决,不过在系统规划是,就需要对整个IP是否能够满足系统的设计要求,有着明确的判断。

   灵活性是FPGA最大的特性,在设计中避开那些灵活性的陷阱,才能从FPGA整体上提升设计能力,而不是做只会写Verilog的码农。

毕竟FPGA设计不是软件设计,其最终要成为变成硬件承载的,每一行语句都要考虑其综合后的电路,才能真正领会FPGA设计的精髓。

从零开始调试FPGA

 “合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。

” 老子《道德经》

 

对于新手来说,如何上手调试FPGA是关键的一步。

对于每一个新设计的FPGA板卡,也需要从零开始调试。

那么如何开始调试?

下面介绍一种简易的调试方法。

(1)至少设定一个输入时钟input sys_clk;

(2)设定输出output[N-1:

0] led;

(3)设定32位计数器reg[31:

0] led_cnt;

(4)时钟驱动计数器开始工作

always@(posedgesys_clk)

led_cnt<=led_cnt+1

(5)输出led信号。

assignled=led_cnt[M:

N];

程序完成。

(6)设定管教约束

如果为XILINX FPGA,在UCF文件中 NET“sys_clk”  LOC =管脚名称

如果为ALTERA FPGA,在QSF文件中,添加 set_location_assignment 管脚名称-to sys_clk

其他管脚,可依次类推。

(7)编译,布局、布线,生成配置文件。

XILINX 生成BIT文件。

ALTERA生成SOF文件

(8)连接JTAG,下载相应的配置文件。

(9)观察是否闪灯(肉眼可见)。

关于闪灯的解释如下:

assign   led=led_cnt[M:

N];  led_cnt为32bit的信号,需要几个闪灯,则根据输入时钟的频率和肉眼能够分辨的时间(100ms)。

如输出时钟为25Mhz。

则闪灯看见的位置能够分批到10hz。

需分频2.5M=32‘h2625A0,因此,则需要输出至少为led_cnt[21]位,才能看到闪灯。

虽然程序简单,但是,通过调试可以确认:

(1)首先可确定JTAG下载器的正确连接,能够正常下载下载文件。

如不能,常见问题包括

(一)检查是否安装驱动。

(二)下载器是否由红灯变成黄灯/绿灯。

如红灯亮一般情况下,JTAG的与电路板VCC没有供电。

(三)检查JTAG连接的线序。

(四)检查JTAG电路,检查原理图上TMS,TDI,TDO的上拉和下拉电阻是否与datasheet中一致。

通过以上四种方式,可排除绝大部分JTAG下载的错误。

(2)可以判断晶振是否起振,下载后无灯闪。

(一)首先,示波器查看晶振频率,观察晶振的输出,如无输出,查看晶振的电源和地信号,如电源正常,而晶振无反应,则更换晶振。

(二)如无示波器,也有替代的方法,通过嵌入式逻辑分析仪抓信号(任意信号)。

如逻辑分析仪点击采样后无反应,则无时钟输入。

这是因为逻辑分析仪也需要时钟进行逻辑值的存储。

(3)如正常下载后闪灯,证明该FPGA板卡硬件设计上能够达到最低限度的FPGA调试状态。

最后,说明一下,为什么是闪灯而不是亮灯的程序,这是因为,首先闪灯可以判断外部晶振工作正常,并且由于LED等通常为上拉,也就是说逻辑值0表示灯亮,而也不排除某硬件工程师非要下拉。

逻辑1表示亮。

因此采用闪灯更加方便。

问题:

为什么LED灯值为什么要上拉?

这是因为:

LED上拉后,需要灯亮时电流由外部电源提供,而下拉,灯亮时电流由芯片的CMOS电路驱动。

这种在设计中应避免。

架构设计漫谈

(一)流驱动和调用式

勿用讳言,现在国内FPGA开发还处于小作坊的开发阶段,一般都是三、四个人,七八台机器.小作坊如何也能做出大成果。

这是每个FPGA工程师都要面临的问题。

架构设计是面临的第一关。

经常有这样的项目,需求分析,架构设计匆匆忙忙,号称一两个月开发完毕,实际上维护项目就花了一年半时间。

主要包括几个问题,一,性能不满足需求。

二,设计频繁变更。

三,系统不稳定,调试问题不收敛。

    磨刀不误砍柴工,FPGA设计的需求分析是整个设计第一步。

如何将系统的功能需求,转换成FPGA的设计需求,是FPGA架构设计的首要问题。

首先,需要明确划分软件和硬件的边界。

软件主要处理输入输出、界面显示、系统管理、设备维护。

而FPGA则负责大数据流的处理。

     如果使用几百元FPGA实现了一个十几元单片机就能完成的功能,就算实现的非常完美,那么这是一个什么样的神设计?

任何一个项目都要考虑成本,研发成本、物料成本、维护成本等等。

FPGA的使用位置必定是其他器件难以企及的优势。

    因此对于一个FPGA架构设计,其首先需要考虑就是性能,如没有性能的需求,其他的处理器ARM就可能替代其功能。

其次就是接口,用于处理器扩展其没有的接口,作为高速接口转换。

最后,需要考虑就是可维护性,FPGA的调试是非常耗时的,一个大型的FPGA的编译时间在几小时甚至更高(通过嵌入式分析仪抓信号,每天工作8小时,只能分析两到三次)。

而软件调试只需make,编译时间以秒来记(这个问题可以通过提升编译服务器性能改善而不能消失,本质上要考虑可测性设计)。

如果不考虑维护性和可测性,调试成本和压力就非常之大。

     通常,FPGA的大部分架构设计可以采用数据流驱动的方式来实现,例子1,假设一个实现视频解压缩FPGA的设计,输入是无线接口,输出为显示屏。

那么输入输出的接口基本就能确定。

以数据流为驱动可以粗略划分,输入接口->解压缩模块->视频转换模块->显示接口。

如需要视频缓冲,则确定是否需要连接外部存储器。

那就需要确认在什么位置进行数据的缓冲。

通过要支持显示的画面的质量,就能确认最大码流,同样可以计算视频解压模块和转换模块的计算能力,从而导出所需的内部总线宽度,系统频率,以及子模块个数等等。

例子2,某支持通过有线电视网上网电视IP网关,同样也是输入的普通IP网络,输出为有线调试网的调试解调器。

将IP报文等长填充后,在固定时隙内送入有线电视网中,同样也是基于数据流驱动的方式。

    数据流驱动式架构,可以作为FPGA设计中一个最重要的架构。

通常来说应用于IP领域、存储领域、数字处理领域等较大型FPGA设计都是数据流驱动式架构,主要包括输入接口单元,主处理单元,输出接口单元。

还可能包括,辅助处理单元、外部存储单元。

这些单元之间一般采用流水式处理,即处理完毕后,数据打包发完下一级处理。

其中输入输出可能有多个,此时还需要架构内部实现数据的交换。

    另一种较为常用的架构方式为调用式架构,即一般FPGA通过标准接口如PCI、PCI-E,CPCI,PCI-X,EMIF等等。

各种接口,FPGA内部实现某一加速单元,如视频加速,数据处理,格式转换等操作。

这种结构基本基本围绕FPGA接口、加速单元展开,属于数据的反馈类型,即处理完数据又反馈回接口模块。

    其他虽然各型各样,如SOPC,如各型接口,但本质上其都是为上述架构服务的,或做配置管理替代外部CPU,或在数据流中间传递中间参数。

或在内部实现CPU+协处理器的架构,因此说,无他变化。

    孙子兵法云:

“兵无常势,水无常形”。

但是对于一种设计技术来说,没有一种固定演进的架构和设计,那么项目的整个设计层次总是推到重来,从本质上说,就是一种低水平重复。

如果总结规律,提炼共性,才能在提升设计层次,在小作坊中取得大成果。

架构设计漫谈

(二)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2