本文敘述概括了FPGA應(yīng)用設(shè)計中的要點,包括,時鐘樹、FSM、latch、邏輯仿真四個部分。
FPGA的用處比我們平時想象的用處更廣泛,原因在于其中集成的模塊種類更多,而不僅僅是原來的簡單邏輯單元(LE)。早期的FPGA相對比較簡單,所有的功能單元僅僅由管腳、內(nèi)部buffer、LE、RAM構(gòu)建而成,LE由LUT(查找表)和D觸發(fā)器構(gòu)成,RAM也往往容量非常小。現(xiàn)在的FPGA不僅包含以前的LE,RAM也更大更快更靈活,管教IOB也更加的復(fù)雜,支持的IO類型也更多,而且內(nèi)部還集成了一些特殊功能單元,包括:
DSP:實際上就是乘加器,F(xiàn)PGA內(nèi)部可以集成多個乘加器,而一般的DSP芯片往往每個core只有一個。換言之,F(xiàn)PGA可以更容易實現(xiàn)多個DSP core功能。在某些需要大量乘加計算的場合,往往多個乘加器并行工作的速度可以遠遠超過一個高速乘加器。
SERDES:高速串行接口。將來PCI-E、XAUI、HT、S-ATA等高速串行接口會越來越多。有了SERDES模塊,F(xiàn)PGA可以很容易將這些高速串行接口集成進來,無需再購買專門的接口芯片。
CPU core:分為2種,軟core和硬core。軟core是用邏輯代碼寫的CPU模塊,可以在任何資源足夠的FPGA中實現(xiàn),使用非常靈活。而且在大容量的FPGA中還可以集成多個軟core,實現(xiàn)多核并行處理。硬core是在特定的FPGA內(nèi)部做好的CPU core,優(yōu)點是速度快、性能好,缺點是不夠靈活。
不過,F(xiàn)PGA還是有缺點。對于某些高主頻的應(yīng)用,F(xiàn)PGA就無能為力了?,F(xiàn)在雖然理論上FPGA可以支持的500MHz,但在實際設(shè)計中,往往200MHz以上工作頻率就很難實現(xiàn)了。
FPGA設(shè)計要點之一:時鐘樹
對于FPGA來說,要盡可能避免異步設(shè)計,盡可能采用同步設(shè)計。同步設(shè)計的第一個關(guān)鍵,也是關(guān)鍵中的關(guān)鍵,就是時鐘樹。一個糟糕的時鐘樹,對FPGA設(shè)計來說,是一場無法彌補的災(zāi)難,是一個沒有打好地基的大樓,崩潰是必然的。
具體一些的設(shè)計細則:
1)盡可能采用單一時鐘;
2)如果有多個時鐘域,一定要仔細劃分,千萬小心;
3)跨時鐘域的信號一定要做同步處理。對于控制信號,可以采用雙采樣;對于數(shù)據(jù)信號,可以采用異步fifo。需要注意的是,異步fifo不是萬能的,一個異步fifo也只能解決一定范圍內(nèi)的頻差問題。
4)盡可能將FPGA內(nèi)部的PLL、DLL利用起來,這會給你的設(shè)計帶來大量的好處。
5)對于特殊的IO接口,需要仔細計算Tsu、Tco、Th,并利用PLL、DLL、DDIO、管腳可設(shè)置的delay等多種工具來實現(xiàn)。簡單對管腳進行Tsu、Tco、Th的約束往往是不行的。
可能說的不是很確切。這里的時鐘樹實際上泛指時鐘方案,主要是時鐘域和PLL等的規(guī)劃,一般情況下不牽扯到走線時延的詳細計算(一般都走全局時鐘網(wǎng)絡(luò)和局部時鐘網(wǎng)絡(luò),時延固定),和ASIC中的時鐘樹不一樣。對于ASIC,就必須對時鐘網(wǎng)絡(luò)的設(shè)計、布線、時延計算進行仔細的分析計算才行。
FPGA設(shè)計要點之二:FSM
FSM:有限狀態(tài)機。這個可以說時邏輯設(shè)計的基礎(chǔ)。幾乎稍微大一點的邏輯設(shè)計,幾乎都能看得到FSM。FSM分為moore型和merly型,moore型的狀態(tài)遷移和變量無關(guān),merly型則有關(guān)。實際使用中大部分都采用merly型。
FSM通常有2種寫法:單進程、雙進程。
初學(xué)者往往喜歡單進程寫法,格式如下:
always @( posedge clk or posedge rst )
begin
if ( rst == 1‘b1 )
FSM_status <= 。。.。。.;
else
case ( FSM_status )
。。.。。.;
endcase
end
簡單的說,單進程FSM就是把所有的同步、異步處理都放入一個always中。
FPGA設(shè)計要點之三:latch
首先回答一下:
1)stateCAD沒有用過,不過我感覺用這個東東在構(gòu)建大的系統(tǒng)的時候似乎不是很方便。也許用system C或者system Verilog更好一些。
2)同步、異步的叫法是我所在公司的習(xí)慣叫法,不太對,不過已經(jīng)習(xí)慣了,呵呵。
這次講一下latch。latch的危害已經(jīng)說過了,這里不再多說,關(guān)鍵講一下如何避免。
1)在組合邏輯進程中,if語句一定要有else!并且所有的信號都要在if的所有分支中被賦值。
always @( * ) begin
if ( sig_a == 1‘b1 ) sig_b = sig_c;
end
這個是絕對會產(chǎn)生latch的。
正確的應(yīng)該是
always @( * ) begin
if ( sig_a == 1’b1 ) sig_b = sig_c;
else sig_b = sig_d;
end
另外需要注意,下面也會產(chǎn)生latch。也就是說在組合邏輯進程中不能出現(xiàn)自己賦值給自己或者間接出現(xiàn)自己賦值給自己的情況。
always @( * ) begin
if ( rst == 1‘b1 ) counter = 32’h00000000;
else counter = counter + 1;
end
但如果是時序邏輯進程,則不存在該問題。
2)case語句的default一定不能少!
原因和if語句相同,這里不再多說了。
需要提醒的是,在時序邏輯進程中,default語句也一定要加上,這是一個很好的習(xí)慣。
3)組合邏輯進程敏感變量不能少也不能多。
這個問題倒不是太大,verilog2001語法中可以直接用 * 搞定了。順便提一句,latch有弊就一定有利。在FPGA的LE中,總存在一個latch和一個D觸發(fā)器,在支持DDR的IOE(IOB)中也存在著一個latch來實現(xiàn)DDIO。不過在我們平時的設(shè)計中,對latch還是要盡可能的敬而遠之。
FPGA設(shè)計要點之四:邏輯仿真
仿真是FPGA設(shè)計中必不可少的一步。沒有仿真,就沒有一切。仿真是一個單調(diào)而繁瑣的工作,很容易讓人產(chǎn)生放棄或者偷工減料的念頭。這時一定要挺?。》抡娣譃閱卧抡?、集成仿真、系統(tǒng)仿真。
單元仿真:針對每一個最小基本模塊的仿真。單元仿真要求代碼行覆蓋率、條件分支覆蓋率、表達式覆蓋率必須達到100%!這三種覆蓋率都可以通過MODELSIM來查看,不過需要在編譯該模塊時要在Compile option中設(shè)置好。
集成仿真:將多個大模塊合在一起進行仿真。覆蓋率要求盡量高。
系統(tǒng)仿真:將整個硬件系統(tǒng)合在一起進行仿真。此時整個仿真平臺包含了邏輯周邊芯片接口的仿真模型,以及BFM、Testbench等。系統(tǒng)仿真需要根據(jù)被仿真邏輯的功能、性能需求仔細設(shè)計仿真測試例和仿真測試平臺。系統(tǒng)仿真是邏輯設(shè)計的一個大分支,是一門需要專門學(xué)習(xí)的學(xué)科。
Xilinx針對平板顯示器LED背光的FPGA解決方案
1.概述
Kintex-7 FPGA 和 Artix-7 提供的功能使得平板顯示器制造商能夠提高圖像質(zhì)量、降低功耗和削減成本。
2.方案特性
為 LED 背光控制器實現(xiàn)了復(fù)雜的局部調(diào)光和照明補償算法。
生產(chǎn)具有不同的 LED 區(qū)域數(shù)量和 LED 布局的直接型照明顯示器,同時調(diào)整照明以便與不同供應(yīng)商生產(chǎn)的面板的物理特性相匹配。
為顯示器添加 3D 功能。
與利用上一代 FPGA 實現(xiàn)的設(shè)計相比,其系統(tǒng) FPGA 功耗降低了32%
與利用上一代 FPGA 實現(xiàn)的設(shè)計相比,其系統(tǒng) FPGA 成本削減了30%
利用 Artix-7 FPGA 實現(xiàn)的設(shè)計將 LED 背光控制器的功耗降低 63%
靈活的并行/串行接口技術(shù)利用 PCI Express、USB 2.0、DisplayPort 和 V-by-One 技術(shù)實現(xiàn)了芯片-芯片和板-板通信
3.75Gbps V-by-One@HS 的 16 或 32 信道 (per Thine’s spec)
5.4Gbps DisplayPort 1.2 的多端口 (per VESA spec)
1,866Mbps DDR3 存儲器接口實現(xiàn)了基于商用存儲器的視頻數(shù)據(jù)緩沖器
1.6Gbps LVDS I/O 降低了并行接口內(nèi)的跡線數(shù)量
芯片級封裝實現(xiàn)了基于4層 PCB 的低成本生產(chǎn)
方案框圖:
3.業(yè)界領(lǐng)先的系統(tǒng)解決方案
KintexR-7 FPGA 能夠提供高信號處理能力和低功耗,從而滿足各種應(yīng)用需求,包括:
1)LED 背光平板顯示器和 3DTV
2)LTE 基帶
3)攜帯型超音波裝置
4)多模射頻
5)高端消費類數(shù)碼單反相機
6)Video-over-IP 網(wǎng)關(guān)
相關(guān)芯片介紹:賽靈思Kintex-7 FPGA 系列芯片簡介
基于京微雅格低功耗FPGA的8b/10b SERDES的接口設(shè)計
串行接口常用于芯片至芯片和電路板至電路板之間的數(shù)據(jù)傳輸。隨著系統(tǒng)帶寬不斷增加至多吉比特范圍,并行接口已經(jīng)被高速串行鏈接,或SERDES (串化器/ 解串器)所取代。起初, SERDES 是獨立的ASSP 或ASIC 器件。在過去幾年中已經(jīng)看到有內(nèi)置SERDES 的FPGA 器件系列,但多見于高端FPGA芯片中,而且價格昂貴。
本方案是以CME最新的低功耗系列FPGA的HR03為平臺,實現(xiàn) 8/10b的SerDes接口,包括SERDES收發(fā)單元,通過完全數(shù)字化的方法實現(xiàn)SERDES的CDR(Clock Data Recovery,時鐘數(shù)據(jù)恢復(fù)),完成100~200Mhz的板間SERDES單通道通信,該SERDES接口方案具有成本低、靈活性高、研發(fā)周期短等 特點。
1硬件接口:
硬件的接口如上圖所示,主要包括發(fā)送與接收模塊。
發(fā)送模塊包括8b/10b編碼器,并串轉(zhuǎn)換器,鎖相環(huán)(PLL)頻率合成器和發(fā)送器,接收模塊包括 8b/10b解碼器,Comma 檢測器,串并轉(zhuǎn)換器,時鐘數(shù)據(jù)恢復(fù)器(CDR)和接收器。
8b/10b編碼器用于將從上層協(xié)議芯片發(fā)送過來的字節(jié)信號映射成直流平衡的 10 位8b/10b 編碼,并串轉(zhuǎn)換用于將 10 位編碼結(jié)果串行化,并串轉(zhuǎn)換所需的高速、低抖動時鐘由鎖相環(huán)提供,發(fā)送器用于將 CMOS 電平的高速串行碼流轉(zhuǎn)換成抗噪聲能力較強的差分信號,經(jīng)背板連接或光纖信道發(fā)送到接收機。
在接收端,接收器將接收到的低擺幅差分信號還 原為 CMOS 電平的串行信號,CDR 從串行信號中抽取時鐘信息,完成對串行數(shù)據(jù)的最佳采樣,串并轉(zhuǎn)換利用 CDR 恢復(fù)的時鐘,將串行信號轉(zhuǎn)換成 10 位的并行數(shù)據(jù),Comma 檢測器檢測特殊的 Comma 字符,調(diào)整字邊界,字邊界正確的并行數(shù)據(jù)經(jīng)過 8b/10b 解碼,還原為字節(jié)信號,傳送到上層協(xié)議芯片,完成整個信息傳輸過程。
實際的設(shè)計中,CDR部分是由純邏輯電路完成的,為設(shè)計的核心的部分,下面將介紹數(shù)字CDR在HR03的實現(xiàn)方案。
2數(shù)字CDR:
CDR模塊作用是從數(shù)據(jù)中恢復(fù)嵌入的時鐘,然后接收器按照恢復(fù)的時鐘進行數(shù)據(jù)位對齊并通過comma進行字對齊。最后,將數(shù)據(jù)進行8b/10b解碼,供系統(tǒng)使用。
本方案采用同頻多相的時鐘采樣方法,具體實現(xiàn)過程利用PLL產(chǎn)生4個時鐘頻率相同,相位相差90度的時鐘,分別為clk0、clk90、clk180、 clk270,這四個時鐘輸出完全同步,利用4個時鐘對數(shù)據(jù)進行采樣,以獲得4倍過采樣的效果,具體的實現(xiàn)過程如下圖所示:
在數(shù)據(jù)時鐘恢復(fù)時,將到來的數(shù)據(jù)分別輸入到四個觸發(fā)器,分別用4個不同的相位進行采樣,要注意保證從輸入引腳到四個觸發(fā)器的延遲基本一致。
第一列觸發(fā)器的觸發(fā)分別由時鐘CLK0、CLK90、CLK180、CLK270的上升沿觸發(fā),按照這樣的方式來觸發(fā)就可以得到四個數(shù)據(jù)采樣點。這樣就 將原始時鐘周期分成了四個單獨的90度的區(qū)域,如果系統(tǒng)時鐘為200MHz,上圖所示的電路就相當(dāng)于產(chǎn)生了800MHz 的采樣速率。
僅通過一階的觸發(fā)器,輸出的采樣數(shù)據(jù)存在亞穩(wěn)態(tài)的問題,因此需對采樣點作進一步的處理。這里可將四個采樣點通過進一步的觸發(fā),除掉亞穩(wěn)態(tài)的問題,從而使采 樣點移到下一個相同的時鐘域。通常,亞穩(wěn)態(tài)的去除要經(jīng)過兩三級的處理,這就使得在有效數(shù)據(jù)輸出前會有數(shù)位無效的數(shù)據(jù),在數(shù)據(jù)采樣的第一個階段,電路檢測數(shù) 據(jù)線上數(shù)據(jù)的傳輸。當(dāng)檢測到有數(shù)據(jù)傳輸時,對傳輸數(shù)據(jù)的有效性進行確認。確認數(shù)據(jù)有效后,輸出高電平來指示采樣點有數(shù)據(jù)傳輸。
因為最終有四個輸出,所以需要一個復(fù)用器來選擇數(shù)據(jù)。發(fā)送數(shù)據(jù)與采樣時鐘的對應(yīng)關(guān)系如上圖所示,其對應(yīng)關(guān)系分為4種情況,每種情況下對應(yīng)一個最佳的采樣 時鐘,系統(tǒng)通過對數(shù)據(jù)邊沿位置信息的判斷,來確定哪路時鐘為最佳采樣時鐘,并利用復(fù)用器從選定的時鐘域中選擇數(shù)據(jù)位,例如檢測電路確定從時鐘域A中采樣的 數(shù)據(jù)有效,那么將時鐘域A中采樣的數(shù)據(jù)通過輸出端輸出。
3結(jié)束語:
通過對純數(shù)字電路的CDR電路,在沒有硬核的支持下,完成了FPGA上SERDES的接口設(shè)計,并通過實驗的傳輸測試,在HR03的FPGA上,可完成100~200Mbps的數(shù)據(jù)傳輸。
基于FPGA的智能小車設(shè)計方案
智能監(jiān)控機器人是近年來機器人應(yīng)用工程中一項前沿性的題目,智能化探測小車是智能行走機器人的一種。智能監(jiān)控機器小車就是針對上述情況,在參考 了目前大多數(shù)智能機器人的基礎(chǔ)上,以降低成本為原則設(shè)計的。小車具備溫濕度和環(huán)境監(jiān)測、無線通信、躲避障礙物以及無線遙控等功能。此智能監(jiān)控機器小車與目 前已有的同類設(shè)計相比,有性價比高、操作方便、可靠性好、功耗小等優(yōu)點。
1 系統(tǒng)結(jié)構(gòu)及硬件設(shè)計
整個系統(tǒng)由發(fā)送端(智能小車部分)和接收端(控制臺:控制和顯示部分)組成,如圖1所示。系統(tǒng)由傳感器系統(tǒng)、動力及轉(zhuǎn)向系統(tǒng)、CCD圖像傳感器模塊、 LCD顯示、溫度和濕度測量電路和供電系統(tǒng)等組成,整個系統(tǒng)的控制核心以2片Altera公司的EP2C20F484為核心,在Altera公司的 QuartusⅡ和SoPC Builder開發(fā)環(huán)境中完成。根據(jù)系統(tǒng)硬件結(jié)構(gòu)添加所需要的外圍模塊并生成NiosⅡCPU。
1.1 供電系統(tǒng)
小車安裝了兩塊充電電池,分別為FPGA開發(fā)板(FPGA控制電路)和小車運動提供能量,電池置于車身底部。
1.2 傳感器系統(tǒng)
系統(tǒng)采用了6個紅外對射傳感器,通過FPGA配置的NiosⅡCPU來檢測傳感器信號實現(xiàn)小車躲避障礙物的功能。漫反射型紅外對射傳感器也稱光電開關(guān), 是一種集發(fā)射器和接收器于一體的傳感器,多用于檢測障礙物。原理是由光電開關(guān)輻射出來的調(diào)制紅外光束被檢測物體反射回來,紅外線經(jīng)同步選通接收,由電子開 關(guān)線路驅(qū)動回路,從而來檢測物體的有或無。當(dāng)被檢測物體的表面光亮或其反光率極高時,漫反射式的光電開關(guān)是首選的檢測模式。這種電路模塊體積小,信號容易 轉(zhuǎn)化為標(biāo)準(zhǔn)電平。
1.3 動力及轉(zhuǎn)向系統(tǒng)
本小車有左右輪兩個電機及龜機驅(qū)動。驅(qū) 動電路采用了CT Microelecttonics公司的大功率直流電機驅(qū)動芯片L298,最高支持50 V電壓,最大電流為5 A,滿足大功率電動機的要求,外圍電路簡單,同時,由于該芯片為雙路結(jié)構(gòu),分別控制左右電動機,增加了電路的可靠性,減少了復(fù)雜性。電機控制采用PWM脈 沖寬度調(diào)制方式來控制汽車的前進速度。由NiosⅡCPU寫入控制字,可得到不同占空比的PWM驅(qū)動信號,此PWM信號送入電機驅(qū)動芯片的控制端來調(diào)節(jié)速 度。
1.4 小車自動避障系統(tǒng)
小車自動避障系統(tǒng)采用Verilog HDL語言編寫驅(qū)動電路。該模塊(見圖2中的MOTOR)和一個數(shù)據(jù)選擇器(見圖2中的select_2)相連來實現(xiàn)自動避障與人工遙控之間的切換。當(dāng)小 車上NiosⅡCPU的SEL管腳輸出低電平時,數(shù)據(jù)選擇器將把該模塊的輸出作為電機的控制指令。這樣設(shè)計的好處在于設(shè)計具有響應(yīng)迅速,不需要NiosⅡ CPU參與,提高了CPU處理濕度、溫度數(shù)據(jù)并控制無線模塊收發(fā)數(shù)據(jù)的效率。該邏輯電路的工作原理是根據(jù)紅外傳感器發(fā)回來的數(shù)據(jù),經(jīng)過邏輯判斷來控制電機 的工作狀態(tài)。
1.5 小車的人工控制
小車的人工控制和自動避障之間的轉(zhuǎn)換由一個數(shù)據(jù)選擇器控制,當(dāng)小車上NiosⅡCPU的SEL管腳輸出高電平時,數(shù)據(jù)選擇器將把無線模塊所發(fā)送過來的指令作為電機的控制指令,實現(xiàn)了對小車的無線控制。
1.6 溫度和濕度測量
在溫度測量系統(tǒng)中,采用抗干擾能力強的新型數(shù)字溫度傳感器DS18B20,該系統(tǒng)設(shè)計中將DS18B20的1,3引腳分別接于FPGA板的GND 和+3.3 V管腳,2引腳接FPGA的I/O腳,傳輸控制及數(shù)據(jù)信號。DS18B20最高可用12位表示溫度值,最高5位為符號位。
采用HS1101濕度傳感器,具有響應(yīng)速度快,工作溫區(qū)寬(-40~+100℃),測量范圍大(0%~100%RH),可靠性高,穩(wěn)定性好,功耗低,外圍電路簡單等優(yōu)點。
工作原理為:用HS1101傳感器與TLC555構(gòu)成多諧振蕩器,HS1101傳感器內(nèi)部電容會隨濕度的變化而變化,從而使輸出頻率發(fā)生變化。編寫VHDL程序在FPGA設(shè)計一個頻率計可精確的測出頻率值,通過輸出頻率與濕度的關(guān)系便可得到濕度值。
1.7 無線收發(fā)系統(tǒng)
系統(tǒng)采用PTR4000無線嵌入式模塊,工作頻率為2.4 GHz,最高工作速率可達1 Mb/s,高效GMSK調(diào)制,且有CRC檢錯功能。具有低功耗,抗干擾能力強,體積小等優(yōu)點。主要有三種工作模式,分別為:配置模式、 ShockBurst發(fā)送模式和ShockBurst接收模式。
2 軟件設(shè)計和調(diào)試
采用NiosⅡ進行C語言編程。NiosⅡ集成開發(fā)環(huán)境(IDE)是NlosⅡ系列嵌入式處理器的基本軟件開發(fā)工具。所有軟件開發(fā)任務(wù)都可以在Nios ⅡIDE下完成,包括編輯、編譯和調(diào)試程序。NiosⅡIDE是基于開放式的、可擴展Eclipse IDE project工程以及EclipseC/C++開發(fā)工具(CDT)工程,NiosⅡIDE為GCC編譯器提供了一個圖形化用戶界面,可以支持標(biāo)準(zhǔn)C。 NiosⅡIDE編譯環(huán)境自動地生成一個基于用戶特定系統(tǒng)配置(SoPC Builder生成的SoPC文件)的makefile,有利于程序的開發(fā)。
NiosⅡIDE包含一個強大的、在GNU調(diào)試器基礎(chǔ)之上的軟件調(diào)試器——GDB。完成軟件代碼的編寫后,可以對代碼進行仿真和調(diào)試。Nios-Ⅱ IDE提供了一個方便的閃存編程方法。任何連接到FPGA的兼容通用閃存接口(CFI)的閃存器件都可以通過NiosⅡIDE閃存編程器來燒結(jié)。針對本設(shè) 計及應(yīng)用,編寫了系統(tǒng)控制程序和LCD顯示程序。流程圖如圖3所示。
3 系統(tǒng)調(diào)試
小車系統(tǒng)需要測試能否準(zhǔn)確接收控制臺發(fā)送的指令并控制小車運動或停止,以及向前、后、左、右轉(zhuǎn)向。還要測試主控機能否準(zhǔn)確接收小車采集到的溫度以及濕度 信息,能否正確顯示。經(jīng)過多次測試,發(fā)現(xiàn)由于系統(tǒng)程序是采用收發(fā)循環(huán)轉(zhuǎn)換的模式,為了讓兩個系統(tǒng)能夠收到對方發(fā)的信息,對小車的遙控與自動部分進行簡單的 分化。自動情況下,控制臺為主要接收端,小車為主要發(fā)送端,一般情況下小車發(fā)送數(shù)據(jù)到控制臺,需要自動到遙控的轉(zhuǎn)換時,通過在延時時間內(nèi)進行中斷來實行從 自動到遙控的轉(zhuǎn)換;在遙控狀態(tài)下,控制臺為主要發(fā)射端,小車為接收端,一般情況下控制臺發(fā)送小車行進指令到小車,需要采集數(shù)據(jù)時,通過溫度、濕度采集按鍵 來對小車進行收發(fā)轉(zhuǎn)換,同時小車發(fā)出采集數(shù)據(jù)指令,之后再次轉(zhuǎn)為接收模式。這樣做之后使小車與控制臺的軟件部分清晰明了,小車的行進以及采集顯示數(shù)據(jù)能夠 實時的進行。
濕度測量系統(tǒng)需要測試是否能夠精準(zhǔn)輸出頻率值。采用芯片LM555手冊上推薦的電路,由于元件的誤差,使輸出的頻率并不精 確,經(jīng)過與標(biāo)準(zhǔn)的濕度儀進行比對,通過參數(shù)調(diào)整,用直線做近似,最后得到的頻率值誤差在幾赫茲(頻率范圍是6 008~7 314Hz),經(jīng)過預(yù)算得到很準(zhǔn)確的濕度值。開始求濕度值時用的是解一元三次方程的方法,由于計算量大,對小車的行進會有很大影響,后來在小車端只是把小 車采集到的頻率值通過紅外天線傳輸?shù)街骺囟?,并將原先的小車自動避障由NiosⅡCPU控制改為由Verilog編寫的硬件模塊控制,最后在控制臺做濕度 值的計算。這樣的更改既減少了小車NiosⅡCPU的工作量,同時由于小車的自動避障改為由獨立的Verilog模塊控制,運行起來很流暢。
對于無線收發(fā)系統(tǒng),要測試其可靠性以及發(fā)送或接收的信息的準(zhǔn)確性。測試方法是單獨設(shè)計了一個軟核下載到SoPC中,并編寫一段程序用于測試是否正確寫入 配置控制字,是否能夠進行ShockBurst模式的接收或發(fā)送。問題是對天線各模式時序的把握,一開始寫的程序總是不能正確寫入配置字,反復(fù)調(diào)試,并用 數(shù)字示波器觀察寫入配置字的瞬間過程以及各延時的時間,最后測試成功,并把發(fā)送或接收的狀態(tài)用LED顯示出來,每發(fā)送或接收到一個數(shù)據(jù)包就讓LED閃一 下。
4 結(jié)語
本設(shè)計以FPGA嵌入NiosⅡ軟核處理器為核心,輔以必要的外圍 電路,構(gòu)成了高度集成化的片上系統(tǒng)。另外,SoPC系統(tǒng)的柔性配置,使得可以基于此系統(tǒng)擴展片外存儲器和多路輸出。設(shè)計的小車具有較強的避障能力,且能通 過接收端對其進行方便的控制,溫度和濕度采集均達了較高的精度,并且能實現(xiàn)動態(tài)顯示,無線收發(fā)模塊的有效范圍最遠可達300 m,可應(yīng)用于較為惡劣的環(huán)境,可代替人進行溫度和濕度的實地檢測。
基于SoC FPGA進行工業(yè)設(shè)計及電機控制
工業(yè)市場的近期發(fā)展推動了對具有高集成度、高性能、低功耗FPGA器件的需求。設(shè)計人員更喜歡網(wǎng)絡(luò)通信而不是點對點通信,這意味著可能需要額外的控制器用于通信,進而間接增加了BOM成本、電路板尺寸和相關(guān)NRE(一次性工程費用)成本。
總體擁有成本用于分析和估計購置的壽命周期成本,它是所有與設(shè)計相關(guān)的直接和間接成本的擴展集,包括工程技術(shù)成本、安裝和維護成本、材料清單(BOM)成本和NRE(研發(fā))成本等。通過考慮系統(tǒng)級因素有可能最大限度地減少總體擁有成本,從而帶來可持續(xù)的長期盈利能力。
美高森美公司(Microsemi)提供具有硬核ARM Cortex-M3微控制器和IP集成的SmartFusion2 SoC FPGA器件,它采用成本優(yōu)化的封裝,具有減少BOM和電路板尺寸的特性。這些器件具有低功耗和寬溫度范圍,能夠在沒有冷卻風(fēng)扇的極端條件下可靠地運行。 SmartFusion2 SoC FPGA架構(gòu)將一個硬核ARM Cortex-M3 IP與FPGA架構(gòu)相集成,可以實現(xiàn)更大的設(shè)計靈活性和更快的上市時間。美高森美為電機控制算法開發(fā)提供了具有多個多軸電機控制參考設(shè)計和IP的生態(tài)系 統(tǒng),使由多處理器解決方案轉(zhuǎn)向單一器件解決方案(即SoC FPGA)更加容易。
影響TCO的因素
以下是影響系統(tǒng)TCO的一些因素。
(1)長壽命周期。FPGA可以在現(xiàn)場部署之后進行重新編程,這延長了產(chǎn)品的壽命周期,從而使設(shè)計人員能夠?qū)W⒂谛庐a(chǎn)品開發(fā),實現(xiàn)更快的上市時間。
(2)BOM.美高森美基于閃存技術(shù)的FPGA在上電時無需啟動PROM或閃存MCU來加載FPGA,它們是零級非易失性/即時啟動器件。與基于SRAM的FPGA器件不同,美高森美基于閃存的FPGA無需附加上電監(jiān)控器,這是因為閃存開關(guān)不會隨電壓而改變。
(3)上市時間。OEM廠商之間的激烈競爭迫切需要更多的產(chǎn)品差異化和更快的上市時間。經(jīng)過驗證的IP模塊可大幅縮短設(shè)計時間。目前已經(jīng)可以提供多個構(gòu) 建工業(yè)解決方案所需的IP模塊,同時更多的模塊正在開發(fā)中。SoC表現(xiàn)出的另一個獨特優(yōu)勢是可以用于調(diào)試FPGA設(shè)計。為了調(diào)試FPGA設(shè)計,可以通過用 于調(diào)試的高速接口,利用微控制器子系統(tǒng)從FPGA中提取信息。
(4)工程工具成本。與FPGA開發(fā)工具昂貴的概念相反,美高森美提供用于FPGA開發(fā)的免費Libero SoC IDE,僅在開發(fā)高端器件時才需要付費。
工業(yè)驅(qū)動系統(tǒng)
工業(yè)驅(qū)動系統(tǒng)由一個電機控制器件和一個通信器件構(gòu)成,電機控制器件包含了驅(qū)動逆變器的邏輯和保護邏輯,通信器件則使監(jiān)控控制能夠?qū)\行時間參數(shù)進行初始化和修改。
在典型的驅(qū)動系統(tǒng)(圖1)中,可能使用多個控制器器件來實現(xiàn)驅(qū)動邏輯。一個器件可能執(zhí)行與電機控制算法相關(guān)的計算,第二個器件可能運行與通信相關(guān)的任務(wù),第三個器件則可能運行與安全性相關(guān)的任務(wù)。
多軸電機控制
傳統(tǒng)上,工業(yè)電機控制應(yīng)用使用微控制器或DSP來運行電機控制所需的復(fù)雜算法,在大多數(shù)傳統(tǒng)的工業(yè)驅(qū)動中,F(xiàn)PGA與微控制器或DSP一起使用,用于數(shù) 據(jù)采集和快速作用保護。除了數(shù)據(jù)采集、PWM生成和保護邏輯,F(xiàn)PGA傳統(tǒng)上并未在實現(xiàn)電機控制算法方面發(fā)揮主要作用。
使用微控制器或DSP實現(xiàn)電機控制算法的方法并不容易擴展到多個以獨立速度運行的電機(多軸電機控制),美高森美SmartFusion2 SoC FPGA可以使用單一器件來實現(xiàn)集成且完整的多軸電機驅(qū)動控制(圖2)。
控制方面可以分為兩個部分。一個部分用于運行磁場定向控制(FOC)算法、速度控制、電流控制、速度估計、位置估計和PWM生成;另一個部分則包括速度 曲線、負載特性、過程控制和保護(故障和報警)。執(zhí)行FOC算法屬于時間關(guān)鍵型,需要在極高的采樣速率下進行(在微秒范圍),特別是針對具有低定子電感的 高速電機。這使得在FPGA中實現(xiàn)FOC算法變得更優(yōu)越。過程控制、速度曲線和其他保護無需快速更新,因而能夠以較低的采樣速率執(zhí)行(在毫秒范圍),并且 能夠在內(nèi)置Cortex-M3子系統(tǒng)中進行編程。
晶體管開關(guān)周期在驅(qū)動中發(fā)揮著重要的作用,如果FOC回路執(zhí)行時間比開關(guān)周期短得多,硬件模塊可以重用于計算第二個電機的電壓。這意味著器件可以在相同的成本下提供更高的性能。
(1)電機控制IP模塊。圖3為無傳感器磁場定向控制算法,這一部分將會討論這些模塊,它們作為IP核提供。
● PI控制器。比例積分(PI)控制器是用于控制系統(tǒng)參數(shù)的反饋機制,它具有兩個用于控制控制器動態(tài)響應(yīng)的可調(diào)增益參數(shù)-比例和積分增益常數(shù)。PI控制器的 比例分量是比例增益常數(shù)和誤差輸入的乘積,而積分分量是累積誤差和積分增益常數(shù)的乘積。這兩個分量被加在了一起。PI控制器的積分階段可能在系統(tǒng)中引起不 穩(wěn)定,因為數(shù)據(jù)值不受控制地增加。這種不受控制的數(shù)據(jù)上升稱作積分飽卷,所有的PI控制器實現(xiàn)方案都包括一個抗飽卷機制,用于確??刂破鬏敵鍪怯邢薜摹C?高森美的PI控制器IP模塊使用hold-on-saturation(保持飽和)算法用于抗飽卷。這個模塊還提供附加特性以設(shè)置最初的輸出值。
● 磁場定向控制(FOC)。FOC是通過獨立地確定和控制轉(zhuǎn)矩和磁化電流分量來為電機提供最優(yōu)電流的算法。在永磁同步電機(PMSM)中,轉(zhuǎn)子已經(jīng)磁化。因 此,為電機提供的電流只用于轉(zhuǎn)矩。FOC是計算密集型算法,但是美高森美電機控制參考設(shè)計已經(jīng)針對器件資源的最優(yōu)使用而構(gòu)建。FOC算法包括 Clarke、Park、逆Clarke和逆Park變換。
● 角度估計。FOC的一個輸入是轉(zhuǎn)子角度。精確確定轉(zhuǎn)子角度對于確保低功耗是必不可少的。增添確定位置和速度的物理傳感器會增加系統(tǒng)的成本并降低可靠性。無 傳感器算法有助于消除傳感器,但是增加了計算復(fù)雜性。美高森美針對無傳感器控制提供了兩個角度計算算法IP模塊-一個基于Luenberger觀測器,另 一個基于直接反電動勢計算。該公司還提供基于霍爾傳感器和編碼器的單獨參考設(shè)計。
● PLL.PLL用于同步信號,在多個應(yīng)用中有用,例如逆變器的角度估計和電網(wǎng)同步。
● 速率限制器。速率限制器模塊可以實現(xiàn)系統(tǒng)變量或輸入的平滑改變。例如,在電機控制系統(tǒng)中,如果電機所需的速度突然改變,系統(tǒng)可能變得不穩(wěn)定。為了避免此類情形,速率限制器模塊用于從初始速度轉(zhuǎn)變到所需的速度。速率限制器模塊可以進行配置以控制改變的速率。
● 空間矢量調(diào)制??臻g矢量調(diào)制模塊改善了直流總線利用率,并消除了晶體管開關(guān)的短脈沖。因為晶體管開啟/關(guān)斷時間比脈沖持續(xù)時間長,短脈沖會導(dǎo)致不正確的開關(guān)行為。
● 三相PWM生成。在所有計算的最后,可以得到三相電機電壓。這些電壓用于生成逆變器中晶體管的開關(guān)信號。PWM模塊為六個(三個高側(cè)和三個低側(cè))晶體管產(chǎn) 生開關(guān)信號,并且具有死區(qū)時間和延遲時間插入等先進特性??删幊痰乃绤^(qū)時間插入特性有助于避免逆變器引腳上的災(zāi)難性短路情況??删幊痰难舆t時間插入特性使 ADC測量與PWM信號生成能夠同步。該模塊可以配置成與僅由N-MOSFET組成的逆變器或同時包括N-MOSFET和P-MOSFET的逆變器一起工 作。
(2)在SoC中調(diào)試FPGA設(shè)計。通常,在微控制器上調(diào)試設(shè)計比在FPGA上進行調(diào)試相對簡單一些。在SoC中,可以利用 FPGA的高性能,同時保持在微控制器中更快速調(diào)試的優(yōu)勢。美高森美SmartFusion2 SoC FPGA中的微控制器子系統(tǒng)和FPGA架構(gòu)可以通過AMBA APB或AXI總線彼此進行通信。這樣可以把測試數(shù)據(jù)注入FPGA架構(gòu)中,或者從FPGA架構(gòu)中記錄調(diào)試數(shù)據(jù),從而幫助實現(xiàn)運行時間的內(nèi)部數(shù)據(jù)可視化,用 于實時調(diào)試。固件代碼可以單步運行,在代碼中可以設(shè)置斷點來分析FPGA寄存器數(shù)據(jù)。
基于SmartFusion2 SoC FPGA的多軸電機控制解決方案通過USB連接至主機PC,并與圖形用戶界面(GUI)通信,進行啟動/停止電機,設(shè)置電機速度值和其他系統(tǒng)參數(shù),描繪多達四個系統(tǒng)變量,例如電機速度、電機電流和轉(zhuǎn)子角度(圖4)。
(3)生態(tài)系統(tǒng)。美高森美提供一組豐富的IP庫,包括前面討論過的數(shù)種電機控制功能。這些模塊可以輕易定制,并可以在美高森美器件中移植。使用 Libero SoC軟件的Smart Design工具,這些模塊可以采用圖形方式配置和連接在一起。借助于這些IP模塊,設(shè)計人員能夠顯著減少在FPGA中實現(xiàn)電機控制算法所需的時間。
這些IP模塊已在以高達30,000r/min轉(zhuǎn)速和200kHz開關(guān)頻率運行的電機上進行了測試。
工業(yè)通信協(xié)議
工業(yè)網(wǎng)絡(luò)的發(fā)展趨勢是通過使用更快的網(wǎng)絡(luò)通信替代點至點通信。實現(xiàn)此類高速通信需要支持更高的帶寬,這對于同時處理電機控制算法的微控制器或DSP來說 并不容易。在大多數(shù)情況下,會使用一個附加的微控制器或FPGA來處理與每個電機控制器的通信。通常使用的基于以太網(wǎng)的協(xié)議有PROFINET、 EtherNet/IP和EtherCAT標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)仍然在演進。其他的協(xié)議包括了CAN和Modbus.在這種情況下使用SoC的優(yōu)勢,是在單一 FPGA平臺上支持多種工業(yè)以太網(wǎng)協(xié)議標(biāo)準(zhǔn)。
根據(jù)終端系統(tǒng)目標(biāo),可以通過重用IP和協(xié)議棧(用于通信)來優(yōu)化系統(tǒng)的成本,或者通過仔細地在硬件(FPGA)和軟件(ARMCortex-M3子系統(tǒng))中劃分功能來優(yōu)化性能。
美高森美的SmartFusion2 FPGA具有內(nèi)置CAN、高速USB和千兆以太網(wǎng)模塊作為微控制器子系統(tǒng)的一部分。高速SERDES模塊用于實現(xiàn)涉及串行數(shù)據(jù)傳送的協(xié)議。
安全性
SmartFusion2 SoC FPGA器件具有數(shù)項設(shè)計和數(shù)據(jù)安全特性。DPA認證反篡改保護和加密特性等設(shè)計安全特性能夠幫助保護客戶的知識產(chǎn)權(quán)。SoC FPGA器件還包括數(shù)據(jù)安全特性,例如ECC硬件加速器、AES-128/256和SHA-256服務(wù)。對于數(shù)據(jù)安全性,可以使用EnforcIT IP Suite和CodeSEAL軟件安全構(gòu)件,EnforcIT IP包括一套可定制內(nèi)核(作為網(wǎng)表),有效地將安全層移到硬件中。CodeSEAL將對策注入到固件中,可以獨立地使用,或者用作EnforcIT的提 升。
實現(xiàn)協(xié)議的靈活性可讓設(shè)計人員使用多個安全層來認證從中央監(jiān)控控制器進入的信息。
可靠性
在多個市場中安全標(biāo)準(zhǔn)的增長推動了高可靠性的需求,SmartFusion2經(jīng)設(shè)計滿足高可用性、安全關(guān)鍵型和任務(wù)關(guān)鍵型系統(tǒng)的需求,以下是SmartFusion2 SoC FPGA提供的某些可靠性特性。
(1)單粒子翻轉(zhuǎn)(SEU)免疫零FIT率配置。高可靠性運作需要SEU免疫零FIT率FPGA配置,SmartFusion2架構(gòu)具有不受α或中子輻 射的免疫能力,因為它使用閃存來配置路由矩陣和邏輯模塊中使用的晶體管?;赟RAM的FPGA在海平面上的FIT(時間失效)率可能為1k~4k,在高 于海平面5,000英尺的位置會高得多。高可靠性應(yīng)用可接受的FIT率低于20,這使得SmartFusion2最適合這些應(yīng)用。
(2)EDAC保護。SmartFusion2器件具有錯誤檢測與校正(EDAC)控制器,可防止在微控制器子系統(tǒng)(MSS)存儲器中發(fā)生的單粒子翻轉(zhuǎn)錯誤。
(3)無外部配置器件。在具有大量FPGA的復(fù)雜系統(tǒng)中,使用外部配置器件會降低可靠性。在上電時,F(xiàn)PGA需花費時間來進行配置,這在使用多個 FPGA器件的應(yīng)用中帶來了設(shè)計復(fù)雜性。SmartFusion2 SoC FPGA在器件內(nèi)部包含了配置存儲器,它提供了在器件一上電時就開啟的附加優(yōu)勢。
(4)軍用溫度級器件。SmartFusion2 SoC FPGA器件針對軍用溫度條件進行了全面測試。軍用級器件具有10k和150k邏輯單元,并具有允許訪問密碼加速器的安全特性和數(shù)據(jù)安全特性。
總結(jié)
美高森美SmartFusion2 SoC FPGA使用經(jīng)過高度優(yōu)化的電機控制IP模塊和經(jīng)過驗證的參考設(shè)計,提供了數(shù)種降低工業(yè)設(shè)計TCO的特性。從微控制器遷移的客戶將能夠重用某些舊代碼,而 FPGA設(shè)計人員將能夠利用FPGA架構(gòu)和ARM Cortex-M3子系統(tǒng)來創(chuàng)建一個高效的架構(gòu),允許電機控制模塊和通信模塊同時駐留在單一器件中。ARM Cortex-M3微控制器子系統(tǒng)的存在,可以實現(xiàn)靈活的設(shè)計和智能分區(qū),而針對性能和成本做優(yōu)化。微控制器子系統(tǒng)還可以在運行時間中注入和記錄數(shù)據(jù),加 速調(diào)試FPGA設(shè)計。SmartFusion2平臺還提供了實現(xiàn)工業(yè)通信協(xié)議的廣泛選項。它同時提供用于設(shè)計和數(shù)據(jù)安全的多項安全特性,還提供了滿足高可 靠性需求的特性。SmartFusion2系列器件備有強大的生態(tài)系統(tǒng)支持,能夠幫助客戶以最低TCO來開發(fā)工業(yè)解決方案。
利用FPGA實現(xiàn)無線分布式采集系統(tǒng)設(shè)計
1 引言
近些年來,隨著電子技術(shù)的發(fā)展,無線通信技術(shù)、計算機網(wǎng)絡(luò)的發(fā)展,分布式無線數(shù)據(jù)采集網(wǎng)絡(luò)技術(shù)開始興起,并迅速的應(yīng)用到各個領(lǐng)域。在一些地形復(fù)雜,不適合人類出現(xiàn)的區(qū)域需要進行數(shù)據(jù)采集的情況下,都可以適當(dāng)?shù)倪x擇無線分布式 采集來進行?,F(xiàn)有的無線分布式采集系統(tǒng)中,往往使用單片機、DSP等作為系統(tǒng)的主控控制單元。但是由于其自身工作特點,往往對于精確的定時控制以及并行處 理能力上比FPGA弱。隨著FPGA等可編程邏輯器件的發(fā)展,為無線數(shù)據(jù)可靠傳輸提供了很好的實現(xiàn)平臺。采用FPGA作為時序控制和信號處理的處理器,將 使系統(tǒng)電路設(shè)計更加簡潔、可靠、靈活,可有效的縮短開發(fā)周期,并降低開發(fā)成本。
為此,基于CycloneIV+STM32設(shè)計了一種新 型的無線分布式采集系統(tǒng),實現(xiàn)了數(shù)據(jù)的高可靠和同步傳輸。設(shè)計主要由3大部分組成:編碼器、譯碼器、無線收發(fā)電臺。在對編碼器、譯碼器同步校準(zhǔn)后,對待發(fā) 送數(shù)據(jù)進行卷積編碼,并轉(zhuǎn)換為串行數(shù)據(jù)。數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)后,在串行數(shù)據(jù)幀頭加入Barker碼來實現(xiàn)幀的同步,并使用2條互為備份的數(shù)據(jù)傳送通道同時 發(fā)送數(shù)據(jù)。在數(shù)據(jù)接收端檢測到barker碼后,本地對互為備份的雙通道數(shù)據(jù)進行viterbi譯碼(本文設(shè)計的viterbi譯碼器采用并行結(jié)構(gòu),大大 的降低譯碼時間)。譯碼結(jié)束后,本地對雙通道數(shù)據(jù)進行循環(huán)冗余校驗,并做出判選,最后執(zhí)行相應(yīng)指令。并在規(guī)定時間給出相應(yīng)反饋信號。設(shè)計的無線采集系統(tǒng), 即使某一數(shù)據(jù)通道出現(xiàn)少量錯碼,系統(tǒng)仍能有效的恢復(fù)出數(shù)據(jù),并進行可靠的數(shù)據(jù)傳輸。系統(tǒng)添加了監(jiān)控模塊,實時備份上傳的數(shù)據(jù)并監(jiān)控,如發(fā)現(xiàn)不能正常上傳, 則啟用備用模塊保證整個系統(tǒng)正常工作。系統(tǒng)不僅能實現(xiàn)數(shù)據(jù)的高可靠和同步傳輸,而且具有很好的適用性,可廣泛應(yīng)用工業(yè)中。
2 無線分布式采集系統(tǒng)簡介
2.1 系統(tǒng)硬件簡介
無線分布式采集系統(tǒng)包括編碼器、譯碼器(編碼器、譯碼器硬件完全相同,只是配置邏輯不同,可配置為編碼器、譯碼器、中繼站)和無線通信電臺。如圖1所示,這是一個最簡單的一對一式分布式系統(tǒng)。
編碼器作為上位機與譯碼器之間的橋梁,通過USB/RS485通道進行發(fā)送、接收命令和數(shù)據(jù)。譯碼器接收編碼器發(fā)來的命令進行配置和采集,并將數(shù)據(jù)存儲至DDR2中。譯碼器收到上傳命令后,上傳數(shù)據(jù)至編碼器。
編碼器/譯碼器硬件系統(tǒng)框圖如圖2所示。本系統(tǒng)主控單元由FPGA完成。FPGA選用Altera公司的EP4CGX30F407,邏輯單元為 29440個,80個18×18乘法器,多達290個用戶自定義IO。STM32作為監(jiān)控和備用單元組成系統(tǒng)的基本架構(gòu),STM32F407ZG系列是基 于高性能的ARM CortexTM-M4F的32位RISC內(nèi)核,工作頻率高達168 MHz,該STM32F407ZG系列采用高速嵌入式存儲器(多達1 MB閃存,高達192 KB的SRAM),擁有3個12位ADC,2個DAC,1個低功耗RTC,12個通用16位定時器,2個通用32位定時器。人機交互部分由16X2液晶顯 示字符模塊和4個按鍵組成,其主要功能是通過按鍵對基站編號設(shè)置并顯示在LCD上。無線模塊選用WSN-03系列無線模塊作為收發(fā)平臺,工作電壓為5 V,傳輸速率和工作頻段等都可配置。目前傳輸速率最大為115 200b ps,工作頻為433 MHz可調(diào)。無線模塊與FPGA主要以RXD/A,TXD/B,NRST(復(fù)位控制),SET(設(shè)置模塊參數(shù)),SLP(休眠控制)信號線連接。GPS模 塊選用VKl6U6進行定位,與FPGA以UART接口連接,波特率定位9600 bps。ADC選用基于△-Σ技術(shù)的32 bits高精度低功耗模數(shù)轉(zhuǎn)換芯片ADSl282,采樣信號電平范圍:差分輸人一2.5~+2.5 V。單個譯碼器有6個采集通道,以2 k采樣率,采樣時常16 S來計算,單個譯碼器純數(shù)據(jù)量為6×2 k×16×24-6144 Kbits.考慮到編碼器,一次采樣,8個基站的數(shù)據(jù)經(jīng)編碼后數(shù)據(jù)總量為98 304 Kbits,所以編碼器和譯碼器需增加l片Micron Technology公司的MT47H256M8HG-37E IT(256Meg×8)作為緩存空間。由于DDR2 SDRAM需要特定的控制讀寫時序,系統(tǒng)直接采用Quartus II自帶的“DDR2 SDRAM High-Performance Controller”IP CORE。USB部分由2個通道組成,一個是由FPGA、CY7C68013和USB接口組成;另一個由STM32(自帶USB驅(qū)動)和USB接口組成。 同時本設(shè)計中還添加了RS485串口,使整個系統(tǒng)與上位機能保持實時通信,為系統(tǒng)的遠程控制提供了可能,并能保持系統(tǒng)更新。
2.2 系統(tǒng)數(shù)據(jù)流程
系統(tǒng)的數(shù)據(jù)流程為:同步校準(zhǔn)譯碼器,設(shè)置各個譯碼器接收命令后的延時-編碼器配置采集參數(shù)、命令-譯碼器采集數(shù)據(jù)保存至DDR2中一各譯碼器分時接收數(shù) 據(jù)上傳命令并上傳數(shù)據(jù)-編碼器將數(shù)據(jù)匯總保存至DDR2-數(shù)據(jù)收集齊后通過USB/RS485上傳至上位機。譯碼器節(jié)點配合計算機對各個點的數(shù)據(jù)進行輪詢 采集,它包含了無線傳輸模塊和與計算機通信的USB接口。STM32將組幀后的數(shù)據(jù)備份并實時監(jiān)控FPGA,如在規(guī)定時間或未能按指令進行工 作,STM32將替代FPGA并使FPGA進入斷電狀態(tài)。
2.3 系統(tǒng)組幀格式
編碼器與譯碼器之間是一對多的關(guān)系,譯碼器分時上傳數(shù)據(jù),譯碼器有2個通道,譯碼器有唯一的配置編號。數(shù)據(jù)幀的格式如圖3所示。數(shù)據(jù)幀中除20字節(jié)有效數(shù)據(jù)之外,還包括組號、目的編號等。
為了改進接收信號質(zhì)量,本系統(tǒng)引入信道編碼的方法來改善信道質(zhì)量。具體如圖4所示。發(fā)送端對數(shù)據(jù)進行組幀、并串轉(zhuǎn)換、卷積編碼、加入同步幀信息后,把數(shù) 據(jù)發(fā)送至無線通信電臺進行調(diào)制。接收端的無線通信電臺對信號進行解調(diào)后發(fā)送數(shù)據(jù)至接收端的FPGA.接收端的FPGA檢測到幀同步信息后對接下來的數(shù)據(jù)保 存,并進行Viterbi譯碼。FPGA對雙通道的數(shù)據(jù)進行冗余校驗,并選擇正確的數(shù)據(jù)執(zhí)行相關(guān)操作。
3 無線分布式采集系統(tǒng)數(shù)據(jù)傳輸?shù)膶崿F(xiàn)
3.1 可靠性
待發(fā)數(shù)據(jù)經(jīng)卷積編碼,互為備份的雙通道發(fā)送,Viterbi譯碼,冗余校驗,數(shù)據(jù)判選,系統(tǒng)能夠很好的進行無線收發(fā)。
3.1.1 卷積編碼
數(shù)據(jù)組幀完成后,由低位至高位進行并串轉(zhuǎn)換,進行卷積編碼。卷積編碼是一種糾錯信道編碼,是由連續(xù)的輸入信息序列經(jīng)編碼后得到連續(xù)輸出的編碼序列口。以 (n,k,m)來描述卷積碼,k為每次輸入到卷積編碼器的bit數(shù),行為每k元組碼字對應(yīng)的卷積碼輸出n元組碼字,m為編碼儲存度。卷積編碼生成的n元組 元不僅與當(dāng)前輸入有關(guān)系,還與前面m一1個輸入的k元組有關(guān)系。本系統(tǒng)采用(2,1,4)卷積編碼器,如圖5所示。圖中“+”代表異或。每bit經(jīng)編碼后 都有2 bit輸出(C1,C2)。
3.1.2 Viterbi譯碼
接收端有2個接收通道,互不干擾。接收端對2個通道同時譯碼。譯碼采用Viterbi譯碼。Viterbi譯碼算法是一種卷積碼的解碼算法。 Viterbi譯碼根據(jù)最大似然算法規(guī)則,能達到最佳譯碼,特別適合向前糾錯。以本設(shè)計為例,根據(jù)圖5,編碼器4個延時狀態(tài)(0,1)組成整個編碼器的 16個狀態(tài)(D4D3D2D1),每個狀態(tài)在編碼器輸入1或0時,跳轉(zhuǎn)到另一個狀態(tài)。并且輸出也隨之改變。譯碼就是編碼的逆過程。算法規(guī)定任意t時刻收到 的數(shù)據(jù)都要進行32次路徑值計算、16次比較,比較后每個狀態(tài)只保存一個路徑值,為接下來計算減少了一半的運算量。反復(fù)208次,從16條幸存路徑中選出 一條路徑值最小的,反推出這條路徑,得出相應(yīng)的譯碼輸出??紤]到每次譯碼后,譯碼器都能回到初始狀態(tài),所以源數(shù)據(jù)最后加了8 bit的“0”。本設(shè)計采用并行處理結(jié)構(gòu),經(jīng)214個周期還原出源碼。
在設(shè)計FPGA邏輯時,基本采用多條并行的流水線技術(shù),譯碼部分 包含4個子模塊:加比選模塊、回溯模塊、存儲模塊和時鐘控制模塊。路徑值的計算和比較在3個時鐘周期內(nèi)完成,4個模塊同時運行,大大的降低了譯碼時間。另 外,為了提高FPGA效率,系統(tǒng)加入采樣觸發(fā)信號,保證系邏輯能夠穩(wěn)定運行。
3.1.3 數(shù)據(jù)判選
經(jīng)譯碼后,接收端 已接收到2組互為備份的數(shù)據(jù)。經(jīng)實踐證明,簡單的并聯(lián)冗余能大大的提高系統(tǒng)的可靠性。具體選擇流程如圖6所示。2路數(shù)據(jù)經(jīng)Viterbi譯碼后,開始接收 一幀數(shù)據(jù),并寫入RAM中,同時計算CRC校驗、幀完整性檢測、ID是否符合本地。上述檢測都沒問題時,對2路幸存路徑的度量值進行比較,選擇值小的通道 作為最終數(shù)據(jù)。
3.2 同步的實現(xiàn)
為了保證編碼器和譯碼器之間能嚴格實現(xiàn)同步,數(shù)據(jù)幀需要加入同步幀。實現(xiàn)幀同步的方法通常有2種:起止同步法和集中式插入同步法。起止式同步比較簡單, 一般在數(shù)據(jù)碼元的開始和結(jié)束位置加入特定的起始和停止脈沖來表示數(shù)據(jù)幀的開始和結(jié)束。集中插入式同步法中插人的同步碼要求在接收端進行同步識別時出現(xiàn)偽同 步的概率盡可能低,并且要求該碼具有尖銳的自相關(guān)特性以便識別。7位巴克碼作為幀同步碼,其局部自相關(guān)函數(shù)為:
由上公式計算可知,7位巴克碼的自相關(guān)函數(shù)在j一0時出現(xiàn)尖銳的單峰特性。設(shè)計中采用2組同步幀頭作為同步碼,同步幀頭由7位巴克碼和1 bit的0組成。
到現(xiàn)在為止,待發(fā)數(shù)據(jù)bit數(shù)為:208×2+8×2-432 bits。經(jīng)調(diào)制解調(diào)后,接收端檢測幀同步信息,同步信息為2組11100100組成。每組同步信息高7位與7位巴克碼相比,允許出錯位數(shù)在1位以內(nèi)。設(shè) P為碼元錯誤概率,行為同步碼組的碼元數(shù),m為判決其允許碼組中的錯誤碼元最大數(shù),在本系統(tǒng)中行n=7,m=1。在P=0.01時,單一barker碼的 漏同步概率為:
當(dāng)2組同步幀都滿足時,幀同步建立,接收端保 存接下來的數(shù)據(jù)。無線通信電臺與FPGA以rs485連接,如圖7所示,F(xiàn)PGA檢測X是否為“0”,當(dāng)檢測到“0”,不接收端對接下來的數(shù)據(jù)X與本地巴 克碼對應(yīng)位進行位異或運算。當(dāng)檢測1 byte barker碼,錯1位以內(nèi)時,發(fā)出一value脈沖。當(dāng)檢測到2個value脈沖時,說明同步已建立,接收端開始存儲接下來的數(shù)據(jù)。
4 系統(tǒng)監(jiān)控模塊的實現(xiàn)
STM32與FPGA連接如圖8所示,由于ARM與FPGA的相互通信直接影響著控制器的性能,所以該并行總線的設(shè)計就成為一個非常關(guān)鍵的問題。該總線 可以包括芯片的地址總線(ADDR[021])、數(shù)據(jù)總線(DB[015])、控制總線、復(fù)位信號(nRST)以及中斷信號線(INT),其中控制總線包 括使能信號(nOE)、片選信號(nCS)、讀信號(nRD)、寫信號(nWE),這樣做的好處是,將FPGA芯片存儲器化,即STM32可通過對特定地 址的訪問來控制FPGA工作,并且可通過共同的復(fù)位信號將STM32與FPGA芯片同時復(fù)位,盡量避免總線競爭和冒險現(xiàn)象的出現(xiàn)。
STM32與FPGA同時接收命令,在解析完命令后,F(xiàn)PGA應(yīng)在規(guī)定的時間內(nèi)發(fā)送數(shù)據(jù),F(xiàn)H認組幀完成時,發(fā)出INT信號至黜2申請中斷。如果 STM32在規(guī)定時間內(nèi)沒有接收到FPGA發(fā)來的INT信號,將開始計時,計時時間內(nèi)未能接收INT信號,STM32將停止FPGA供電電源工作,由 STM32代替FPGA工作,保證整個系統(tǒng)能穩(wěn)定進行。
結(jié)論
在無線分布式采集系統(tǒng)設(shè)計中,采用了基于卷積編碼、Viterbi譯碼的編碼和互為備份的雙通道傳輸方案,利用了FPGA內(nèi)豐富的邏輯資源以及存儲資 源,實現(xiàn)了數(shù)據(jù)的遠距離同步可靠傳輸。加入備份數(shù)據(jù)通道后,通過FPGA內(nèi)部邏輯控制,在硬件上實現(xiàn)了對兩路數(shù)據(jù)的實時校驗及自動判選,提高了系統(tǒng)的穩(wěn)定 性和可靠性。相比于“備份-重傳”等機制,該方法實現(xiàn)簡單、實時性好,即使某一通道不能正常工作,系統(tǒng)仍能正常進行。該無線分布采集系統(tǒng),滿足了現(xiàn)在同步 觸發(fā)和數(shù)據(jù)量不大情況下的傳輸。本文提出的互為備份的雙通道編解碼、數(shù)據(jù)冗余傳輸機制,亦可應(yīng)用相關(guān)無線傳輸領(lǐng)域,以提高遠距離數(shù)據(jù)傳輸?shù)目煽啃院头€(wěn)定性。
4次