FPGA設計的四種常用思想與技巧桌球操作

2022-02-26 15:21:23 字數 5210 閱讀 4430

王誠本文討論的四種常用fpga/cpld設計思想與技巧:桌球操作、串並轉換、流水線操作、資料介面同步化,都是fpga/cpld邏輯設計的內在規律的體現,合理地採用這些設計思想能在fpga/cpld設計工作種取得事半功倍的效果。

fpga/cpld的設計思想與技巧是乙個非常大的話題,由於篇幅所限,本文僅介紹一些常用的設計思想與技巧,包括桌球操作、串並轉換、流水線操作和資料介面的同步方法。希望本文能引起工程師們的注意,如果能有意識地利用這些原則指導日後的設計工作,將

取得事半功倍的效果!

桌球操作

「桌球操作」是乙個常常應用於資料流控制的處理技巧,典型的桌球操作方法如圖1所示。

桌球操作的處理流程為:輸入資料流通過「輸入資料選擇單元」將資料流等時分配到兩個資料緩衝區,資料緩衝模組可以為任何儲存模組,比較常用的儲存單元為雙口

單口等。在第乙個緩衝週期,將輸入的資料流快取到「資料緩衝模組1」;在第2個緩衝週期,通過「輸入資料選擇單元」的切換,將輸入的資料流快取到「資料緩衝模組2」,同時將「資料緩衝模組1」快取的第1個週期資料通過「輸入資料選擇單元」的選擇,送到「資料流運算處理模組」進行運算處理;在第3個緩衝週期通過「輸入資料選擇單元」的再次切換,將輸入的資料流快取到「資料緩衝模組1」,同時將「資料緩衝模組2」快取的第2個週期的資料通過「輸入資料選擇單元」切換,送到「資料流運算處理模組」進行運算處理。如此迴圈。

桌球操作的最大特點是通過「輸入資料選擇單元」和「輸出資料選擇單元」按節拍、相互配合的切換,將經過緩衝的資料流沒有停頓地送到「資料流運算處理模組」進行運算與處理。把桌球操作模組當做乙個整體,站在這個模組的兩端看資料,輸入資料流和輸出資料流都是連續不斷的,沒有任何停頓,因此非常適合對資料流進行流水線式處理。所以桌球操作常常應用於流水線式演算法,完成資料的無縫緩衝與處理。

桌球操作的第二個優點是可以節約緩衝區空間。比如在wcdma基帶應用中,1個幀是由15

個時隙組成的,有時需要將1整幀的資料延時乙個時隙後處理,比較直接的辦法是將這幀資料快取起來,然後延時1個時隙進行處理。這時緩衝區的長度是1整幀資料長,假設資料速率是幀長10ms,則此時需要緩衝區長度是38400位。如果採用桌球操作,只

需定義兩個能緩衝1個時隙資料的ram(單口ram即可)。當向一塊ram寫資料的時候,從另

一塊ram讀資料,然後送到處理單元處理,此時每塊ram的容量僅需2560位即可,

2塊ram加起來也只有5120位的容量。

另外,巧妙運用桌球操作還可以達到用低速模組處理高速資料流的效果。如圖2

所示,資料緩衝模組採用了雙口ram,並在dpram後引入了一級資料預處理模組,這個資料預處理可以根據需要的各種資料運算,比如在wcdma設計中,對輸入資料流的解擴、解擾、去旋轉等。假設埠a的輸入資料流的速率為100mbps,桌球操作的緩衝週期是10ms。以下分析各個節點埠的資料速率。

a埠處輸入資料流速率為100mbps,在第1個緩衝週期10ms內,通過「輸入資料選擇單元」,從b1到達dpram1。b1的資料速率也是要在10ms內寫入1mb資料。同理,在第2個10ms,資料流被切換到dpram2,埠b2的資料速率也是在第2個10ms被寫入1mb資料。

在第3個10ms,資料流又切換到被寫入1mb資料。

仔細分析就會發現到第3個緩衝週期時,留給dpram1讀取資料並送到「資料預處理模組1」的時間一共是20ms。有的工程師困惑於dpram1的讀數時間為什麼是20ms,這個時間是這樣得來的:首先,在在第2個緩衝週期向dpram2寫資料的10ms內,dpram1可以進行讀操作;另外,在第1個緩衝週期的第5ms起(絕對時間為5ms時刻),dpram1就可以一邊向500k以後的位址寫資料,一邊從位址0讀數,到達10ms時,dpram1剛好寫完了1mb資料,並且讀了500k資料,這個緩衝時間內dpram1讀了5ms;在第3個緩衝週期的第5ms起(絕對時間為35ms時刻),同理可以一邊向500k以後的位址寫資料一邊從位址0讀數,又讀取了5個ms,所以截止dpram1第乙個週期存入的資料被完全覆蓋以前,dpram1最多可以讀取20ms時間,而所需讀取的資料為1mb,所以埠c1的資料速率為因此,「資料預處理模組1」的最低資料吞吐能力也僅僅要求為50mbps。

