摘要:FM0編碼以其便于位同步提取,、頻譜帶寬較窄、實(shí)現(xiàn)電路簡單而在ETC中得到廣泛的應(yīng)用,,線路FM0解碼模塊是ETC系統(tǒng)基帶電路重要組成部分,,本文基于ETC系統(tǒng)中車載單元(On board unit,OBU)與路邊單元(Road sideunit,,RSU)之間的短距離雙向通信,,以提高FM0解碼速度的目的,根據(jù)FM0鳊碼原則,,在FPGA軟件環(huán)境下用高級硬件描述語言VHDL實(shí)現(xiàn)FM0解碼器設(shè)計(jì),,給出程序代碼,,在Quartus II環(huán)境下仿真,,并通過邏輯分析儀觀察波形。同等功能下,,解碼時(shí)間是圖形輸入法的五分之一,。
關(guān)鍵詞:FM0;短距離通信,;VHDL,;FPGA;數(shù)據(jù)解碼
電子不停車收費(fèi)系統(tǒng)(ETC)興起于80年代,,主要適用于道路,、大橋和隧道收費(fèi)站,由于過往車輛通過收費(fèi)站時(shí)無須停車便能夠?qū)崿F(xiàn)自動收費(fèi),,大大改善了目前普遍存在的路橋收費(fèi)站停車收費(fèi)造成交通堵塞的惡劣狀況,受到各國政府和企業(yè)的廣泛重視,許多世界著名的電子公司競相開始研制,,先后在北美,、歐洲、日本,、澳洲,、新加坡等地廣泛應(yīng)用,,已經(jīng)成為智能交通的一大支柱產(chǎn)業(yè)。我國的ETC系統(tǒng)起步在上世紀(jì)90年代,,主要靠引進(jìn)國外的先進(jìn)技術(shù),,雖然也取得了積極的效果,但由于起步晚,,國內(nèi)公路ETC工作仍處于試驗(yàn)和探索階段,。
整個(gè)ETC系統(tǒng)主要由車載單元(On board unit,OBU)與路邊單元(Road side unit,,RSU)組成,,OBU與RSU之間的短距離雙向通信屬于專用短程通信(DSRC-Dedicated Short Range Communications)協(xié)議規(guī)范的范疇,該協(xié)議中的物理層可配置為A和B兩個(gè)可選配置,,其中配置A的上下行鏈路都定義為FM0,,主要用于基本的ETC應(yīng)用。線路FM0解碼模塊是ETC系統(tǒng)基帶電路重要組成部分,,這使得對FM0解碼器的研究和優(yōu)化提上日程,。
本文介紹了在FPGA軟件環(huán)境下用高級硬件描述語言VHDL實(shí)現(xiàn)FM0解碼器設(shè)計(jì),最終實(shí)現(xiàn)ETC系統(tǒng)中OBU和RSU中的FM0解碼模塊的邏輯功能,。
1 FM0碼介紹
FM0編碼(即Bi-Phase Space)即為雙相間隔碼編碼,,編碼規(guī)則是在每個(gè)碼元的開始、結(jié)束以及‘0’碼元正中間時(shí)刻發(fā)生跳變,,其余時(shí)刻不變化,。FM0編碼以其便于位同步提取、頻譜帶寬較窄,、實(shí)現(xiàn)電路簡單而在短距離通信中得到了廣泛的應(yīng)用,。編碼的示意圖如圖1所示。
圖1示出了代碼序列為10110001時(shí),,F(xiàn)M0碼的波形,。圖1(a)是源代碼序列,圖1(b)是FM0碼的波形,。比較圖1(a)和圖1(b)兩個(gè)波形可以看出,,F(xiàn)M0碼實(shí)際上只要用一個(gè)與原始信號同步的時(shí)鐘信號的跳變沿(上升沿或下降沿)以及‘0’碼元對應(yīng)的跳變沿(上升沿或下降沿)觸發(fā)翻轉(zhuǎn),即可完成數(shù)據(jù)編碼,。
2 FM0解碼器的實(shí)現(xiàn)方案選擇
FM0解碼器的實(shí)現(xiàn)方法主要可分為以下3種:第一種是使用專用集成芯片,;第二種是軟件編程實(shí)現(xiàn),包括PC機(jī)和單片機(jī),;第三種是使用可編程邏輯器件實(shí)現(xiàn),,主要使用FPGA器件。目前市面上常用的FM0碼的解碼芯片比較少,,例如STR715芯片,,并且專業(yè)芯片的使用存在一定限制,。軟件編程方法盡管具有硬件結(jié)構(gòu)簡單、功能靈活等特點(diǎn),,但程序運(yùn)行占用處理器資源多,,執(zhí)行速度慢,對信號的延時(shí)和同步性不易預(yù)測,,只適用于低速信號處理,。使用FPGA器件實(shí)現(xiàn)FM0解碼,能夠有效綜合前兩種方法的優(yōu)點(diǎn),,因?yàn)镕PGA采用硬件處理技術(shù),,可反復(fù)編程,能夠兼顧速度和靈活性,,并能并行處理多路信號,,實(shí)時(shí)性能夠預(yù)測和仿真。由于解碼的算法多為邏輯運(yùn)算和時(shí)序運(yùn)算,,采用靈活性極大的可編程邏輯器件FPGA完成FM0編解碼更適合,。
作為ALTERA公司第四代可編程邏輯器件開發(fā)軟件,QuartusⅡ在設(shè)計(jì)流程的每個(gè)階段都提供了圖形模式和命令行模式等極為便利的輸入手段,,具有快速的編譯和直接易懂的器件編程功能,、對眾多種芯片的支持和百萬門級的設(shè)計(jì)能力。QuartusⅡ?yàn)镕PGA設(shè)計(jì)者提供了原理圖輸入,、HDL輸入,、圖形設(shè)計(jì)輸入、內(nèi)存編輯輸入等輸入方法,。
目前,,原理圖輸入法已用于FM0編解碼器設(shè)計(jì),,盡管方式直觀,、簡單易行,但對設(shè)計(jì)者的硬件水平要求高,,編解碼時(shí)間較長,。
硬件描述語言VHDL[10]就是用語言描述替代圖形化(元件拼湊)設(shè)計(jì),簡化了設(shè)計(jì)工作,,節(jié)約了開發(fā)的時(shí)間,,大大縮短編碼時(shí)間,對于設(shè)計(jì)者的硬件水平要求不高,,比FPGA設(shè)計(jì)中較直觀的原理圖輸入法更具優(yōu)勢,,更具推廣價(jià)值。
3 FM0解碼器的設(shè)計(jì)
本文以RSU中的BST信號作為輸入信號,,進(jìn)行FM0解碼設(shè)計(jì),,該信號的傳輸速率為256 kB/s,。由FM0編碼規(guī)則可反推之,如果在一個(gè)碼元時(shí)間內(nèi)解碼數(shù)據(jù)連續(xù)跳變兩次,,則為‘0’電平,,否則為‘1’電平。本文采用帶有復(fù)位端口的同步計(jì)數(shù)器原理產(chǎn)生同步時(shí)鐘信號,,因此采用16倍速率的時(shí)鐘信號,。
如圖2所示,解碼原理分為同步時(shí)鐘信號產(chǎn)生和在一個(gè)碼元時(shí)間解碼數(shù)據(jù)連續(xù)兩次跳變檢測兩部分,。
3.1 同步時(shí)鐘信號產(chǎn)生
用16倍數(shù)據(jù)速率的時(shí)鐘信號對輸入信號RDIN采樣得到data_temp1信號,,將采樣信號data_temp1延遲一個(gè)16倍時(shí)鐘周期(0.5μs)得到data_temp2信號,data_temp1與data_temp2相異或得到data_temp3信號,,如果信號跳變data_temp3為‘1’,,否則為‘0’,得到RDIN跳變時(shí)的脈沖clr信號,,當(dāng)clr=‘1’時(shí),,清0,當(dāng)clr=‘0’時(shí),,對輸入時(shí)鐘信號clk_in進(jìn)行2,、4、8和16分頻,,分別產(chǎn)生同步時(shí)鐘信號Q0(2 048 kB/s),、Q1(1 024 kB/s)、Q2(512 kB/s),、Q3(256 kB/s),。
16分頻后得到的Q3(256 kB/s)時(shí)鐘信號不能直接作為解碼輸出的同步信號,clr信號在輸入信號跳變時(shí)產(chǎn)生脈沖,,盡管輸入信號RDIN與Q3速率相同,,而clr信號發(fā)生在Q3高電平或低電平處,使Q3受到影響,,輸出的不是完整的256 kB/s時(shí)鐘信號,。因此為了得到完整的16分頻時(shí)鐘信號,需將8分頻時(shí)鐘信號再次2分頻得到時(shí)鐘信號CLKO,。
VHDL源代碼如下:
3.2 在一個(gè)碼元時(shí)間解碼數(shù)據(jù)連續(xù)兩次跳變檢測
用4分頻信號Q1對data_temp1信號采樣得到data_temp4信號,,將采樣信號data_temp4延遲一個(gè)輸入信號RDIN的四分之一碼元周期得到data_temp5信號,data_temp4與data_temp5相同或得到data_temp6信號,。用時(shí)鐘信號CLKO的上升和下降沿同時(shí)檢測data_temp6信號,,求或。如果求或結(jié)果為‘1’則表示時(shí)鐘的上升和下降沿有一次得到‘1’電平,即在半個(gè)碼元的時(shí)間間隔內(nèi)解碼數(shù)據(jù)沒有跳變,,根據(jù)FM0編碼規(guī)則此時(shí)數(shù)據(jù)應(yīng)該是‘1’電平,,解碼輸出DEOUT輸出為‘1’電平;否則,,如果求或結(jié)果為‘0’則表示時(shí)鐘的上升和下降沿均得到‘0’電平,,即在半個(gè)碼元的時(shí)間間隔內(nèi)解碼數(shù)據(jù)有跳變,根據(jù)FM0編碼規(guī)則,,此時(shí)數(shù)據(jù)應(yīng)該是‘0’電平,,解碼輸出DEOUT輸出為‘0’電平。
VHDL源代碼如下:
4 結(jié)果仿真
將設(shè)計(jì)好的FM0解碼程序進(jìn)行封裝,,封裝圖如圖3所示,。
以BST信號為例,解碼數(shù)據(jù)輸入端RDIN輸入BST信號,,在解碼時(shí)鐘輸入端clk_in輸入16倍數(shù)據(jù)速率時(shí)鐘信號(4 096 kB/s),。在QuartusⅡ軟件支持下完成邏輯綜合,將編程數(shù)據(jù)寫入選定的FPGA芯片進(jìn)行測試,,可通過邏輯分析儀看到波形,。
圖4依次給出了RDIN、clk_in,、clr,、data_temp1、data_temp4,、data_temp5,、data_temp6、Q1,、Q2,、Q3、CLKO和DEOUT的仿真波形,。從仿真結(jié)果來看,,解碼模塊很好地完成了任務(wù),可測得整個(gè)解碼過程僅用了8 μs,。
同樣的解碼過程用現(xiàn)有的圖形輸入法完成需要40μs,,而用VHDL語言編寫只需8 μs,,解碼時(shí)間是圖形輸入法的五分之一,。
5 結(jié)束語
采用高級硬件描述語言VHDL在FPGA上實(shí)現(xiàn)FM0解碼設(shè)計(jì),為電子系統(tǒng)的設(shè)計(jì)帶來了極大地靈活性,。將復(fù)雜的硬件設(shè)計(jì)過程轉(zhuǎn)化為在特定的軟件平臺上通過軟件設(shè)計(jì)來完成,,從而使設(shè)計(jì)工作簡化,大大節(jié)約了開發(fā)時(shí)間,并大幅度縮短FM0解碼時(shí)間,。
隨著ETC系統(tǒng)的日益普及,,對FM0解碼設(shè)計(jì)的需求也大幅提高,因此采用較合適的方法設(shè)計(jì)出高性能的FM0解碼器是十分有意義的,。