張凱
【摘要】現(xiàn)代數(shù)字電視系統(tǒng),需要精準(zhǔn)的時(shí)鐘信號(hào),重點(diǎn)設(shè)備也需要進(jìn)行完善的授時(shí)。對(duì)數(shù)字電視系統(tǒng)而言,由于播出方式的自動(dòng)化,對(duì)時(shí)間的準(zhǔn)確性和一致性有高度的要求。電視臺(tái)內(nèi)部的播出和設(shè)備網(wǎng)管系統(tǒng),需要與各系統(tǒng)、各種設(shè)備進(jìn)行對(duì)接,時(shí)鐘系統(tǒng)顯得尤為重要。準(zhǔn)確的時(shí)鐘信號(hào),可以保證臺(tái)內(nèi)所有設(shè)備均接收使用相同的時(shí)鐘信號(hào),用以保證播出的準(zhǔn)確性與安全性。在地球站的播出中,需要保證時(shí)鐘系統(tǒng)穩(wěn)定、可靠。對(duì)于時(shí)鐘系統(tǒng),要做好時(shí)鐘信號(hào)的同步, 保證系統(tǒng)內(nèi)所有設(shè)備處于同一步調(diào)。目前常用的方法是使用GPS和互聯(lián)網(wǎng)校時(shí),因播出機(jī)房?jī)?nèi)GPS信號(hào)很弱,GPS接收器放在室外容易引入干擾和雷擊,因此采用了通過(guò)互聯(lián)網(wǎng)服務(wù)器獲取標(biāo)準(zhǔn)時(shí)間,使用單片機(jī)隔離互聯(lián)網(wǎng)的方式構(gòu)建局域網(wǎng)時(shí)間服務(wù)器。
【關(guān)鍵詞】單片機(jī);網(wǎng)絡(luò)安全;網(wǎng)絡(luò)校時(shí)
中圖分類號(hào):TN92? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? ?DOI:10.12246/j.issn.1673-0348.2021.05.042
計(jì)算機(jī)網(wǎng)絡(luò)的飛速發(fā)展,使得基于網(wǎng)絡(luò)的計(jì)算機(jī)應(yīng)用也在迅速增加。網(wǎng)絡(luò)信息系統(tǒng)給社會(huì)帶來(lái)極大的經(jīng)濟(jì)效益,但安全問(wèn)題也隨之而來(lái)。對(duì)于數(shù)字電視系統(tǒng)而言,和互聯(lián)網(wǎng)連接會(huì)有比較大的網(wǎng)絡(luò)安全風(fēng)險(xiǎn),設(shè)備面臨網(wǎng)絡(luò)攻擊,暴露,用戶的口令、數(shù)據(jù)庫(kù)的信息等內(nèi)容有遭到竊取的風(fēng)險(xiǎn),使播出面臨網(wǎng)絡(luò)風(fēng)險(xiǎn)的問(wèn)題,所以網(wǎng)絡(luò)安全越來(lái)越受到重視和關(guān)注。對(duì)于某些重要設(shè)備,不需聯(lián)網(wǎng)的計(jì)算機(jī)一般都做到和互聯(lián)網(wǎng)物理隔絕,確保網(wǎng)絡(luò)和信息安全,完全杜絕了各種可能的外部網(wǎng)絡(luò)的攻擊或泄密。因?yàn)閷?shí)現(xiàn)的任務(wù)很輕,現(xiàn)在單片機(jī)的性能已能滿足需求,所以使用單片機(jī)完成此項(xiàng)功能,同時(shí)也提高設(shè)備的可靠性。
開(kāi)源單片機(jī)開(kāi)發(fā)平臺(tái)比較流行的是Arduino,它不僅是一個(gè)優(yōu)秀的硬件開(kāi)發(fā)平臺(tái),更是硬件開(kāi)發(fā)的趨勢(shì)。Arduino拋開(kāi)了傳統(tǒng)硬件開(kāi)發(fā)的復(fù)雜操作,不需要了解硬件的內(nèi)部結(jié)構(gòu)和寄存設(shè)置,也不需要過(guò)多的電子知識(shí)和編程知識(shí),而只需通過(guò)簡(jiǎn)單的學(xué)習(xí),便可利用它開(kāi)發(fā)出各種出色的項(xiàng)目,大大節(jié)約學(xué)習(xí)成本,縮短開(kāi)發(fā)周期。
1. 時(shí)間服務(wù)器的硬件組成
時(shí)間服務(wù)器利用兩個(gè)Arduino主板,Arduino主板A和Arduino主板B,以及兩塊網(wǎng)絡(luò)模塊,一個(gè)電子時(shí)鐘構(gòu)建一個(gè)與外網(wǎng)隔離的服務(wù)器端。網(wǎng)絡(luò)模塊采用W5100,每個(gè)W5100模塊通過(guò)SPI接口分別和每塊主板相連接,主板A和主板B通過(guò)串口相連接,實(shí)時(shí)時(shí)鐘模塊DS3231通過(guò)I2C總線與主板B相連接,各個(gè)硬件之間的連接組成的系統(tǒng)圖1。這樣就避免了與外網(wǎng)直接連接而帶來(lái)的外部網(wǎng)絡(luò)攻擊的風(fēng)險(xiǎn)。從而使得本站的內(nèi)網(wǎng)和外網(wǎng)形成一個(gè)有效的物理隔離。確保內(nèi)部網(wǎng)絡(luò)和設(shè)備免受侵?jǐn)_。
Aruino主板的種類有很多,在這里我們選用了功能比較強(qiáng)大和穩(wěn)定性更強(qiáng)的Aruino MAGE2560。它的核心芯片主要是封裝的AVR架構(gòu),它是一種基于AVR增強(qiáng)RISC架構(gòu)的低功耗CMOS8位微控制器,具有JTAG、中斷、SPI、TWI(兼容I2C)、USART、PWM等硬件接口,方便軟件調(diào)試和外部設(shè)備的連接。通過(guò)在單個(gè)時(shí)鐘周期中執(zhí)行強(qiáng)大的指令實(shí)現(xiàn)了接近1MIPS/MHz的吞吐量,允許系統(tǒng)設(shè)計(jì)人員優(yōu)化功耗和處理速度。
W5100是一種款多功能的單片網(wǎng)絡(luò)接口芯片,內(nèi)部集成有10/100以太網(wǎng)控制器,主要應(yīng)用于高集成、高穩(wěn)定、高性能和低成本的嵌入式系統(tǒng)中,使用W5100可以實(shí)現(xiàn)沒(méi)有操作系統(tǒng)的Internet連接,W5100內(nèi)部集成了全硬件的TCP/IP協(xié)議棧、以太網(wǎng)介質(zhì)傳輸層和物理層(PHY)。硬件TCP/IP協(xié)議棧支持TCP、UDP、IPv4、ICMP、ARP、IGMP和PPPoE,這些協(xié)議已經(jīng)連續(xù)多年在各種實(shí)際應(yīng)用中得以證明,W5100內(nèi)部還集成有16KB存儲(chǔ)器用于數(shù)據(jù)傳輸。使用W5100不需要考慮以太網(wǎng)控制,只要進(jìn)行簡(jiǎn)單的端口(Socket)編程。W5100提供3種接口:直接并行總線、間接并行總線和SPI總線與MCU接口非常簡(jiǎn)單,就像訪問(wèn)外部存儲(chǔ)器一樣。
DS3231是一個(gè)由溫度補(bǔ)償32kHz晶體振蕩器驅(qū)動(dòng)的串行RTC,提供了一個(gè)穩(wěn)定和準(zhǔn)確的參考時(shí)鐘,在環(huán)境溫度從-40°C到+85°C下保持RTC每年±2分鐘的精度。RTC是一個(gè)低功耗時(shí)鐘/日歷,有兩個(gè)可編程的時(shí)間報(bào)警和一個(gè)可編程的方波輸出,時(shí)鐘/日歷提供秒、分鐘、小時(shí)、日、日、月和年信息,月末的日期會(huì)自動(dòng)調(diào)整天數(shù)少于31天的月份,包括閏年的更正。時(shí)鐘運(yùn)行在24小時(shí)或12小時(shí)的格式與AM/PM指示器。內(nèi)部寄存器可以通過(guò)I2C總線接口訪問(wèn)。一個(gè)溫度補(bǔ)償?shù)碾妷簠⒖己捅容^電路監(jiān)測(cè)VCC的水平,以檢測(cè)電源故障,并在必要時(shí)自動(dòng)切換到備用電源。RST引腳提供外部按鈕功能,并作為電源故障事件的指示器。
2. 時(shí)間服務(wù)器軟件
首先搭建一個(gè)集成開(kāi)發(fā)環(huán)境,簡(jiǎn)稱IDE。Arduino官網(wǎng)平臺(tái)下載需要的IDE版本,下載完成后,按步驟進(jìn)行安裝,開(kāi)發(fā)環(huán)境就完成后就可以在Arduino進(jìn)行單片機(jī)開(kāi)發(fā)了。
Arduino主板A與網(wǎng)絡(luò)模塊連接就構(gòu)成了一個(gè)互聯(lián)網(wǎng)NTP時(shí)間服務(wù)器的客服端,通過(guò)NTP時(shí)間協(xié)議來(lái)獲得一個(gè)標(biāo)準(zhǔn)時(shí)間。然后按照年月日時(shí)分秒的格式通過(guò)串口發(fā)送給Arduino主板B,以方便Arduino主板B校準(zhǔn)內(nèi)部時(shí)間。Arduino主板A程序流程圖如圖(2):
初始化的過(guò)程主要有設(shè)置動(dòng)態(tài)IP地址、MAC地址、NTP Server地址、時(shí)區(qū)、UDP端口、看門(mén)狗、串口1/2的波特率以及校驗(yàn)位。獲取標(biāo)準(zhǔn)時(shí)間的發(fā)送請(qǐng)求后看是否獲得應(yīng)答,獲得應(yīng)答就通過(guò)串口2將時(shí)間發(fā)送出去,沒(méi)有得到應(yīng)答延時(shí)200ms再次請(qǐng)求,直到得到應(yīng)答,程序設(shè)定延時(shí)10分鐘后再次重復(fù)以上流程。
Arduino主板B與網(wǎng)絡(luò)模塊和實(shí)時(shí)時(shí)鐘DS3231連接組成內(nèi)部局域網(wǎng)的NTP服務(wù)器,通過(guò)交換機(jī)給內(nèi)部的局域網(wǎng)提供一個(gè)安全可靠的時(shí)間。兩個(gè)單片機(jī)經(jīng)過(guò)串口通信后,Arduino主板B獲得Arduino主板A發(fā)送的時(shí)間后對(duì)內(nèi)部實(shí)時(shí)時(shí)鐘進(jìn)行校準(zhǔn)。Arduino主板B程序流程圖(3)如下:
初始化的過(guò)程主要有設(shè)置靜態(tài)IP地址、MAC地址、串口2波特率以及校驗(yàn)位、看門(mén)狗,實(shí)時(shí)時(shí)鐘DS3231通過(guò)串口2接收到Arduino主板A發(fā)送的時(shí)間后,按照年月日時(shí)分秒的格式與實(shí)時(shí)時(shí)鐘DS3231的時(shí)間行比對(duì),如果比對(duì)時(shí)間不一致則調(diào)整實(shí)時(shí)時(shí)鐘DS3231的時(shí)間。
Arduino主板B接收到計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)發(fā)送的時(shí)間請(qǐng)求時(shí),讀取DS3231的時(shí)間再通過(guò)網(wǎng)絡(luò)模塊W5100發(fā)送給內(nèi)部局域網(wǎng)的計(jì)算機(jī)。
3. 總結(jié)
該時(shí)間服務(wù)器在地球站經(jīng)過(guò)兩年多時(shí)間的運(yùn)行,滿足了內(nèi)部局域網(wǎng)計(jì)算機(jī)時(shí)間一致性。廣播電視系統(tǒng)中要求的安全等級(jí)都比較高,所以在解決問(wèn)題時(shí),首先要把安全性放在第一位。本設(shè)備就是首先考慮到安全性的前提下,通過(guò)串行接口隔離兩個(gè)網(wǎng)絡(luò)的辦法來(lái)解決問(wèn)題,希望通過(guò)此案例給廣大從業(yè)人員提供解決問(wèn)題的一點(diǎn)思路。
參考文獻(xiàn):
[1]陳呂洲.ARDUINO程序設(shè)計(jì)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社.2013.
[2]譚麗.基于NTP局域網(wǎng)時(shí)間同步系統(tǒng)研究與實(shí)現(xiàn)[c].大慶石油學(xué)院,2009.215505.
[3]Arduino官方網(wǎng)站.http://www.arduino.cc