同理,「資料預處理模組2」的最低資料吞吐能力也僅僅要求為50mbps。換言之,通過桌球操作,「資料預處理模組」的時序壓力減輕了,所要求的資料處理速率僅僅為輸入資料速率的1/2。

通過桌球操作實現低速模組處理高速資料的實質是:通過dpram這種快取單元實現了資料流的串並轉換,並行用「資料預處理模組1」和「資料預處理模組2」處理分流的資料,是面積與速度互換原則的體現!

串並轉換設計技巧

串並轉換是fpga設計的乙個重要技巧,它是資料流處理的常用手段,也是面積與速度互換思想的直接體現。串並轉換的實現方法多種多樣,根據資料的排序和數量的要求,可以選用暫存器、ram等實現。前面在桌球操作的圖例中,就是通過dpram實現了資料流的串並轉換,而且由於使用了dpram,資料的緩衝區可以開得很大,對於數量比較小的設計可以採用暫存器完成串並轉換。

如無特殊需求,應該用同步時序設計完成串並之間的轉換。比如資料從串

行到並行,資料排列順序是高位在前,可以用下面的編碼實現:

其中,prl_temp是並行輸出快取暫存器,srl_in是序列資料輸入。對於排列順序有規定的串並轉換,可以用case語句判斷實現。對於複雜的串並轉換,還可以用狀態機實現。

串並轉換的方法比較簡單,在此不必贅述。

流水線操作設計思想

首先需要宣告的是,這裡所講述的流水線是指一種處理流程和順序操作的設計思想,並非fpga、asic設計中優化時序所用的

流水線處理是高速設計中的乙個常用設計手段。如果某個設計的處理流程分為若干步驟,而且整個資料處理是「單流向」的,即沒有反饋或者迭代運算,前乙個步驟的輸出是下乙個步驟的輸入,則可以考慮採用流水線設計方法來提高系統的工作頻率。

流水線設計的結構示意圖如圖3所示。其基本結構為:將適當劃分的n個操作步驟單流向串聯起來。

流水線操作的最大特點和要求是,資料流在各個步驟的處理從時間上看是連續的,如果將每個操作步驟簡化假設為通過乙個d觸發器(就是用暫存器打乙個節拍),那麼流水線操作就類似乙個移位暫存器組,資料流依次流經d觸發器,完成每個步驟的操作。流水線設計時序如圖4所示。

流水線設計的乙個關鍵在於整個設計時序的合理安排,要求每個操作步驟的劃分合理。如果前級操作時間恰好等於后級的操作時間,設計最為簡單,前級的輸出直接匯入后級的輸入即可;如果前級操作時間大於后級的操作時間,則需要對前級的輸出資料適當快取才能匯入到后級輸入端;如果前級操作時間恰好小於后級的操作時間,則必須通過複製邏輯,將資料流分流,或者在前級對資料採用儲存、後處理方式,否則會造成后級資料溢位。

在wcdma設計中經常使用到流水線處理的方法,如rake接收機、搜尋器、前導捕獲等。流水線處理方式之所以頻率較高,是因為複製了處理模組,它是面積換取速度思想的又一種具體體現。

資料介面的同步方法

資料介面的同步是fpga/cpld設計的乙個常見問題,也是乙個重點和難點,很多設計不穩定都是源於資料介面的同步有問題。

在電路圖設計階段,一些工程師手工加入buft或者非門調整資料延遲,從而保證本級模組的時鐘對上級模組資料的建立、保持時間要求。還有一些工程師為了有穩定的取樣,生成了很多相差90度的時鐘訊號,時而用正沿打一下資料,時而用負沿打一下資料,用以調整資料的取樣位置。這兩種做法都十分不可取,因為一旦晶元更新換代或者移植到其它晶元組的晶元上,取樣實現必須從新設計。

而且,這兩種做法造成電路實現的餘量不夠,一旦外界條件變換(比如溫度公升高),取樣時序就有可能完全紊亂,造成電路癱瘓。

下面簡單介紹幾種不同情況下資料介面的同步方法:

1. 輸入、輸出的延時(晶元間、pcb佈線、一些驅動介面元件的延時等)不可測,或者有可能變動的條件下,如何完成資料同步?

對於資料的延遲不可測或變動,就需要建立同步機制,可以用乙個同步使能或同步

指示訊號。另外,使資料通過ram或者fifo的訪問,也可以達到資料同步目的。

把資料存放在ram或fifo的方法如下:將上級晶元提供的資料隨路時鐘作為寫訊號,

