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