FPGA研發(fā)之道(6)架構(gòu)設(shè)計(jì)漫談(一)流驅(qū)動(dòng)和調(diào)用式
勿用諱言,現(xiàn)在國(guó)內(nèi)FPGA開(kāi)發(fā)還處于小作坊的開(kāi)發(fā)階段,一般都是三、四個(gè)人,七八臺(tái)機(jī)器.小作坊如何也能做出大成果。這是每個(gè)FPGA工程師都要面臨的問(wèn)題。架構(gòu)設(shè)計(jì)是面臨的第一關(guān)。經(jīng)常有這樣的項(xiàng)目,需求分析,架構(gòu)設(shè)計(jì)匆匆忙忙,號(hào)稱一兩個(gè)月開(kāi)發(fā)完畢,實(shí)際上維護(hù)項(xiàng)目就花了一年半時(shí)間。主要包括幾個(gè)問(wèn)題,一,性能不滿足需求。二,設(shè)計(jì)頻繁變更。三,系統(tǒng)不穩(wěn)定,調(diào)試問(wèn)題不收斂。
本文引用地址:http://2s4d.com/article/264349.htm磨刀不誤砍柴工,FPGA設(shè)計(jì)的需求分析是整個(gè)設(shè)計(jì)第一步。如何將系統(tǒng)的功能需求,轉(zhuǎn)換成FPGA的設(shè)計(jì)需求,是FPGA架構(gòu)設(shè)計(jì)的首要問(wèn)題。首先, 需要明確劃分軟件和硬件的邊界。軟件主要處理輸入輸出、界面顯示、系統(tǒng)管理、設(shè)備維護(hù)。而FPGA則負(fù)責(zé)大數(shù)據(jù)流的處理。
如果使用幾百元FPGA實(shí)現(xiàn)了一個(gè)十幾元單片機(jī)就能完成的功能,就算實(shí)現(xiàn)的非常完美,那么這是一個(gè)什么樣的神設(shè)計(jì)?任何一個(gè)項(xiàng)目都要考慮成本,研發(fā)成本、物料成本、維護(hù)成本等等。FPGA的使用位置必定是其他器件難以企及的優(yōu)勢(shì)。
因此對(duì)于一個(gè)FPGA架構(gòu)設(shè)計(jì),其首先需要考慮就是性能,如沒(méi)有性能的需求,其他的處理器ARM就可能替代其功能。其次就是接口,用于處理器擴(kuò)展其沒(méi)有的接口,作為高速接口轉(zhuǎn)換。最后,需要考慮就是可維護(hù)性,F(xiàn)PGA的調(diào)試是非常耗時(shí)的,一個(gè)大型的FPGA的編譯時(shí)間在幾小時(shí)甚至更高(通過(guò)嵌入式分析儀抓信號(hào),每天工作8小時(shí),只能分析兩到三次)。而軟件調(diào)試只需make,編譯時(shí)間以秒來(lái)記(這個(gè)問(wèn)題可以通過(guò)提升編譯服務(wù)器性能改善而不能消失,本質(zhì)上要考慮可測(cè)性設(shè)計(jì))。如果不考慮維護(hù)性和可測(cè)性,調(diào)試成本和壓力就非常之大。
通常,F(xiàn)PGA的大部分架構(gòu)設(shè)計(jì)可以采用數(shù)據(jù)流驅(qū)動(dòng)的方式來(lái)實(shí)現(xiàn),例子1,假設(shè)一個(gè)實(shí)現(xiàn)視頻解壓縮FPGA的設(shè)計(jì),輸入是無(wú)線接口,輸出為顯示屏。那么輸入輸出的接口基本就能確定。以數(shù)據(jù)流為驅(qū)動(dòng)可以粗略劃分,輸入接口->解壓縮模塊->視頻轉(zhuǎn)換模塊->顯示接口。如需要視頻緩沖,則確定是否需要連接外部存儲(chǔ)器。那就需要確認(rèn)在什么位置進(jìn)行數(shù)據(jù)的緩沖。通過(guò)要支持顯示的畫(huà)面的質(zhì)量,就能確認(rèn)最大碼流,同樣可以計(jì)算視頻解壓模塊和轉(zhuǎn)換模塊的計(jì)算能力,從而導(dǎo)出所需的內(nèi)部總線寬度,系統(tǒng)頻率,以及子模塊個(gè)數(shù)等等。例子2,某支持通過(guò)有線電視網(wǎng)上網(wǎng)電視IP網(wǎng)關(guān),同樣也是輸入的普通IP網(wǎng)絡(luò),輸出為有線調(diào)試網(wǎng)的調(diào)試解調(diào)器。將IP報(bào)文等長(zhǎng)填充后,在固定時(shí)隙內(nèi)送入有線電視網(wǎng)中,同樣也是基于數(shù)據(jù)流驅(qū)動(dòng)的方式。
數(shù)據(jù)流驅(qū)動(dòng)式架構(gòu),可以作為FPGA設(shè)計(jì)中一個(gè)最重要的架構(gòu)。通常來(lái)說(shuō)應(yīng)用于IP領(lǐng)域、存儲(chǔ)領(lǐng)域、數(shù)字處理領(lǐng)域等較大型FPGA設(shè)計(jì)都是數(shù)據(jù)流驅(qū)動(dòng)式架構(gòu),主要包括輸入接口單元,主處理單元,輸出接口單元。還可能包括,輔助處理單元、外部存儲(chǔ)單元。這些單元之間一般采用流水式處理,即處理完畢后,數(shù)據(jù)打包發(fā)完下一級(jí)處理。其中輸入輸出可能有多個(gè),此時(shí)還需要架構(gòu)內(nèi)部實(shí)現(xiàn)數(shù)據(jù)的交換。
另一種較為常用的架構(gòu)方式為調(diào)用式架構(gòu),即一般FPGA通過(guò)標(biāo)準(zhǔn)接口如PCI、PCI-E,CPCI,PCI-X,EMIF等等。各種接口,F(xiàn)PGA內(nèi)部實(shí)現(xiàn)某一加速單元,如視頻加速,數(shù)據(jù)處理,格式轉(zhuǎn)換等操作。這種結(jié)構(gòu)基本基本圍繞FPGA接口、加速單元展開(kāi),屬于數(shù)據(jù)的反饋類型,即處理完數(shù)據(jù)又反饋回接口模塊。
其他雖然各型各樣,如SOPC,如各型接口,但本質(zhì)上其都是為上述架構(gòu)服務(wù)的,或做配置管理替代外部CPU,或在數(shù)據(jù)流中間傳遞中間參數(shù)?;蛟趦?nèi)部實(shí)現(xiàn)CPU+協(xié)處理器的架構(gòu),因此說(shuō),無(wú)他變化。
孫子兵法云:“兵無(wú)常勢(shì),水無(wú)常形”。但是對(duì)于一種設(shè)計(jì)技術(shù)來(lái)說(shuō),沒(méi)有一種固定演進(jìn)的架構(gòu)和設(shè)計(jì),那么項(xiàng)目的整個(gè)設(shè)計(jì)層次總是推到重來(lái),從本質(zhì)上說(shuō),就是一種低水平重復(fù)。如果總結(jié)規(guī)律,提煉共性,才能在提升設(shè)計(jì)層次,在小作坊中取得大成果。
fpga相關(guān)文章:fpga是什么
汽車(chē)防盜機(jī)相關(guān)文章:汽車(chē)防盜機(jī)原理 頻譜分析儀相關(guān)文章:頻譜分析儀原理
評(píng)論