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