摘 要:PL3200芯片是一種兼容8051指令的SoC芯片,它包含多個功能擴展模塊,具有電能測量、載波擴頻等強大的功能。本文介紹PL3200的主要特點及其載波通信功能模塊,并針對該芯片提出一種電力線載波通信的實現(xiàn)方案。 關(guān)鍵詞:PL3200 直接序列擴頻 載波通信 8051 引 言: 擴頻通信就是待傳輸?shù)男畔?shù)據(jù)被偽隨機碼調(diào)制,實現(xiàn)頻譜擴展后再傳輸,接收端采用同樣的偽隨機碼進行解調(diào)及相關(guān)處理,恢復(fù)原始數(shù)據(jù)。這種通信方式與一般常見的窄帶通信方式不同,是擴展頻譜后進行寬帶通信,再在接收端進行相關(guān)處理,恢復(fù)成窄帶后解調(diào)數(shù)據(jù)。擴頻通信具有強抗干擾性、抗噪聲、抗多徑衰落、可碼分復(fù)用等優(yōu)點,是比較先進的通信技術(shù)。 電力線載波通信是指用電力線路作為通信媒體進行通信,目前被廣泛應(yīng)用于工業(yè)自動控制系統(tǒng)、電能管理系統(tǒng)、家用電器系統(tǒng)及計算機終端接口等場合。它利用現(xiàn)成的電力線路來傳送數(shù)據(jù),無需另外架設(shè)通信線路,也不占用現(xiàn)有的通信頻率資源,特別適用于組建小型局域網(wǎng)和實現(xiàn)大樓內(nèi)的自動控制。但在電力線上進行信號傳輸,工作環(huán)境惡劣,線路阻抗小、干擾大且時變性大,交流噪聲對數(shù)據(jù)的影響及信號的衰減也都很大。擴頻通信方式因其擴頻載波信號的帶寬通常較大,而受干擾的頻率范圍所占比例相對減小,因此可以較好的排除電力線上的隨機干擾。目前,電力線載波通信正朝著使用擴頻通信技術(shù)的方向發(fā)展。 PL3200是具有電力線載波通信功能的內(nèi)嵌8051增強型高速微處理器的新型SoC產(chǎn)品。該芯片采用新型的CMOS數(shù)/?;旌瞎に囍圃?,具有成本低、性能高、功能強大等特點,能夠很方便的應(yīng)用于電力線通信領(lǐng)域。 1 PL3200的主要特點 PL3200是內(nèi)嵌了8051指令的高速微處理器芯片,其軟件易于開發(fā),具有8/16位雙模式ALU,能夠8倍速于標準8051處理器,運行速度快,數(shù)據(jù)處理能力強。圖1為PL3200的基本功能結(jié)構(gòu)框圖?! ?/p>
PL3200芯片采用0.35μm超大規(guī)模數(shù)/?;旌螩MOS制造工藝,是擁有多項知識產(chǎn)權(quán)的SoC(System on Chip)設(shè)計。該芯片內(nèi)置高精度數(shù)字多功能電能計量電路,計量標準完全符合國際GB/T 17883和GB/T 17215;電流通道內(nèi)置可程序設(shè)定增益放大器(PGA);內(nèi)置了雙通道電流采樣、正/負功指示數(shù)字邏輯電路;內(nèi)置擴頻通信調(diào)制/解調(diào)電路;內(nèi)置 4%26;#215;32段LCD顯示控制/驅(qū)動電路或8%26;#215;8段LED顯示控制/驅(qū)動電路;內(nèi)置可數(shù)字頻率校正的實時鐘;內(nèi)置可對電能計量精度和實時鐘精度進行溫度分段線性補償?shù)臏囟葌鞲衅?內(nèi)置2.5V%26;#177;8%電壓源基準;內(nèi)置串行程序存儲器編程接口,支持在系統(tǒng)編程 (ISP);采用5V單電源供電;內(nèi)置完善的電源電壓監(jiān)測電路。 2 內(nèi)嵌微處理器部分功能概述 PL3200內(nèi)嵌的增強型8051兼容微處理器,配置了8/16位ALU、256B+1024B SRAM以及16KB E2PROM、3個8/16位定時器/計數(shù)器,1個看門狗定時器以及3個外部中斷,為用戶提供豐富的嵌入式資源和理想的應(yīng)用開發(fā)平臺。其增強型8051兼容微處理器,采用超級指令流水線架構(gòu),同等主頻情況下,8倍速于標準8051微處理器。另外,該芯片還具有兩個全雙工UART(通用異步收發(fā)器),一個可配置為38kHz的紅外通信模式,另一個可配置為RS485通信模式,提供了多種方便的數(shù)據(jù)傳輸方式。 3 載波通信模塊的原理及功能設(shè)置 PL3200芯片內(nèi)集成的載波通信單元采用QPSK調(diào)制方式,并擁有可變偽隨機碼速率(帶寬)的多地址通信技術(shù)。載波通信單元采用直接序列擴頻方式。在擴頻接收的過程中主要包括載波信號的捕獲和同步。 捕獲是接收模塊在擴頻序列精確同步前,搜索接收信號,使接收信號的擴頻序列與本地擴頻序列在相位上進入可同步保持的范圍之內(nèi),即二者的相位在一個擴頻序列碼元之內(nèi)。由于載波通信單元所選用的擴頻偽碼具有很強的自相關(guān)性,所以通過比較本地偽碼和接收序列之間的相關(guān)性與設(shè)定閾值的高低,就能在捕獲過程中判定是否停止偽碼的滑動,以完成捕獲。捕獲完成后進入跟蹤階段,動態(tài)地調(diào)整本地偽碼產(chǎn)生器的時鐘速率,使本地偽碼能夠自動地和接收到信號的偽隨機碼保持精確同步。擴頻序列的跟蹤電路采用全數(shù)字基帶延遲鎖定環(huán)(delay locked loop)電路。在載波通信單元每次置為發(fā)送態(tài)后,硬件會首先發(fā)送40個偽碼周期的全“1”序列,用于使接收端與發(fā)送端的偽隨機碼同步和用于識別幀頭的8 個偽碼周期的幀頭序列,軟件不需要進行相應(yīng)的處理。在載波通信單元置為接收態(tài)后,硬件會在每次偽隨機碼同步后,開始從數(shù)據(jù)流中搜尋幀頭序列。當(dāng)檢出幀頭序列后,才真正開始接收數(shù)據(jù),并以字節(jié)的方式送到SSC_BUF寄存器中。在載波通信單元,每處理一個字節(jié)的數(shù)據(jù),都是通過SSC_BUF寄存器與CPU之間進行數(shù)據(jù)交互實現(xiàn)的。 PL3200對擴頻數(shù)據(jù)采用QPSK調(diào)制方式,其載波中心頻率為120kHz,偽隨機碼速率可達到30kbps和15kbps。根據(jù)偽隨機碼的速率不同,數(shù)據(jù)速率可達到1kbps和500bps。由于該芯片采用了63位的Gold/Kasami序列,從而實現(xiàn)了碼分多址,其地址數(shù)目最多可達40個,其中32個Gold序列,8個Kasami序列,由于使用了擴頻技術(shù),可使各地址之間的干擾減到最小。 載波通信單元每次由收態(tài)轉(zhuǎn)為發(fā)態(tài)后,CPU應(yīng)在4ms內(nèi)將新的待發(fā)數(shù)據(jù)填入到SSC_BUF寄存器中,否則硬件將會在4ms后,自動由發(fā)態(tài)轉(zhuǎn)為收態(tài)。載波通信單元處于發(fā)態(tài)時,應(yīng)該在每次發(fā)送緩沖標志為空時,立即將新的待發(fā)數(shù)據(jù)填入SSC_BUF寄存器中。當(dāng)最后一字節(jié)待發(fā)數(shù)據(jù)向SSC_BUF寄存器填入完畢后,CPU進行的數(shù)據(jù)交換過程結(jié)束。載波通信單元在全部數(shù)據(jù)發(fā)送完成后,會自動由發(fā)態(tài)轉(zhuǎn)為收態(tài)(強制的由發(fā)態(tài)置為收態(tài)可能會導(dǎo)致最后一字節(jié)數(shù)據(jù)丟失)。在接收端,每次通信數(shù)據(jù)包正常接收完畢后,軟件可以通過對載波通信狀態(tài)寄存器(00H)的寫操作,來強制通知接收邏輯重新開始新的數(shù)據(jù)幀搜索。 PL3200載波通信單元的具體設(shè)定,是通過對載波通信寄存器組(SSC Register Bank)不同地址的寄存器,寫入對應(yīng)的控制字來實現(xiàn)的。設(shè)定功能時,先向載波通信控制字地址選擇寄存器(SSC_ADR)中寫入選中的載波通信寄存器組的地址,再向載波通信控制字數(shù)據(jù)寄存器(SSC_DAT)寫入設(shè)定的控制字。載波通信寄存器組(SSC Register Bank)各地址對應(yīng)的寄存器如表1所列。
在PL3200的載波通信寄存器組中,對地址為02H(載波通信控制寄存器1)、04H(偽隨機碼捕獲門限寄存器)和05H(偽隨機碼精同步門限寄存器)進行寫操作時,要取消寫保護,才可以將數(shù)據(jù)寫入對應(yīng)的寄存器中。若對寄存器不再進行寫操作時,應(yīng)將寫保護使能。取消寫保護的方法是,用程序向 SSC_ADR寄存器寫入FFH,選中寫保護寄存器的地址,再向SSC_DAT寄存器寫入FFH,即可取消寫保護,并由程序向相應(yīng)的寄存器進行寫操作。在對相應(yīng)的寄存器進行完寫操作后,由程序向SSC_ADR寄存器寫入FFH,再向SSC_DAT寄存器中寫入一非FFH的數(shù)據(jù),寫保護將會被使能。在載波通信寄存器組中,00H的寄存器用來指示載波通信單元處于收態(tài)還是發(fā)態(tài),以及數(shù)據(jù)和幀頭的接收發(fā)送標志;02H的寄存器可設(shè)置選擇偽碼的種類(Kasami 碼或是Gold碼)、偽隨機碼的地址選擇位(Kasami碼可選8個地址,Gold碼可選32個地址)以及偽隨機碼的速率(30K碼速率或15K碼速率) 及由此確定的數(shù)據(jù)速率(1Kbps或500bps);03H的寄存器用來設(shè)置偽隨機碼捕獲的門限閾值,在載波通信單元為接收態(tài)時,設(shè)定本地與接收到的偽隨機碼序列相位同步的捕獲門限值,硬件會按每個偽碼周期對本地產(chǎn)生的偽碼與接收到的偽碼進行計算,計算的結(jié)果與門限值比較,若小于門限值將進行一次相位調(diào)整,調(diào)整幅度為半個偽碼碼元寬度,直到高于設(shè)定的捕獲門限值時,才不再作調(diào)整,一般若偽碼碼率為30K時,捕獲門限值將調(diào)整至40H左右;05H的寄存器用于設(shè)定在接收狀態(tài)時,本地與發(fā)送端偽隨機碼序列相位同步的精同步門限值,當(dāng)高于偽碼捕獲門限值時,將進行精同步調(diào)整,硬件可以識別本地偽碼和接收到的偽碼相位是超前還是滯后,從而進行向前或向后的相位調(diào)整,當(dāng)小于設(shè)定的門限值時,認為精同步已經(jīng)同步,將不再進行調(diào)整。 4 應(yīng)用于擴頻載波通信的設(shè)計 應(yīng)用PL3200的擴頻載波通信功能,設(shè)計一個數(shù)據(jù)收發(fā)平臺。數(shù)據(jù)由PC機A的串口RS232發(fā)出,經(jīng)MAX232電平轉(zhuǎn)換后,送入芯片 PL3200。在芯片中,先由擴展串口UART接收數(shù)據(jù),經(jīng)內(nèi)嵌8051的控制處理,送入載波通信單元,對數(shù)據(jù)進行直接序列擴頻,擴頻后的信號經(jīng) 120kHz的載波頻率調(diào)制后輸出。 此信號經(jīng)功率放大后可由線圈耦合到低壓電力線上,實現(xiàn)電力線載波通信。在接收端,先通過線圈將電力線上的信號耦合出來,對信號進行濾波限幅,將限幅后的信號送入PL3200進行捕獲、同步及解擴處理,經(jīng)由內(nèi)嵌8051的控制,由芯片的UART串口,經(jīng)電平轉(zhuǎn)換后,送到PC機B的RS232接口,進入PC 機。反之,B的數(shù)據(jù)按相反的路徑傳送給A。整個平臺的結(jié)構(gòu)框圖如圖2所示?! ?/p>
載波通信為總線方式通信,所以載波單元的常態(tài)必須設(shè)置為接收態(tài),對載波模塊可分配不同的通信地址。由于載波通信速率相對于主頻低很多,為提高CPU效率,數(shù)據(jù)的接收和發(fā)送均設(shè)計為中斷方式處理,每次進入中斷,完成對數(shù)據(jù)接收或發(fā)送的處理操作。 按照數(shù)據(jù)的傳送過程,用C語言編寫芯片的控制程序,設(shè)計主程序流程如圖3所示?! ?/p>
系統(tǒng)在上電后進入主程序,在主程序的延時階段進行復(fù)位操作,隨后進行資源初始化操作,對寄存器作初始化設(shè)置。為了防止程序因為意外原因而導(dǎo)致死機,PL3200專門設(shè)計了一套看門狗電路,當(dāng)程序死機后,經(jīng)過一段由寄存器控制的定時時間后,看門狗電路重新復(fù)位8051。所以,程序在運行時,每隔一段時間間隔,就要不斷地復(fù)位看門狗電路。將復(fù)位看門狗電路的操作編成中斷子程序,每隔一段時間后對變量賦值,復(fù)位看門狗電路,此即喂狗操作。在進行部分寄存器的初始化重置后,程序依次檢查載波接收中斷和串口接收中斷。如有載波數(shù)據(jù),則進入載波接收中斷,將數(shù)據(jù)送入載波緩存數(shù)組,隨后送串口發(fā)送。如有串口數(shù)據(jù),則按照協(xié)議格式將數(shù)據(jù)取出,存入串口數(shù)據(jù)緩存數(shù)組,待數(shù)據(jù)接收完整后,進入載波發(fā)送中斷,將緩存中的數(shù)據(jù)送載波發(fā)送,成功后將標志位清除。主程序再次進入循環(huán),檢測載波中斷或串口中斷。主程序?qū)χ袛噙M行循環(huán)檢測,直到有數(shù)據(jù)中斷發(fā)生,進入中斷處理程序。 當(dāng)載波通信單元中斷使能位有效時,CPU的中斷2將會被配置成在載波通信中,用于數(shù)據(jù)字節(jié)發(fā)送或接收的中斷。發(fā)生載波中斷時,程序查詢載波通信寄存器地址00H的bit0位:當(dāng)該位為0時,進入載波接收狀態(tài);當(dāng)該位為1時,進入載波發(fā)送狀態(tài)。 載波接收中斷的流程如圖4所示。在載波接收的過程中,先要查詢載波通信寄存器00H的幀頭標志位,如收到幀頭,且芯片處于等待接收狀態(tài),則接收數(shù)據(jù)的第一字節(jié);如接收的不是幀頭,則判斷幀頭是否已被接收,而繼續(xù)接收后續(xù)字節(jié)。最后,將接收的數(shù)據(jù)送入載波數(shù)據(jù)緩存數(shù)組,如接收字節(jié)數(shù)超過設(shè)定值,則置接收成功位給串口,并清除正在接收狀態(tài)位,結(jié)束載波中斷,進入串口發(fā)送中斷?! ?/p>
載波發(fā)送中斷的流程如圖5所示。當(dāng)串口接收完數(shù)據(jù)后,置載波發(fā)送標志位,進入載波發(fā)送中斷。中斷程序?qū)⒋诰彺鏀?shù)據(jù)組中的數(shù)據(jù)按字節(jié)送入載波緩存發(fā)送,直至載波發(fā)送的字節(jié)數(shù)超過設(shè)定字節(jié)數(shù),結(jié)束載波發(fā)送,并清串口緩存數(shù)據(jù)組的數(shù)據(jù)。在清除載波發(fā)送標志后,結(jié)束中斷,返回主程序,進行下一輪的發(fā)送接收查詢?! ?/p>
結(jié) 語 使用SoC芯片PL3200設(shè)計電力線載波擴頻數(shù)據(jù)平臺,應(yīng)用極其簡便,使用C語言來進行程序設(shè)計非常方便。同時,由于使用靈活的ISP編程方式,使程序的修改及下載也十分方便,可以靈活的進行功能擴展。