將資料寫入ram或者fifo,然後使用本級的取樣時鐘(一般是資料處理的主時鐘)將資料讀出來即可。這種做法的關鍵是資料寫入ram或者fifo要可靠,如果使用同步ram或者fifo,就要求應該有乙個與資料相對延遲關係固定的隨路指示訊號,這個訊號可以是資料的有效指示,也可以是上級模組將資料打出來的時鐘。對於慢速資料,也可以取樣非同步ram或者fifo,但是不推薦這種做法。

資料是有固定格式安排的,很多重要資訊在資料的起始位置,這種情況在通訊系統中非常普遍。通訊系統中,很多資料是按照「幀」組織的。而由於整個系統對時鐘要求很高,常常專門設計一塊時鐘板完成高精度時鐘的產生與驅動。

而資料又是有起始位置的,如何完成資料的同步,並發現資料的「頭」呢?

資料的同步方法完全可以採用上面的方法,採用同步指示訊號,或者使用ram、fifo快取一下。找到資料頭的方法有兩種,第一種很簡單,隨路傳輸乙個資料起始位置的指示訊號即可,對於有些系統,特別是非同步系統,則常常在資料中插入一段同步碼(比如訓練序列),接收端通過狀態機檢測到同步碼後就能發現資料的「頭」了,這種做法叫做「盲檢測」。

上級資料和本級時鐘是非同步的,也就是說上級晶元或模組和本級晶元或模組的時鐘是非同步時鐘域的。

前面在輸入資料同步化中已經簡單介紹了乙個原則:如果輸入資料的節拍和本級晶元的處理時鐘同頻,可以直接用本級晶元的主時鐘對輸入資料暫存器取樣,完成輸入資料的同步化;如果輸入資料和本級晶元的處理時鐘是非同步的,特別是頻率不匹配的時候,則只有用處理時鐘對輸入資料做兩次暫存器取樣,才能完成輸入資料的同步化。需要說明的是,用暫存器對非同步時鐘域的資料進行兩次取樣,其作用是有效防止亞穩態(資料狀態不穩定)的傳播,使后級電路處理的資料都是有效電平。

但是這種做法並不能保證兩級暫存器取樣後的資料是正確的電平,這種方式處理一般都會產生一定數量的錯誤電平資料。所以僅僅適用於對少量錯誤不敏感的功能單元。

為了避免非同步時鐘域產生錯誤的取樣電平,一般使用ram、fifo快取的方法完成非同步時鐘域的資料轉換。最常用的快取單元是dpram,在輸入埠使用上級時鐘寫資料,在輸出埠使用本級時鐘讀資料,這樣就非常方便的完成了非同步時鐘域之間的資料交換。

2. 設計資料介面同步是否需要新增約束?

建議最好新增適當的約束,特別是對於高速設計,一定要對週期、建立、保持時間等新增相應的約束。

這裡附加約束的作用有兩點:

a. 提高設計的工作頻率,滿足介面資料同步要求。通過附加週期、建立時間、保持時間等約束可以控制邏輯的綜合、對映、布局和佈線,以減小邏輯和佈線延時,從而提高工作頻率,滿足介面資料同步要求。

b. 獲得正確的時序分析報告。幾乎所有的fpga設計平台都包含靜態時序分析工具,利用這類工具可以獲得對映或布局佈線後的時序分析報告,從而對設計的效能做出評估。靜態時序分析工具以約束作為判斷時序是否滿足設計要求的標準,因此要求設計者正確輸入約束,以便靜態時序分析工具輸出正確的時序分析報告。

xilinx和資料介面相關的常用約束有和等;altera與資料介面相關的常用約束有等。

HR經理的四種常用面試技法

一覽無錫人才網 一 聊 面試官聊與招聘職位相關的內容,聊三分鐘。為什麼面試官要採用聊的形式呢?應聘者沒有正式錄用之前,和面試官沒有隸屬關係,是相互選擇的對等關係,不是誰求誰的關係。聊,不同於講,聊是兩個人或少數幾個人之間的非正式交流,聊是在小範圍內輕鬆氣氛中進行的,聊顯得非常自然,讓應聘者放鬆後發揮...

HR經理的四種常用面試技法

當應聘者作三分鐘的陳述演講時,面試官應認真聽講,並不時給予微笑式的鼓勵和肯定,切記不要輕易地打斷應聘者的陳述。如果面試官考慮到通過打斷應聘者的陳述來考察應聘者受挫後的應變能力,也不是不可,但此時的打斷效果不好,一是應聘者陳述的主題思路會丟失 二是延長面試時間,進而影響到後面其他面試的人,造成整體面試...

面試官的四種常用招聘技巧

當應聘者作三分鐘的陳述演講時,面試官應認真聽講,並不時給予微笑式的鼓勵和肯定,切記不要輕易地打斷應聘者的陳述。如果面試官考慮到通過打斷應聘者的陳述來考察應聘者受挫後的應變能力,也不是不可,但此時的打斷效果不好,一是應聘者陳述的主題思路會丟失 二是延長面試時間,進而影響到後面其他面試的人,造成整體面試...