時(shí)間:2023-03-10 14:47:48
序論:好文章的創(chuàng)作是一個(gè)不斷探索和完善的過程,我們?yōu)槟扑]十篇接口設(shè)計(jì)論文范例,希望它們能助您一臂之力,提升您的閱讀品質(zhì),帶來更深刻的閱讀感受。
2ISA總線邏輯接口設(shè)計(jì)
ISA總線:(IndustryStandardArchitecture:工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu))是IBM公司為PC/AT電腦而制定的總線標(biāo)準(zhǔn),也稱為AT標(biāo)準(zhǔn),為8/16位體系結(jié)構(gòu),最高工作頻率為8MHz,數(shù)據(jù)傳輸率大約是16MB/S,地址線24條,可尋訪16M字節(jié)地址單元。由于本文使ISA總線工作在8位I/O傳輸模式,使用了ISA總線信號(hào)中的時(shí)鐘線(ISA_CLK)、地址線(ISA_ADDR):A0~A9、數(shù)據(jù)線(ISA_DATA):D0~D7、讀信號(hào)線(ISA_IOR)、寫信號(hào)線(ISA_IOW)、地址鎖存使能(ISA_ALE)、地址選通信號(hào)(ISA_AEN)等。本設(shè)計(jì)采用了與C語言較為相似的VERILOGHDL硬件描述語言對(duì)ISA總線邏輯接口進(jìn)行了描述。
本文要實(shí)現(xiàn)的是ISA接口通過FPGA訪問串口芯片16C554,16C554是內(nèi)部帶有16字節(jié)收發(fā)FIFO的通用異步收發(fā)器,具有獨(dú)立的收發(fā)控制電路。4路標(biāo)準(zhǔn)的MODEM接口,通過軟件可分別設(shè)置允許每一路中斷。波特率、數(shù)據(jù)幀格式等也都可由軟件編程設(shè)置。具體硬件結(jié)構(gòu)如圖。由圖2可知上位機(jī)通過ISA總線對(duì)串口芯片16C554串口芯片的訪問需要FPGA作為橋接媒介,因此串口芯片的控制信號(hào)均由FPGA給出,其邏輯控制信號(hào)的VERILOG描述如下。當(dāng)上位機(jī)對(duì)串口芯片進(jìn)行讀寫時(shí),首先需要通過FPGA將ISA地址信號(hào)譯碼為芯片的片選信號(hào),設(shè)置串口芯片基地址為0x300,由于9位地址線的低三位為串口芯片的內(nèi)部地址,因此芯片的片選信號(hào)由地址總線的高七位決定。
3結(jié)束語
2信息接口設(shè)計(jì)
在第2節(jié)中,對(duì)系統(tǒng)應(yīng)用的信息接口進(jìn)行了介紹,并對(duì)其功能進(jìn)行了較為詳細(xì)的描述,根據(jù)其功能和作用位置的不同,可以將其分為信息接收接口、信息交付接口和信息擴(kuò)展接口3類。
2.1信息接收接口信息接收接口的主要功能是:接收由硬件提交的信息,并對(duì)信息的格式進(jìn)行檢驗(yàn)和分類,最終遞交給中央處理模塊。其主要結(jié)構(gòu)和工作流程如圖5所示。如圖5所示,在信息接收接口中,收到的信息首先存儲(chǔ)在消息緩沖中,信息格式模式匹配單元通過預(yù)先定義的合法消息格式,對(duì)消息緩沖中的信息進(jìn)行匹配,監(jiān)測(cè)其合法性,當(dāng)出現(xiàn)異常時(shí),反饋控制單元調(diào)度消息緩沖,根據(jù)異常消息的來源,向相應(yīng)的硬件接口做出反饋,進(jìn)而將異常消息丟棄或封閉/重置相應(yīng)的硬件接口。合法的消息被送入消息分類單元,該單元維護(hù)若干個(gè)列表,列表中存儲(chǔ)格式化的消息數(shù)據(jù)。當(dāng)中央處理模塊或其他模塊,調(diào)用相應(yīng)的功能時(shí),則通過相應(yīng)的功能子接口,將對(duì)應(yīng)的數(shù)據(jù)取出并交給相應(yīng)的功能。信息接收接口是基礎(chǔ)硬件設(shè)施和軟件處理單元之間的橋梁,通過擴(kuò)展消息格式化的適配功能,能夠有效拓展支持的硬件種類,從而使得系統(tǒng)的功能更加強(qiáng)大。
2.2信息交付接口信息接收接口面向的是底層硬件設(shè)備和系統(tǒng),而信息交付接口面向的是上層的用戶和用戶界面,其功能是:將中央處理模塊處理完畢的數(shù)據(jù)和信息,按照不同的種類遞交給用戶界面,在用戶界面中進(jìn)行集成和顯示。其主要結(jié)構(gòu)和工作流程如圖6所示。與信息接收接口的不同之處在于,交付接口擔(dān)負(fù)了雙向的信息傳遞功能。首先,通過數(shù)據(jù)調(diào)用單元可以將處理完成的數(shù)據(jù)交付給用戶界面使用,根據(jù)類型的不同有圖形化數(shù)據(jù)、字節(jié)化數(shù)據(jù)、GIS數(shù)據(jù)等,用戶界面通過調(diào)用這些不同種類的數(shù)據(jù),即可按照實(shí)際需求,合成和顯示出包含豐富內(nèi)容的導(dǎo)航信息圖示。同時(shí),用戶通過用戶界面對(duì)導(dǎo)航信息系統(tǒng)進(jìn)行控制、設(shè)置或調(diào)用其需要的單個(gè)數(shù)據(jù),此時(shí)用戶指令被傳遞到用戶指令解釋單元,若用戶指令合法,則通過編譯器對(duì)指令進(jìn)行解釋,產(chǎn)生針對(duì)系統(tǒng)每個(gè)模塊的具體指令,并通過控制信息產(chǎn)生單元將具體指令轉(zhuǎn)換為系統(tǒng)模塊能夠識(shí)別的具體控制信息。然后利用系統(tǒng)控制接口,對(duì)系統(tǒng)的軟件和硬件進(jìn)行直接的控制或設(shè)置等操作。信息交付接口是實(shí)現(xiàn)用戶界面的基礎(chǔ),其并不關(guān)心用戶界面如何實(shí)現(xiàn),終端用戶有著怎樣的具體需求,僅僅是提供了一系列標(biāo)準(zhǔn)化的數(shù)據(jù)交付接口,這樣就可以根據(jù)不同類型的船舶和不同的應(yīng)用場(chǎng)景,設(shè)計(jì)不同的用戶界面,而不需要受到核心軟件系統(tǒng)的束縛。
2.3信息擴(kuò)展接口與前2種接口不同,信息擴(kuò)展接口是向外部開放的接口,通過這個(gè)接口,例如衛(wèi)星通信網(wǎng)、GIS系統(tǒng)、AIS系統(tǒng)等,均可以連接入導(dǎo)航信息系統(tǒng),為系統(tǒng)提供更加豐富的信息和更加強(qiáng)大的功能。其主要結(jié)構(gòu)和工作流程如圖7所示。信息擴(kuò)展接口同樣需要擔(dān)負(fù)數(shù)據(jù)的雙向傳遞任務(wù),一方面其運(yùn)行有相應(yīng)數(shù)據(jù)交換/傳輸協(xié)議的協(xié)議棧,如AIS數(shù)據(jù)傳輸協(xié)議棧、VSAT衛(wèi)星通信協(xié)議棧等,以便通過相應(yīng)系統(tǒng)的接口下載和傳輸消息,同時(shí)將接收到的消息轉(zhuǎn)換為系統(tǒng)能夠識(shí)別的數(shù)據(jù)結(jié)構(gòu),供中央處理模塊處理。另一方面,系統(tǒng)根據(jù)需要,提出相應(yīng)的信息下載請(qǐng)求,該請(qǐng)求通過請(qǐng)求處理單元,轉(zhuǎn)換為相應(yīng)系統(tǒng)的控制和請(qǐng)求指令,封裝為合適的控制消息后,發(fā)送給對(duì)應(yīng)的外部系統(tǒng)。信息擴(kuò)展接口可以通過擴(kuò)展外部數(shù)據(jù)交換協(xié)議棧來擴(kuò)展其可以支持的外部系統(tǒng)種類,從而能夠綜合更多的外部信息,豐富導(dǎo)航信息系統(tǒng)的內(nèi)容。
3仿真與實(shí)現(xiàn)
根據(jù)以上研究和設(shè)計(jì),本文采用軟件實(shí)現(xiàn)的方法對(duì)導(dǎo)航信息系統(tǒng)進(jìn)行仿真和模擬。采用的環(huán)境是Corei31.8GHz,4G內(nèi)存,Win764bit,采用Java作為程序開發(fā)語言。仿真的重點(diǎn)在于實(shí)現(xiàn)各個(gè)接口的功能,驗(yàn)證各個(gè)接口工作的有效性和高效性,依托當(dāng)前較為成熟的中央處理模塊[7],實(shí)現(xiàn)對(duì)信息的處理和存儲(chǔ),并使用Java語言開發(fā)整個(gè)模擬系統(tǒng),模擬系統(tǒng)界面如圖8所示。通過編寫相應(yīng)的代碼,模擬各種硬件設(shè)備,信息接收接口成功地收集和轉(zhuǎn)換了不同種類的消息,并通過信息交付接口遞交給用戶界面,從圖8可以看出其成功地實(shí)現(xiàn)了信息的收集和顯示。如圖9所示,進(jìn)行信息設(shè)置的測(cè)試,通過設(shè)計(jì)控制面板,設(shè)置相應(yīng)的參數(shù),觀察能否對(duì)系統(tǒng)進(jìn)行有效控制。通過以上實(shí)踐證明,在理論上本文所設(shè)計(jì)的接口能夠發(fā)揮相應(yīng)的功能,實(shí)現(xiàn)導(dǎo)航信息的收集、處理和交付等功能,說明了本文提出的方案具有一定的可行性。
1.2編碼器設(shè)計(jì)編碼器的設(shè)計(jì)相對(duì)簡(jiǎn)單,主要完成對(duì)待發(fā)送消息字的曼徹斯特編碼,并將其并串轉(zhuǎn)換后輸出。由于曼徹斯特碼每位數(shù)據(jù)中間均有跳變,故發(fā)送時(shí)需將每一位分割成兩位,分別發(fā)送。其工作過程為:(1)同步頭編碼,若為數(shù)據(jù)字同步頭,則編碼為“111000”(由高位到低位,下同),若為狀態(tài)字或命令字同步頭,則編碼為“000111”;(2)數(shù)據(jù)和奇偶校驗(yàn)位編碼,若為‘0’,則編碼為“10”,若為‘1’,則編碼為“01”;(3)按由低到高的順序?qū)⒕幋a后的40位數(shù)據(jù)串行輸出。FPGA采用16MHz主時(shí)鐘,由于編碼后每位數(shù)據(jù)對(duì)應(yīng)0.5μs,故將主時(shí)鐘分頻后產(chǎn)生2MHz時(shí)鐘來控制編碼器發(fā)送40位數(shù)據(jù),每個(gè)時(shí)鐘沿發(fā)送一位,正好滿足1553B總線1Mb/s的速率要求[5]。
1.3解碼器設(shè)計(jì)解碼器主要完成消息字的解碼,并將其串并轉(zhuǎn)換后輸出,其工作過程為:(1)檢測(cè)到總線上有效電平,解碼器開始工作;(2)同步頭解碼,檢測(cè)到指令字和狀態(tài)字同步頭用“011”表示,檢測(cè)到數(shù)據(jù)字同步頭用“100”表示;(3)16位數(shù)據(jù)位和1位奇偶校驗(yàn)位解碼;(4)將解碼后的消息字(20位)并行輸出。同步頭和數(shù)據(jù)位檢測(cè)示意如圖3所示。由1553B協(xié)議可知,同步頭包含三個(gè)位時(shí),在1.5個(gè)位時(shí)處有跳變。如圖3(a)所示,同步頭到來后,解碼器連續(xù)采集48個(gè)數(shù),理論上,采用16MHz時(shí)鐘,如果檢測(cè)到24個(gè)‘0’和24個(gè)‘1’,則表示收到有效同步頭,但考慮到信號(hào)上升時(shí)間及下降時(shí)間等因素,實(shí)際若檢測(cè)到22個(gè)或者23個(gè)‘0’和‘1’,就可以判定同步頭有效,進(jìn)行下一步數(shù)據(jù)的接收。數(shù)據(jù)位包含一個(gè)位時(shí),在0.5個(gè)位時(shí)處有跳變。如圖3(b)所示,在每個(gè)數(shù)據(jù)中間部位,若前一時(shí)鐘采樣到‘0’,后一時(shí)鐘采樣到‘1’,則表示當(dāng)前數(shù)據(jù)位為‘0’,反之則是‘1’。另外,如果采到的數(shù)沒有跳變,為全‘0’或者全‘1’,則產(chǎn)生錯(cuò)誤標(biāo)志,通知協(xié)議處理邏輯或子系統(tǒng)進(jìn)行相應(yīng)的錯(cuò)誤處理。
2協(xié)議處理模塊設(shè)計(jì)
2.1協(xié)議處理模塊響應(yīng)流程協(xié)議處理模塊實(shí)現(xiàn)BC,RT,MT三種總線終端的協(xié)議處理,在FPGA模塊設(shè)計(jì)之前,根據(jù)1553B協(xié)議對(duì)協(xié)議處理模塊三種工作模式下的響應(yīng)流程分別進(jìn)行分析設(shè)計(jì)。
2.1.1BC模式[6]BC(總線控制器)是1553B總線的核心,總線上任何類型的數(shù)據(jù)交換都由它發(fā)起。BC模式下接口響應(yīng)流程設(shè)計(jì)如圖4所示。MIL⁃STD⁃1553B協(xié)議規(guī)定的總線指令可分發(fā)送指令、接收指令和方式指令三種,共能實(shí)現(xiàn)四種類型的功能:RT到BC的數(shù)據(jù)傳輸、BC到RT的數(shù)據(jù)傳輸、RT到RT的數(shù)據(jù)傳輸和總線管理。根據(jù)圖4,BC模式下接口主要工作過程為:(1)根據(jù)外部系統(tǒng)需求發(fā)送相應(yīng)命令字,發(fā)起總線傳輸;(2)根據(jù)指令類型的不同,進(jìn)入不同響應(yīng)流程,主要包括數(shù)據(jù)字發(fā)送、數(shù)據(jù)字接收和狀態(tài)字接收等;(3)消息完成后進(jìn)行消息結(jié)束處理,主要包括消息結(jié)束標(biāo)志的產(chǎn)生,差錯(cuò)處理,以及根據(jù)收到的RT狀態(tài)字判斷總線終端狀態(tài)等。需要注意的是,BC如果在規(guī)定的時(shí)間內(nèi)沒有收到RT狀態(tài)回復(fù),則需重新發(fā)送命令字進(jìn)行重試(Retry)。
2.1.2RT模式[7]RT(遠(yuǎn)程終端)是1553B總線上的指令/響應(yīng)型終端,它響應(yīng)BC發(fā)送的指令,按要求接收或發(fā)送數(shù)據(jù),在規(guī)定時(shí)間內(nèi)回送狀態(tài)字,并服從BC的總線管理。RT模式下接口響應(yīng)流程設(shè)計(jì)如圖5所示。根據(jù)圖5,RT模式下接口主要工作過程為:(1)收到命令字后進(jìn)行指令分析,根據(jù)指令類型進(jìn)入相應(yīng)的響應(yīng)流程;(2)按照流程進(jìn)行數(shù)據(jù)字接收、發(fā)送,并回復(fù)狀態(tài)字;(3)消息完成后進(jìn)行消息結(jié)束處理,主要包括消息結(jié)束標(biāo)志的產(chǎn)生,差錯(cuò)處理,以及特殊方式指令下方式標(biāo)志的產(chǎn)生等。
2.1.3MT模式MT(總線監(jiān)控器)是總線上的監(jiān)聽單元,它監(jiān)控總線上的信息傳輸,完成對(duì)總線的上原始數(shù)據(jù)的記錄,但它本身不參與總線的通信。MT模式接口的功能較為簡(jiǎn)單,主要進(jìn)行指令字、狀態(tài)字和數(shù)據(jù)字的接收并將其寫入相應(yīng)緩存中,方便以后提取分析,可通過BC模式或RT模式下接口相應(yīng)的子模塊實(shí)現(xiàn)。
2.2協(xié)議處理模塊FPGA總體設(shè)計(jì)根據(jù)以上三種模式下接口響應(yīng)流程的分析,對(duì)協(xié)議處理模塊各FPGA子功能模塊進(jìn)行了劃分[8],總體設(shè)計(jì)框圖如圖6所示。協(xié)議處理模塊主要由數(shù)據(jù)接收部分、數(shù)據(jù)發(fā)送部分和數(shù)據(jù)緩存部分組成,此外還包括超時(shí)檢測(cè)、地址譯碼及讀寫控制、中斷管理等輔助部分。由于三種模式下某些功能重復(fù),為了提高FPGA資源利用率,設(shè)計(jì)時(shí)充分考慮了相應(yīng)模塊的模式復(fù)用,整個(gè)協(xié)議處理邏輯可在外部模式選擇信號(hào)的控制下工作在BC,RT和MT模式。16MHz的全局時(shí)鐘通過時(shí)鐘管理模塊為各FPGA功能模塊提供工作時(shí)鐘,各模塊間通過一定的握手信號(hào)互聯(lián),保證協(xié)議處理邏輯有序工作。整個(gè)協(xié)議處理模塊的基本工作原理如下:按照1553B協(xié)議規(guī)范,通過接收器接收總線上的數(shù)據(jù)并存入緩存,通過發(fā)送器取出緩存中的數(shù)據(jù)并發(fā)送到總線上,同時(shí)不斷以中斷和握手信號(hào)與外部系統(tǒng)進(jìn)行通信,通知外部系統(tǒng)向緩存中寫入待發(fā)送數(shù)據(jù)或從緩存中讀取已接收數(shù)據(jù),并共同完成差錯(cuò)處理和協(xié)議邏輯的管理[9]。
3設(shè)計(jì)仿真與驗(yàn)證
根據(jù)設(shè)計(jì)方案,編寫了重要模塊的FPGA代碼,模擬實(shí)現(xiàn)BC功能和RT功能,采用Active⁃HDL軟件仿真,其中BC向RT的數(shù)據(jù)傳輸仿真結(jié)果如圖7所示。仿真通過后,在Virtex⁃5FPGA[10]平臺(tái)上對(duì)設(shè)計(jì)進(jìn)行了驗(yàn)證,如圖8所示。將BC功能模塊和RT功能模塊的代碼經(jīng)ISE綜合、布局布線后分別下載到兩塊開發(fā)板中實(shí)現(xiàn),開發(fā)板通過串口與PC機(jī)通信。PC機(jī)將指令和數(shù)據(jù)寫入FPGA相應(yīng)寄存器中,BC和RT在PC機(jī)指令的控制下進(jìn)行1553B協(xié)議通信。驗(yàn)證過程中通過示波器查看模擬總線的波形,并通過ChipScope觀察和比對(duì)協(xié)議收發(fā)數(shù)據(jù)。同時(shí),為提高接口性能,用光纖代替?zhèn)鹘y(tǒng)電纜傳輸介質(zhì),采用8B/10B編解碼代替曼徹斯特編解碼,并利用FP⁃GA內(nèi)嵌RocketIO內(nèi)核,進(jìn)行了傳統(tǒng)1553協(xié)議數(shù)據(jù)的光纖傳輸[11],傳輸過程數(shù)據(jù)比對(duì)ChipScope采樣如圖10所示。驗(yàn)證結(jié)果表明,BC和RT功能模塊能夠正常按照1553B協(xié)議進(jìn)行數(shù)據(jù)的發(fā)送和接收,完成基本1553B協(xié)議的處理,實(shí)現(xiàn)1553B協(xié)議數(shù)據(jù)的1Mb/s電纜傳輸和3Gb/s以上光纖傳輸,數(shù)據(jù)比對(duì)無誤,說明該接口設(shè)計(jì)方案實(shí)際可行,具備開發(fā)應(yīng)用價(jià)值,同時(shí)也為光纖1553接口的設(shè)計(jì)提供了一定參考價(jià)值。
NDK通過編程接口與嵌入式操作系統(tǒng)SYS/BIOS以及底層硬件相互隔離。對(duì)于NDK而言,SYS/BIOS被抽象成一個(gè)操作系統(tǒng)適應(yīng)層(OSAdaptationLayer),底層硬件被抽象成一個(gè)硬件適應(yīng)層(HardwareAdaptationLay-er),它們的函數(shù)庫OS.LIB、HAL.LIB成為了NDK與SYS/BIOS以及底層硬件的接口。圖4為基于NDK與SYS/BIOS的通信接口軟件架構(gòu)圖。由圖4可以看出,NDK主要包含NETTOOL.LIB、STACK.LIB、OS.LIB、HAL.LIB、NETCTRL.LIB五個(gè)部分。(1)NETTOOL.LIB提供網(wǎng)絡(luò)服務(wù),包含NDK提供的基于網(wǎng)絡(luò)服務(wù)的所有套接字以及一些用于網(wǎng)絡(luò)應(yīng)用開發(fā)的附加工具。(2)STACK.LIB是主要的TCP/IP協(xié)議棧,提供了頂層(套接字層)至底層(以太網(wǎng)和PPP層)的所有功能。(3)OS.LIB提供與SYS/BIOS操作系統(tǒng)的接口。(4)HAL.LIB提供與底層硬件的接口。(5)NETCTRL.LIB控制TCP/IP協(xié)議棧與外界的交互,管理所有網(wǎng)絡(luò)事件、協(xié)調(diào)操作系統(tǒng)與硬件驅(qū)動(dòng),主要包括:①初始化TCP/IP協(xié)議棧和底層設(shè)備驅(qū)動(dòng);②啟動(dòng)和維護(hù)系統(tǒng)配置(通過配置服務(wù)提供者的回調(diào)函數(shù));③連接底層設(shè)備驅(qū)動(dòng)和安排驅(qū)動(dòng)事件呼叫TCP/IP協(xié)議棧;④卸載系統(tǒng)配置和清除底層驅(qū)動(dòng)。對(duì)于基于NDK與SYS/BIOS的通信接口的軟件架構(gòu),其實(shí)現(xiàn)主要分為三部分工作:(1)編制底層驅(qū)動(dòng)程序。底層硬件驅(qū)動(dòng)負(fù)責(zé)向TCP/IP協(xié)議棧提供具體的操作接口,用以控制以太網(wǎng)器件的配置和運(yùn)行,主要包括:初始化驅(qū)動(dòng)環(huán)境,包括器件復(fù)位、中斷使能、存儲(chǔ)區(qū)數(shù)據(jù)訪問優(yōu)先級(jí)設(shè)定、器件枚舉和配置等;以太網(wǎng)數(shù)據(jù)包的接收和發(fā)送;監(jiān)測(cè)底層網(wǎng)絡(luò)器件狀態(tài),將事件信息反饋給協(xié)議棧;關(guān)閉驅(qū)動(dòng)環(huán)境,并收回占用的系統(tǒng)資源。(2)在SYS/BIOS操作系統(tǒng)平臺(tái)上配置和運(yùn)行NDK的TCP/IP協(xié)議棧。CCS5.3提供了配置工具XGCONF來實(shí)現(xiàn)圖形化界面配置NDK,如圖5所示,傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層分別選用TCP、IP、EMAC協(xié)議,并對(duì)其作相關(guān)必要的配置,主要包括發(fā)送/接收窗口大小、IP地址、生存時(shí)間等內(nèi)容的配置。(3)開發(fā)用戶定制的網(wǎng)絡(luò)應(yīng)用程序。本方案中主要是完成接收上位機(jī)控制信息和發(fā)送結(jié)果信息這些操作,采用流式套接字(Socket)來實(shí)現(xiàn)。Socket是應(yīng)用層與TCP/IP協(xié)議簇通信的中間軟件抽象層,它是一組接口,把復(fù)雜的TCP/IP協(xié)議簇隱藏在其后面。對(duì)于用戶來說,一組簡(jiǎn)單的Socket接口就是全部通信過程,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。
本設(shè)計(jì)中,選取DSP作為服務(wù)器,上位機(jī)作為客戶端。對(duì)于DSP端,先初始化一個(gè)監(jiān)聽Socket,然后與端口綁定(bind),并對(duì)端口進(jìn)行監(jiān)聽(listen),再調(diào)用accept阻塞,等待PC端連接。對(duì)于PC端,先初始化一個(gè)Sock-et,然后請(qǐng)求連接DSP端(connect),若此時(shí)DSP端正處于等待PC端連接狀態(tài),則DSP端接受此連接請(qǐng)求,于是,PC端與DSP端就成功建立起了連接。PC端發(fā)送數(shù)據(jù)請(qǐng)求,DSP端接收請(qǐng)求并處理請(qǐng)求,再把回應(yīng)數(shù)據(jù)發(fā)送給PC端,PC端讀取數(shù)據(jù),最后關(guān)閉連接,一次交互結(jié)束。DSP與上位機(jī)進(jìn)行Socket通信的具體過程如圖6所示。
2功能測(cè)試
為了測(cè)試本文設(shè)計(jì)的千兆以太網(wǎng)接口的可行性,PC端采用VC++的MFC來設(shè)計(jì)測(cè)試程序,測(cè)試程序主要實(shí)現(xiàn)對(duì)單通道正弦信號(hào)的采集、處理以及顯示等操作,測(cè)試界面如圖7所示。根據(jù)具體的設(shè)計(jì)需求,測(cè)試程序分為數(shù)據(jù)發(fā)送/接收和數(shù)據(jù)處理/顯示這兩個(gè)部分。其中,數(shù)據(jù)發(fā)送/接收部分通過Socket編程完成與DSP的收發(fā)數(shù)據(jù)包等通信過程,數(shù)據(jù)處理/顯示部分不僅能夠支持用戶對(duì)服務(wù)器端參數(shù)和控制參數(shù)的可配置,而且通過顯示接收到的正弦信號(hào)時(shí)域波形與頻譜圖,實(shí)現(xiàn)對(duì)PC端與DSP端通信的直觀體驗(yàn),同時(shí)更增加了本接口程序的可移植性與可擴(kuò)展性。通過測(cè)試可以發(fā)現(xiàn),正弦信號(hào)的時(shí)域波形圖與頻譜圖較為流暢,且穩(wěn)定性較高,能夠支持長(zhǎng)時(shí)間穩(wěn)定可靠傳輸及顯示。
2軟件設(shè)計(jì)
數(shù)據(jù)處理接口模塊的軟件主要由硬件初始化、自測(cè)試程序、周期數(shù)據(jù)收發(fā)和命令響應(yīng)四大功能組成。其中周期數(shù)據(jù)的收發(fā)包含消息層和數(shù)據(jù)層兩個(gè)層次。消息層負(fù)責(zé)命令的辨識(shí)和數(shù)據(jù)的組織搬運(yùn),數(shù)據(jù)層負(fù)責(zé)協(xié)議的執(zhí)行和發(fā)送接收等底層任務(wù)。數(shù)據(jù)層基本數(shù)據(jù)幀的格式見圖4所示。這里的同步字、數(shù)據(jù)長(zhǎng)度、校驗(yàn)方式由主機(jī)在初始化時(shí)確定。其中校驗(yàn)方式可選擇兩種,若采用和校驗(yàn),則檢驗(yàn)位占用1字節(jié);若使用CRC校驗(yàn),校驗(yàn)位占2字節(jié)。在周期數(shù)據(jù)收發(fā)的數(shù)據(jù)層中,RS422鏈路分為測(cè)控鏈路和任務(wù)鏈路兩部分。測(cè)控鏈路用于檢測(cè)設(shè)備的連通性和硬件的正確性,任務(wù)鏈路用于任務(wù)系統(tǒng)之間的通信。因此,將用于測(cè)控通信的鏈路設(shè)計(jì)為無鏈接協(xié)議鏈路,將用于任務(wù)通信的鏈路設(shè)計(jì)為有鏈接協(xié)議鏈路。有鏈接協(xié)議的任務(wù)鏈路的狀態(tài)轉(zhuǎn)移圖見圖5所示。任務(wù)鏈路的工作原理是:上電后首先進(jìn)行通信測(cè)試,主端首先發(fā)送LTST,若從端回復(fù)ALTST為正常,測(cè)試完成后,轉(zhuǎn)入空閑工作狀態(tài);空閑狀態(tài)時(shí)主從定期進(jìn)行握手操作,當(dāng)主機(jī)存在發(fā)送命令時(shí),轉(zhuǎn)入消息發(fā)送狀態(tài),當(dāng)從端發(fā)來數(shù)據(jù)幀前導(dǎo)碼LHDR時(shí)主端轉(zhuǎn)入消息接收狀態(tài);消息發(fā)送完成后會(huì)進(jìn)行發(fā)送檢查,如果從接收無誤會(huì)發(fā)來ACK握手信號(hào),當(dāng)出現(xiàn)超時(shí)或從發(fā)來NACK信號(hào)時(shí)進(jìn)行重新發(fā)送狀態(tài),重試超過門限進(jìn)入通信測(cè)試狀態(tài);消息接收狀態(tài)時(shí)若消息正確則進(jìn)入空閑狀態(tài),若接收超時(shí)或消息錯(cuò)誤時(shí)發(fā)送NACK通知主端重新發(fā)送,當(dāng)錯(cuò)誤次數(shù)超門限時(shí)進(jìn)入通信測(cè)試狀態(tài)。
3低功耗設(shè)計(jì)
簡(jiǎn)易無人機(jī)攜帶燃料有限,而實(shí)際任務(wù)中往往又要求其盡可能長(zhǎng)時(shí)間的滯空,這就要求各類設(shè)備盡可能地以較小的功耗完成較多的功能。因此本文從硬件軟件等不同層面設(shè)計(jì)來降低模塊的功耗。降低功耗總的來說有關(guān)閉無用功能、減少無用操作和合理器件選型三個(gè)方法。在不使用DSP內(nèi)部的AD、eCAN、SCI等資源時(shí),可將對(duì)應(yīng)的資源的時(shí)鐘HSPCLK和LSPCLK關(guān)閉,同時(shí)不使能這些資源,以達(dá)到降低功耗的目的。作為降壓型線性電源,TPS74401芯片的耗散功率PD=(VIN-VOUT)×IOUT,即電源的轉(zhuǎn)換效率取決于輸入輸出電壓差的大小,因此在電源轉(zhuǎn)換電路的設(shè)計(jì)上應(yīng)在滿足電源芯片的最小dropoutvoltage的情況下盡量減小LDO器件輸入輸出電壓差,可提高轉(zhuǎn)換效率減少發(fā)熱功耗,本文中1.8V電源由最接近1.8V電壓的3.3V電源轉(zhuǎn)換而來。為保持較好的信號(hào)完整性,模塊上的印制板走線阻抗均按照單端50Ω差分100Ω控制。在RS422的發(fā)送端和接收端進(jìn)行阻抗匹配以優(yōu)化信號(hào)質(zhì)量。在發(fā)送端使用33Ω串聯(lián)匹配方式,接收端采用120Ω并聯(lián)匹配方式,由于正常工作時(shí)差分電平約±5V,為降低直流功耗在并聯(lián)匹配電阻處串接一10pF電容,這樣既滿足瞬態(tài)的信號(hào)完整性要求,也可在穩(wěn)態(tài)時(shí)達(dá)到隔離直流,減小匹配電阻上直流功耗的目的。詳見圖6所示。在軟件設(shè)計(jì)方面,采用定時(shí)查詢和中斷接收相結(jié)合的方式,減少DSP對(duì)外設(shè)的多余操作,避免不必要的輪詢操作所產(chǎn)生的功率消耗。本文介紹的串行數(shù)據(jù)接口板在今后的改進(jìn)設(shè)計(jì)中,可以注意合理的器件選型,以達(dá)到降低功耗的目的。例如:現(xiàn)設(shè)計(jì)中1.8V電源轉(zhuǎn)換效率為54%,今后可結(jié)合實(shí)際電流消耗狀況選用合適的開關(guān)電源代替線性電源[4],并使開關(guān)電源工作在中等或較重負(fù)載狀態(tài),可提高電源效率至80%左右;現(xiàn)有設(shè)計(jì)中CPLD動(dòng)態(tài)功耗約為0.7W,由于該模塊中邏輯占用資源并不多,因此后期可考慮用更小功耗的中小規(guī)模可編程邏輯器件替換。目前現(xiàn)有設(shè)計(jì)中未考慮模塊的睡眠喚醒功能,今后可結(jié)合主機(jī)實(shí)際的需求,添加相應(yīng)功能的電路,以降低待機(jī)功耗。
1引言
在當(dāng)今的各種實(shí)時(shí)自動(dòng)控制和智能化儀器儀表中,人機(jī)交互是不可缺少的一部分。一般而言,人機(jī)交互是由系統(tǒng)配置的外部設(shè)備來完成,但其實(shí)現(xiàn)方式有兩種:一種是由MCU力口驅(qū)動(dòng)芯片實(shí)現(xiàn),如鍵盤顯示控制芯片SK5279A,串行數(shù)據(jù)傳輸數(shù)碼顯示驅(qū)動(dòng)芯片MAX7219等等,這時(shí)顯然MCU沒有LCD的驅(qū)動(dòng)功能。另一種就是MCU本身具有驅(qū)動(dòng)功能,它通過數(shù)據(jù)總線與控制信號(hào)直接采用存儲(chǔ)器訪問形式或I/O設(shè)備訪問形式控制鍵盤和LCD實(shí)現(xiàn)人機(jī)對(duì)話。這里的MCU主要有世界各大單片機(jī)生產(chǎn)廠商開發(fā)的各種單片機(jī),其中TI公司的MSP430系列因其許多獨(dú)特的特性引起許多研究人員的特別關(guān)注,在國(guó)內(nèi)外的發(fā)展應(yīng)用正逐步走向成熟。
2LCD簡(jiǎn)介
LCD(LiquidCrystalDisplay),即液晶顯示器。液晶顯示是通過環(huán)境光來顯示信息的,它本身并不發(fā)光,因而功耗很低,只要求液晶周圍有足夠的光強(qiáng)。LCD是人與機(jī)器溝通的重要界面,早期以顯像管(CRT/CathodeRayTube)顯示器為主,但隨著科技不斷進(jìn)步,各種顯示技術(shù)如雨后春筍般誕生。LCD由于具有輕薄短小、低耗電量、無輻射危險(xiǎn)、平面直角顯示以
及影像穩(wěn)定不閃爍等優(yōu)勢(shì),逐漸占據(jù)顯示的主流地位。
LCD的類型,根據(jù)其分類方式的不同而不同。如根據(jù)LCD顯示內(nèi)容的不同可以分為段式LCD和點(diǎn)陣LCD。根據(jù)LCD驅(qū)動(dòng)方式的不同可以分為靜態(tài)驅(qū)動(dòng)和多路驅(qū)動(dòng)。
3MSP430F44X簡(jiǎn)介
MSP430F44X系列是TI公司最新推出的具有超低功耗特性的Flash型16位RISC指令集單片機(jī)[2]。該系列單片機(jī)性價(jià)比相當(dāng)高,在系統(tǒng)設(shè)計(jì)、開發(fā)調(diào)試及實(shí)際應(yīng)用上都表現(xiàn)出較明顯的優(yōu)勢(shì)。它主要應(yīng)用在各種要求極低功率消耗的場(chǎng)合,特別適合用于智能測(cè)量?jī)x器、各種醫(yī)療器械、智能化家用電器和電池供電便攜設(shè)備產(chǎn)品之中。
3.1系統(tǒng)結(jié)構(gòu)
MSP430F44X的系統(tǒng)結(jié)構(gòu),主要包括:CPU、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、FLL+時(shí)鐘系統(tǒng)(片內(nèi)DCO+晶體振蕩器)、看門狗定時(shí)器/通用目的定時(shí)器(WatchDog)、ADCl2(12位A/D)、比較器A(精確的模擬比較器,常用于斜邊(Slope)A/D轉(zhuǎn)換)、復(fù)位電壓控制/電源電壓管理、基本定時(shí)器(BasicTimerl)、定時(shí)器(Timer-a和Timer-B)、LCD控制器/比較器(多達(dá)160段)、硬件乘法器、I/O口和串行口[4]。系列中各種具體的型號(hào)稍有差別。在本次設(shè)計(jì)中,具體選擇MSP430F449作為人機(jī)接口電路的設(shè)計(jì)具有許多獨(dú)到的優(yōu)勢(shì)。這一點(diǎn),讀者可以根據(jù)TI公司相關(guān)的數(shù)據(jù)手冊(cè)進(jìn)行比較。
3.2片內(nèi)外模塊特性
MSP430F44X具有豐富的片內(nèi)模塊,其明顯的特點(diǎn)是:具有48條I/0口線的6個(gè)并行口P1-P6,其中P1、p2具有中斷能力,同時(shí)具有2個(gè)可用于UART/SPI模式選擇的串行口(USART0和USARTl);內(nèi)含12位的A/D轉(zhuǎn)換器ADCl2,快速執(zhí)行8×8、8×16、16×16乘法操作并立即得到結(jié)果的硬件乘法器;多達(dá)160段的LCD控制器/比較器,可以實(shí)現(xiàn)多種方式的驅(qū)動(dòng)顯示;可以實(shí)現(xiàn)UART、PWM、斜坡ADC的16位Timer-A和16位Timer-B;非常靈活的時(shí)鐘系統(tǒng),既可用32768Hz的鐘表晶振產(chǎn)生低頻時(shí)鐘,也可以用450kHz-8MHz的晶體產(chǎn)生高頻時(shí)鐘,同時(shí)還可以使用外部時(shí)鐘源或者用不同控制頻率的DCO;多達(dá)幾十kB的Flash空間,這樣數(shù)據(jù)既可以保存在片內(nèi)的Flash信息存儲(chǔ)器,也可保存在程序的Hash中的剩余空間。
4接口電路設(shè)計(jì)
4.1接口電路簡(jiǎn)圖及說明
典型應(yīng)用電路示意圖。在該圖中,LCD類型和鍵盤種類及數(shù)目的選擇、下拉電阻的數(shù)值大小都必須認(rèn)真考慮,硬件設(shè)計(jì)要滿足一定的工作時(shí)序關(guān)系,復(fù)位時(shí)預(yù)留緩沖時(shí)間和懸空部分引腳,晶振的選擇要在適當(dāng)?shù)臄?shù)值,必須保證交流驅(qū)動(dòng)的頻率在30Hz-1000Hz范圍內(nèi),其具體的情況請(qǐng)?jiān)敿?xì)參考TI公司的相關(guān)資料[3]。
4.2段型液晶顯示屏EDS820A簡(jiǎn)介
一般而言,LCD分為筆段型和點(diǎn)陣字符型及點(diǎn)陣圖形型。筆段型主要是顯示數(shù)字,常用于計(jì)數(shù)、計(jì)量和計(jì)時(shí);點(diǎn)陣字符型用于顯示數(shù)字和西文字符;點(diǎn)陣圖形型用于顯示圖形及字符。本設(shè)計(jì)中用到的EDS820A就是由西安新敏電子科技有限公司生產(chǎn)的筆段型LCD。是該顯示屏的各個(gè)引腳的邏輯功能表。
顯而易見,該產(chǎn)品EDS820A是5位的液晶顯示屏,它只有4個(gè)DP,用于顯示小數(shù)點(diǎn);COM端也只有一個(gè),所以該LCD與MSP430F449的管腳連接應(yīng)該引起足夠重視.
5軟件設(shè)計(jì)
硬件連接電路圖為例,編寫了鍵盤控制及顯示程序,程序在IAREmbeddedWorkbench編譯通過。全部主程序包括詳細(xì)的發(fā)射和接收子程序,及初始化和等待鍵盤輸入轉(zhuǎn)換、顯示等等,值得注意的是發(fā)射與接收的控制要適當(dāng)。
該程序是用匯編編寫的。程序?qū)崿F(xiàn)的是等待按鍵輸入,讀取鍵值,最后進(jìn)行鍵值處理和顯示的功能。
檢測(cè)是否有鍵按下是通過KEY是否有高電平信號(hào)。平時(shí),KEY為低電平,當(dāng)有鍵按下時(shí)為高電平,它發(fā)送一個(gè)脈沖給單片機(jī)MSP430F449,當(dāng)單片機(jī)檢測(cè)到該信號(hào)時(shí),判斷按鍵的功能,從而進(jìn)行相應(yīng)的處理。
6人機(jī)接口電路在體內(nèi)電刺激器中的應(yīng)用
醫(yī)學(xué)上,在進(jìn)行疾病控制時(shí),通常可以通過電極以一定波形(如方波、正弦波等)、頻率、幅度、占空比等電信號(hào)對(duì)神經(jīng)或肌肉進(jìn)行刺激,以使其支配相應(yīng)的功能或肌肉產(chǎn)生收縮/舒張動(dòng)作,從而有利于癥狀的減輕。由于不同部位的神經(jīng)或肌肉對(duì)電刺激發(fā)生的敏感水平不同,不同強(qiáng)弱和不同性質(zhì)的電信號(hào)所產(chǎn)生的刺激效果是不一樣的。我們研制的體內(nèi)電刺激器,可以產(chǎn)生手術(shù)時(shí)所需要的具有不同的頻率、幅度、占空比的不同波形信號(hào)。該儀器幅度、占空比準(zhǔn)確,頻率穩(wěn)定,各參數(shù)均可以精確的調(diào)節(jié)。而且,由于使用了LCD顯示,它與單片機(jī)的連接簡(jiǎn)單。LCD具有質(zhì)量輕、體積小、電壓低、功耗小、顯示內(nèi)容豐富等優(yōu)點(diǎn),其人機(jī)界面相當(dāng)友好。但人機(jī)接口電路設(shè)計(jì)的優(yōu)劣直接影響到整臺(tái)儀器的使用效果。
2個(gè)性化的作業(yè)
為了讓每個(gè)學(xué)生都有獨(dú)一無二的作業(yè),將題目和學(xué)生的身份信息進(jìn)行了聯(lián)系.MATLAB最重要的功能就是對(duì)矩陣的操作,在實(shí)際學(xué)習(xí)過程中,讓學(xué)生將向量和矩陣分開看待的.對(duì)于向量的操作,讓學(xué)生對(duì)自己的學(xué)號(hào)進(jìn)行操作,并將自己的學(xué)號(hào)做成各種各樣的條形碼.通過對(duì)條形碼的學(xué)習(xí),讓學(xué)生明白了編解碼技術(shù)、抗噪聲技術(shù).當(dāng)學(xué)生看著自己的學(xué)號(hào)生成的條形碼時(shí),他們覺得非常新奇,對(duì)MATLAB編程的學(xué)習(xí)熱情得到極大地提高.對(duì)于矩陣的學(xué)習(xí),主要圍繞學(xué)生的照片展開.要求學(xué)生必須用自己的照片來進(jìn)行處理.這里存在兩個(gè)問題:(1)有的學(xué)生從網(wǎng)上下載了小動(dòng)物和風(fēng)景畫之類的圖像進(jìn)行處理,遇到這樣的問題,對(duì)學(xué)生進(jìn)行批評(píng)教育,并降低該次作業(yè)的成績(jī);(2)學(xué)生本人的照片大多是用手機(jī)拍攝的,因此是彩色圖像,一般為jpg格式,需要將彩色圖像先轉(zhuǎn)換為灰度圖像,在講到三維陣列的時(shí)候,再學(xué)習(xí)彩色圖形的顯示和處理.為了便于說明作業(yè)的實(shí)際情況,舉一實(shí)例.例如:學(xué)習(xí)圖形用戶接口的時(shí)候,要求學(xué)生設(shè)計(jì)一個(gè)獨(dú)特的界面.界面的大致輪廓見圖1.給出作業(yè)的要求如下:(1)設(shè)計(jì)中的照片務(wù)必為本人“頭像”,不可以為合影、風(fēng)景照等;(2)設(shè)計(jì)報(bào)告要求將實(shí)現(xiàn)步驟寫清楚;(3)報(bào)告中要求有程序執(zhí)行結(jié)果截圖,截圖一定要全面、完整;(4)學(xué)號(hào)要求一定輸入自己的學(xué)號(hào);(5)設(shè)計(jì)完成項(xiàng)目不局限于上頁格式,可自由發(fā)揮;(6)報(bào)告后面要有附錄,附錄為本設(shè)計(jì)的代碼,字號(hào)為小五.本次作業(yè)不僅要求學(xué)生能夠正確設(shè)計(jì)圖1所示的界面,還能夠?qū)⒆约旱膶W(xué)號(hào)拼成平行四邊形或矩形輸出,并能夠求出學(xué)號(hào)各位數(shù)字的總和,還能夠上下和左右翻轉(zhuǎn)設(shè)計(jì)者的照片.所有結(jié)果要求在該接口界面上顯示.例如:在文本框中輸入“20115044122”,點(diǎn)按“平行四邊形格式”,并單擊“左右翻轉(zhuǎn)”,得到的結(jié)果見圖2.在圖2的界面中再次單擊“左右翻轉(zhuǎn)”,照片翻轉(zhuǎn)結(jié)果見圖1.本次作業(yè)不僅使學(xué)生學(xué)會(huì)了利用MATALB提供的Guide工具進(jìn)行圖形用戶接口界面設(shè)計(jì),而且學(xué)會(huì)了將照片導(dǎo)入MATLAB的方法,以及對(duì)于三維陣列的操作方法,更能夠鞏固已經(jīng)掌握的循環(huán)結(jié)構(gòu)程序設(shè)計(jì)方法.有的學(xué)生在本次作業(yè)的基礎(chǔ)上,進(jìn)行了進(jìn)一步的學(xué)習(xí)和探索,做出了更多更好的設(shè)計(jì).
CAN通訊協(xié)議描述了在設(shè)備之間信息如何傳遞。它對(duì)層的定義與開放系統(tǒng)互連模型(OSI)一致。每一層與另一設(shè)備上相同的那一層通訊。實(shí)際的通訊是發(fā)生在每一設(shè)備上相鄰的兩層,而設(shè)備只通過模型物理層的物理介質(zhì)互連。CAN的結(jié)構(gòu)定義了模型的最下面的兩層:數(shù)據(jù)鏈路層和物理層。應(yīng)用層通過不同的新型協(xié)議層(專門用于特殊的工業(yè)領(lǐng)域加上由個(gè)別CAN用戶定義的任何合適的方案)和物理層連接。物理層和數(shù)據(jù)鏈路層對(duì)于設(shè)計(jì)者來說是透明的,并包含在所有執(zhí)行CAN協(xié)議的部件中。
實(shí)際中,許多設(shè)備是RS-232接口,為了實(shí)現(xiàn)CAN總線數(shù)據(jù)和RS-232接口設(shè)備數(shù)據(jù)的傳輸,設(shè)計(jì)完成了CAN總線與RS-232轉(zhuǎn)換接口電路設(shè)計(jì)。
1.CAN總線協(xié)議分析
1.1CAN總線主要特點(diǎn)
CAN總線是一種多主式的串行通信總線,具有極高的實(shí)時(shí)性和可靠行,最高通信速率可以達(dá)到1Mbit/s,是一種十分優(yōu)秀的現(xiàn)場(chǎng)工業(yè)總線。CAN總線具有如下特點(diǎn):
結(jié)構(gòu)簡(jiǎn)單,只有2根線與外部相連,且內(nèi)部集成錯(cuò)誤探測(cè)和管理模塊。
通信方式靈活。可以多主方式工作,網(wǎng)絡(luò)上的其他節(jié)點(diǎn)發(fā)送信息,而不分主從。
可以點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)或者全局廣播方式發(fā)送和接收數(shù)據(jù)。
網(wǎng)絡(luò)上的節(jié)點(diǎn)信息可分成不同的優(yōu)先級(jí),以滿足不同的實(shí)時(shí)要求。
CAN總線通信格式采用短幀格式,每幀字節(jié)最多為8個(gè),可滿足通常工業(yè)領(lǐng)域中控制命令、工作狀態(tài)及測(cè)試數(shù)據(jù)的一般要求。同時(shí),8字節(jié)也不會(huì)占用總線時(shí)間過長(zhǎng),從而保證了通信的實(shí)時(shí)性。
采用非破壞性總線仲裁技術(shù)。當(dāng)兩個(gè)節(jié)點(diǎn)同時(shí)向總線上發(fā)送數(shù)據(jù)時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)主動(dòng)停止數(shù)據(jù)發(fā)送,而優(yōu)先級(jí)高的節(jié)點(diǎn)可不受影響地繼續(xù)傳送數(shù)據(jù)。這大大的節(jié)省了總線仲裁沖突的時(shí)間,雜網(wǎng)絡(luò)負(fù)載很重的情況下也不會(huì)出現(xiàn)網(wǎng)絡(luò)癱瘓。
直接通信距離最大可達(dá)10Km(速率5Kbit/s以下),最高通信速率可達(dá)1Mbit/s(此時(shí)距離最長(zhǎng)為40Km),節(jié)點(diǎn)數(shù)可達(dá)110個(gè),通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維。
CAN總線通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對(duì)通信數(shù)據(jù)的成幀處理,包括位填充、數(shù)據(jù)塊編碼、循環(huán)冗余檢測(cè)、優(yōu)先級(jí)判別等多項(xiàng)工作。
CAN總線采用CRC進(jìn)行數(shù)據(jù)檢測(cè)并可提供相應(yīng)的錯(cuò)誤處理功能,保證了數(shù)據(jù)通信的可靠性。
1.2CAN總線協(xié)議
CAN總線協(xié)議主要描述設(shè)備之間的信息傳遞方式,從結(jié)構(gòu)上可分成3個(gè)層次,分別對(duì)應(yīng)OSI網(wǎng)絡(luò)模型的最低兩層數(shù)據(jù)鏈路層和物理層。CAN總線協(xié)議層次結(jié)構(gòu)由高到低如表1-1所示。
表1-1CAN總線協(xié)議層次結(jié)構(gòu)
協(xié)議層
對(duì)應(yīng)OSI模型
說明
LLC
數(shù)據(jù)鏈路層
邏輯鏈路控制子層,用于為鏈路中的數(shù)據(jù)傳輸提供上層控制手段
MAC
媒體訪問控制子層,用于控制幀結(jié)構(gòu)、仲裁、錯(cuò)誤界定等數(shù)據(jù)傳輸?shù)木唧w實(shí)現(xiàn)
物理層
物理層
物理層的作用是在不同節(jié)點(diǎn)之間根據(jù)所有的電氣屬性進(jìn)行位的實(shí)際傳輸
LLC層和MAC層也可以看作是CAN總線數(shù)據(jù)鏈路層的兩個(gè)子層。其中LLC層接收MAC層傳遞的報(bào)文,主要完成報(bào)文濾波、過載通知以及恢復(fù)管理等工作。而MAC層則為數(shù)據(jù)報(bào)文的傳輸進(jìn)行具體的控制,包括幀結(jié)構(gòu)控制、總線仲裁、錯(cuò)誤檢測(cè)、出錯(cuò)界定、報(bào)文收發(fā)控制等工作。
物理層定義了信號(hào)是如何實(shí)際傳輸?shù)模虼松婕暗轿粫r(shí)間、位編碼、同步的解釋,CAN總線協(xié)議并未對(duì)物理層部分進(jìn)行具體的規(guī)定。
1.3CAN總線報(bào)文傳輸結(jié)構(gòu)
報(bào)文傳輸由以下4個(gè)不同的幀類型所表示
1.?dāng)?shù)據(jù)幀:數(shù)據(jù)幀攜帶數(shù)據(jù)從發(fā)送器至接收器。
數(shù)據(jù)幀由7個(gè)不同的位場(chǎng)組成:幀起始、仲裁場(chǎng)、控制場(chǎng)、數(shù)據(jù)場(chǎng)、CRC場(chǎng)、應(yīng)答場(chǎng)、幀結(jié)尾。數(shù)據(jù)場(chǎng)的長(zhǎng)度可以為0。數(shù)據(jù)幀(或遠(yuǎn)程幀)通過幀間空間與前述的各幀分開。
2.遠(yuǎn)程幀:總線單元發(fā)出遠(yuǎn)程幀,請(qǐng)求發(fā)送具有同一識(shí)別符的數(shù)據(jù)幀。
遠(yuǎn)程幀由6個(gè)不同的位場(chǎng)組成:幀起始、仲裁場(chǎng)、控制場(chǎng)、CRC場(chǎng)、應(yīng)答場(chǎng)、幀末尾。通過發(fā)送遠(yuǎn)程幀,作為某數(shù)據(jù)接收器的站通過其資源節(jié)點(diǎn)對(duì)不同的數(shù)據(jù)傳送進(jìn)行初始化設(shè)置。
3.錯(cuò)誤幀:任何單元檢測(cè)到總線錯(cuò)誤就發(fā)出錯(cuò)誤幀。
錯(cuò)誤幀由兩個(gè)不同的場(chǎng)組成。第一個(gè)場(chǎng)用作為不同站提供的錯(cuò)誤標(biāo)志(ERRORFLAG)的疊加。第二個(gè)場(chǎng)是錯(cuò)誤界定符。
為了能正確地終止錯(cuò)誤幀,"錯(cuò)誤被動(dòng)"的節(jié)點(diǎn)要求總線至少有長(zhǎng)度為3個(gè)位時(shí)間的總線空閑(如果"錯(cuò)誤被動(dòng)"的接收器有本地錯(cuò)誤的話)。因此,總線的載荷不應(yīng)為100%。有兩種形式的錯(cuò)誤標(biāo)志,主動(dòng)錯(cuò)誤標(biāo)志(Activeerrorflag)和被動(dòng)錯(cuò)誤標(biāo)志(Passiveerrorflag)。
4.過載幀:過載幀用以在先行的和后續(xù)的數(shù)據(jù)幀(或遠(yuǎn)程幀)之間提供一附加的延時(shí)。
過載幀包括兩個(gè)位場(chǎng):過載標(biāo)志和過載界定符。
有兩種過載條件都會(huì)導(dǎo)致過載標(biāo)志的傳送:
(1)接收器的內(nèi)部條件(此接收器對(duì)于下一數(shù)據(jù)幀或遠(yuǎn)程幀需要有一延時(shí))。
(2)間歇場(chǎng)期間檢測(cè)到一"顯性"位。
由過載條件1而引發(fā)的過載幀只允許起始于所期望的間歇場(chǎng)的第一個(gè)位時(shí)間開始。而由過載條件2引發(fā)的過載幀應(yīng)起始于所檢測(cè)到"顯性"位之后的位。
1.4CAN總線錯(cuò)誤處理
1.4.1錯(cuò)誤檢測(cè)
有以下5種不同的錯(cuò)誤類型(這5種錯(cuò)誤不會(huì)相互排斥)
1.位錯(cuò)誤(BitError)
單元在發(fā)送位的同時(shí)也對(duì)總線進(jìn)行監(jiān)視。如果所發(fā)送的位值與所監(jiān)視的位值不相合,則在此位時(shí)間里檢測(cè)到一個(gè)位錯(cuò)誤。但是在仲裁場(chǎng)(ARBITRATIONFIELD)的填充位流期間或應(yīng)答間隙(ACKSLOT)發(fā)送一"隱性"位的情況是例外的。此時(shí),當(dāng)監(jiān)視到一"顯性"位時(shí),不會(huì)發(fā)出位錯(cuò)誤。當(dāng)發(fā)送器發(fā)送一個(gè)被動(dòng)錯(cuò)誤標(biāo)志但檢測(cè)到"顯性"位時(shí),也不視為位錯(cuò)誤。
2.填充錯(cuò)誤(StruffError)
如果在使用位填充法進(jìn)行編碼的信息中,出現(xiàn)了第6個(gè)連續(xù)相同的位電平時(shí),將檢測(cè)到一個(gè)填充錯(cuò)誤。
3.CRC錯(cuò)誤(CRCError)
CRC序列包括發(fā)送器的CRC計(jì)算結(jié)果。接收器計(jì)算CRC的方法與發(fā)送器相同。如果計(jì)算結(jié)果與接收到CRC序列的結(jié)果不相符,則檢測(cè)到一個(gè)CRC錯(cuò)誤。
4.形式錯(cuò)誤(FormError)
當(dāng)一個(gè)固定形式的位場(chǎng)含有1個(gè)或多個(gè)非法位,則檢測(cè)到一個(gè)形式錯(cuò)誤。(備注:接收器的幀末尾最后一位期間的顯性位不被當(dāng)作幀錯(cuò)誤)
5.應(yīng)答錯(cuò)誤(AcknowledgmentError)
只要在應(yīng)答間隙(ACKSLOT)期間所監(jiān)視的位不為"顯性",則發(fā)送器會(huì)檢測(cè)到一個(gè)應(yīng)答錯(cuò)誤。
1.4.2錯(cuò)誤標(biāo)定
檢測(cè)到錯(cuò)誤條件的站通過發(fā)送錯(cuò)誤標(biāo)志指示錯(cuò)誤。對(duì)于"錯(cuò)誤主動(dòng)"的節(jié)點(diǎn),錯(cuò)誤信息為"主動(dòng)錯(cuò)誤標(biāo)志",對(duì)于"錯(cuò)誤被動(dòng)"的節(jié)點(diǎn),錯(cuò)誤信息為"被動(dòng)錯(cuò)誤標(biāo)志"。站檢測(cè)到無論是位錯(cuò)誤、填充錯(cuò)誤、形式錯(cuò)誤,還是應(yīng)答錯(cuò)誤,這個(gè)站會(huì)在下一位時(shí)發(fā)出錯(cuò)誤標(biāo)志信息。只要檢測(cè)到的錯(cuò)誤的條件是CRC錯(cuò)誤,錯(cuò)誤標(biāo)志的發(fā)送開始于ACK界定符之后的位(其他的錯(cuò)誤條件除外)。
2.CAN控制器SJA1000分析
2.1CAN節(jié)點(diǎn)結(jié)構(gòu)與SJA1000操作模式
SJA1000獨(dú)立的CAN控制器有2個(gè)不同的操作模式:
BasicCAN模式(和PCA82C200兼容);
PeliCAN模式
BasicCAN模式是上電后默認(rèn)的操作模式。因此用PCA82C200開發(fā)的已有硬件和軟件可以直接在SJA1000上使用,而不用作任何修改。
PeliCAN模式是新的操作模式,它能夠處理所有CAN2.0B規(guī)范的幀類型。而且它還提供一些增強(qiáng)功能,例如,SJA1000支持一些錯(cuò)誤分析功能,支持系統(tǒng)診斷、系統(tǒng)維護(hù)和系統(tǒng)優(yōu)化,而且這個(gè)模式里也加入了對(duì)一般CPU的支持和系統(tǒng)自身測(cè)試的功能。使SJA1000能應(yīng)用于更寬的領(lǐng)域。
本設(shè)計(jì)采用PeliCAN模式,因此只給出PeliCAN模式增強(qiáng)功能。如表2-1所示。
表2-1PeliCAN模式的增強(qiáng)功能
CAN2.0B(active)
CAN2.0Bactive支持帶有29位標(biāo)識(shí)符的網(wǎng)絡(luò)擴(kuò)展應(yīng)用
發(fā)送緩沖器
有11位或29位標(biāo)識(shí)符的報(bào)文的單報(bào)文發(fā)送緩沖器
增強(qiáng)的驗(yàn)收濾波器
兩個(gè)驗(yàn)收濾波器模式支持11位和29位標(biāo)識(shí)符的濾波
可讀的錯(cuò)誤計(jì)數(shù)器
支持錯(cuò)誤分析在原型階段和在正常操作期間可用于:診斷、系統(tǒng)維護(hù)、系統(tǒng)優(yōu)化
可編程的出錯(cuò)警告界限
錯(cuò)誤代碼捕捉寄存器
出錯(cuò)中斷
仲裁丟失捕捉中斷
支持系統(tǒng)優(yōu)化包括報(bào)文延遲時(shí)間的分析
單次發(fā)送
使軟件命令最小化和允許快速重載發(fā)送緩沖器
僅聽模式
SJA1000能夠作為一個(gè)認(rèn)可的CAN監(jiān)控器操作,可以分析CAN總線通信或進(jìn)行自動(dòng)位速率檢測(cè)
自測(cè)試模式
支持全部CAN節(jié)點(diǎn)的功能自測(cè)試或在一個(gè)系統(tǒng)內(nèi)的自接收
通常,每個(gè)CAN模塊能夠被分成不同的功能塊,如圖2-1所示。
CAN控制器執(zhí)行在CAN規(guī)范里規(guī)定的完整CAN協(xié)議。它通常用于報(bào)文緩沖和驗(yàn)收濾波。
通用CAN收發(fā)器實(shí)現(xiàn)從CAN控制器到CAN總線物理層的電氣連接。
而所有這些CAN功能都由一個(gè)模塊控制器控制,它負(fù)責(zé)執(zhí)行應(yīng)用層的功能。
元器件清單
表3-3CAN總線與RS-2232接口電路設(shè)計(jì)元?dú)饧鍐?/p>
序號(hào)
元件名稱
數(shù)量(個(gè))
單價(jià)(元)
總價(jià)(元)
1
AT89C51
1
7.50
7.50
2
SJA1000
1
25.00
25.00
3
HM6116
1
1.00
1.00
4
MAX232
1
5.00
5.00
5
74HC373
1
1.00
1.00
6
PCA82C250
1
6.50
6.50
7
X25045
1
1.00
1.00
8
TLP113
2
3.00
6.00
合計(jì)
53.00
結(jié)論
本設(shè)計(jì)完成了CAN總線與RS-232轉(zhuǎn)換接口設(shè)計(jì)。由于CAN總線與RS-232接口數(shù)據(jù)通信速率以及通信幀格式都不同,本設(shè)計(jì)最大優(yōu)點(diǎn)是解決了這兩點(diǎn)不同,實(shí)現(xiàn)了數(shù)據(jù)在CAN總線與RS-232接口之間的傳輸。且設(shè)計(jì)中由于使用了CAN總線進(jìn)行數(shù)據(jù)傳輸這就使得通信方式多主性。網(wǎng)絡(luò)上任意節(jié)點(diǎn)可以任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息而不分主從。可以點(diǎn)對(duì)點(diǎn),點(diǎn)對(duì)多點(diǎn)或全局廣播方式發(fā)送和接收數(shù)據(jù)。
由于CAN總線標(biāo)準(zhǔn)沒有定義應(yīng)用層,數(shù)據(jù)鏈路層提供與信息內(nèi)容相應(yīng)的尋址能力,消息的內(nèi)容完全由應(yīng)用解釋。且CAN總線的每個(gè)數(shù)據(jù)幀最多只能承載8個(gè)字節(jié)的數(shù)據(jù),因而只適應(yīng)提供短的變量服務(wù)。許多功能還需要擴(kuò)展。
綜上所述,通過此次設(shè)計(jì),我們感受到CAN總線帶來的各種便利。而且,由于CAN總線具有結(jié)構(gòu)簡(jiǎn)單、實(shí)時(shí)性極高、可靠性強(qiáng)且本身具有強(qiáng)大的糾錯(cuò)能力。使得它在當(dāng)今自動(dòng)控制領(lǐng)域中的應(yīng)用極為廣泛。由于CAN協(xié)議參考OSI開放系統(tǒng)互聯(lián)模型,可由用戶定義應(yīng)用層協(xié)議,通過相關(guān)的CAN轉(zhuǎn)接設(shè)備,將CAN與計(jì)算機(jī)相連,利用CAN232B轉(zhuǎn)換器組建一個(gè)CAN控制網(wǎng)絡(luò),能夠很方便的實(shí)現(xiàn)RS-232多點(diǎn)組網(wǎng)、遠(yuǎn)程通訊,并且,不需要更改原有RS-232通訊軟件,用戶可直接嵌入原有的應(yīng)用領(lǐng)域,使系統(tǒng)設(shè)計(jì)達(dá)到更先進(jìn)的水平。
摘要............................................................................................................Ι
ABSTRACT..................................................................................................................................ΙΙ
引言1
1.CAN總線協(xié)議分析2
1.1CAN總線主要特點(diǎn)2
1.2CAN總線協(xié)議2
1.3CAN總線報(bào)文傳輸結(jié)構(gòu)3
1.4CAN總線錯(cuò)誤處理3
1.4.1錯(cuò)誤檢測(cè)3
1.4.2錯(cuò)誤標(biāo)定4
2.CAN控制器SJA1000分析5
2.1CAN節(jié)點(diǎn)結(jié)構(gòu)與SJA1000操作模式5
2.2SJA1000內(nèi)部結(jié)構(gòu)及其功能分析6
3.CAN總線與RS-232轉(zhuǎn)換接口電路設(shè)計(jì)11
3.1CAN總線與RS-232轉(zhuǎn)換接口電路總體設(shè)計(jì)11
3.2主控制模塊電路設(shè)計(jì)12
3.2.1AT89C51與6116電路設(shè)計(jì)13
3.2.2看門狗電路設(shè)計(jì)14
3.3AT89C51與RS-232轉(zhuǎn)換接口電路設(shè)計(jì)16
3.3.1RS-232-C標(biāo)準(zhǔn)分析16
3.3.2RS-232與AT89C51接口電路設(shè)計(jì)18
3.4SJA1000與AT89C51接口電路設(shè)計(jì)19
3.4.1SJA1000與AT89C51接口電路設(shè)計(jì)19
3.4.2物理層接口電路設(shè)計(jì)21
3.5元器件清單22
引言
USB接口(UniversalSerialBus)是一種通用的高速串行接口。它最主要的特點(diǎn)是它的高速傳輸特性。USB1.1理論速度極限可以達(dá)到12Mb/s,USB2.0可達(dá)到480Mb/s。這樣,它可以很好解決大數(shù)據(jù)量的數(shù)據(jù)在嵌入式系統(tǒng)與PC機(jī)之間的互傳問題;同時(shí),它支持熱插拔,并且最多同時(shí)支持127個(gè)外設(shè),非常適合嵌入式系統(tǒng)的應(yīng)用。
本次設(shè)計(jì)是在一個(gè)已有的DSP圖像采集嵌入式系統(tǒng)的基礎(chǔ)上,為它配接上一個(gè)USB1.1的接口,以達(dá)到DSP圖像采集系統(tǒng)高速地將圖像數(shù)據(jù)回傳到PC機(jī)中的目的。設(shè)計(jì)的要求主要有:
①在原有平臺(tái)提供的接口基礎(chǔ)上,加入一個(gè)低成本、高速度的USB接口;
②通過USB接口,實(shí)現(xiàn)PC機(jī)對(duì)DSP圖像采集系統(tǒng)的操作與控制;
③實(shí)現(xiàn)圖像數(shù)據(jù)在DSP攝像系統(tǒng)與PC機(jī)之間高速的雙向傳輸。
基于以上幾點(diǎn)可以看出,本方案最主要的特點(diǎn)是成本低廉且傳輸速度高。
1硬件方案選擇與設(shè)計(jì)
1.1方案選擇
對(duì)于基于DSP平臺(tái)的USB接口設(shè)計(jì),經(jīng)過綜合考慮了幾種方案之后決定,采用一個(gè)不帶MCU內(nèi)核的USB接口芯片PDIUSBD12(成本非常低,一片PDIUSBD12的價(jià)格僅為20元),再加上簡(jiǎn)單的電路和時(shí)序調(diào)整電路。
這種芯片僅僅完成USB底層的數(shù)據(jù)鏈路級(jí)交換,并提供給本地微控制器一個(gè)并行的接口,但是它并不完成協(xié)議層的工作。協(xié)議層的工作需要對(duì)微控制器編程,控制USB接口芯片來實(shí)現(xiàn)USB協(xié)議。所以,開發(fā)難度相對(duì)來說大一些,要做的編程工作也多一點(diǎn)。但是這套方案的成本非常低,而且由于直接用DSP作為微控制器,沒有原單片機(jī)的瓶頸限制,所以可以實(shí)現(xiàn)很高的數(shù)據(jù)傳輸速率。該系統(tǒng)的原理框圖如圖1所示。
由于PDIUSBD12的并行接口時(shí)序較慢,只能達(dá)到2MB/s。這個(gè)速度相對(duì)于DSP來說比較低,而且有些地方不是簡(jiǎn)單地在程序中加入延時(shí)就可以調(diào)整,所以需要一個(gè)時(shí)序調(diào)整電路來完成它們之間的配合。
圖2TMS320C2XX寫時(shí)序
1.2PDIUSBD12芯片
PDIUSBD12芯片是由Philips公司推出的一種USB1.1接口芯片。它可以工作在5V或者3.3V的工作電壓下;具有8位數(shù)據(jù)總線,且有完全自治的DMA傳輸操作。它還具有可控制的軟件連接(SoftConnect)功能,可以保證在微控制器可靠完成初始化之后再連接上USB總線。另外,它還有一個(gè)LED驅(qū)動(dòng)腳,可以外接LED來監(jiān)測(cè)USB的枚舉過程和數(shù)據(jù)傳輸過程。當(dāng)USB接口枚舉完成,并且成功配置以后,LED將會(huì)一直點(diǎn)亮;而在枚舉過程以及USB數(shù)據(jù)通信過程中,LED只是有節(jié)奏地閃爍。
PDIUSBD12只占用微控制器的兩個(gè)地址資源。也就是說,它只有一根地址線。其中一個(gè)地址用來向芯片中寫命令,另外一個(gè)地址用來向燕片中寫數(shù)據(jù)或者從芯片中讀取數(shù)據(jù)。
PDIUSBD12一共有三組端點(diǎn):端點(diǎn)0完成控制傳輸;端點(diǎn)1可以配置成中斷傳輸;端點(diǎn)2是主要的數(shù)據(jù)傳輸端點(diǎn)。它有64B的緩沖區(qū),如果加上它的雙緩沖機(jī)制,就有128B的緩沖區(qū);它可以配置成批量傳輸模式,或者同步傳輸模式。
總的來說,PDIUSBD12是一款性能優(yōu)異,價(jià)格相對(duì)軟低的USB接口芯片。
1.3時(shí)序芯片
為了降低成本、簡(jiǎn)化電路,本方案不使用DMA傳輸方式,而以TI公司的TMS320C2XX作為微控制器(使用20MHz晶振)。它的并口速度非常高,遠(yuǎn)遠(yuǎn)高于PDIUSBD12所要求的最高限制2MB/s。此處是硬件設(shè)計(jì)最關(guān)鍵的地方。
經(jīng)過詳細(xì)的時(shí)序分析發(fā)現(xiàn),大部分問題可以通過在DSP固件設(shè)計(jì)的加入延時(shí),或者設(shè)置DSP的WSGR寄存器來解決。但是有一個(gè)問題,必須在硬件上加以解決。圖2是DSP(TMS320C2XX)的寫時(shí)序。
圖3PDIUSBD12寫時(shí)序
圖2中,參數(shù)th(W-D)是指在WE信號(hào)變高(無效)以后,所寫的數(shù)據(jù)將仍然保持有效的時(shí)間。這個(gè)值最小為3ns,最大為14ns,所以所寫的數(shù)據(jù)在WE信號(hào)無效以后還會(huì)維持有效,大約3~14ns(實(shí)際的延時(shí)介于這兩個(gè)值之間)。
圖3是PDIUSBD12所要求的寫時(shí)序。圖中,參量tWDH是與DSP(TMS320C2XX)參量th(W-D)相對(duì)應(yīng)的另外一個(gè)參量。這個(gè)參量反映了PDIUSBD12要求微控制器在向其中寫數(shù)據(jù)時(shí),所寫的數(shù)據(jù)在WR信號(hào)無效之后,要繼續(xù)保持有效的時(shí)間。這個(gè)參量最小值為10ns。也就是說,PDIUSBD12要求所寫的數(shù)據(jù)最少要保持有效10ns(在WR無效之后)。
由此可以看出,DSP(TMS320C2XX)的寫時(shí)序不能可靠地保證滿足PDIUSBD12的要求,而且這個(gè)問題無法通過軟件加延時(shí)的方法來解決,必須通過硬件來處理。經(jīng)過分析對(duì)比,最后決定采用一個(gè)很簡(jiǎn)單但是后來事實(shí)證明非常有效的方法來調(diào)整它們之間的時(shí)序。那就是在DSP(TMS320C2XX)與PDIUSBD12的總線之間加一個(gè)雙向緩沖器-74LS245。這個(gè)芯片可以在它們的時(shí)序之間引入一個(gè)延時(shí)。雖然這個(gè)延時(shí)并不可靠、但是由于DSP(TMS320C2XX)本身會(huì)在WR無效后,繼續(xù)保持?jǐn)?shù)據(jù)有效一段時(shí)間(前面已講過),這要僅僅需要將延時(shí)適當(dāng)延長(zhǎng)一點(diǎn)就可以了。74LS245所造成的延時(shí)典型值為15ns,最小也為8ns。這樣,加上原來DSP寫時(shí)序的延時(shí),就可以滿足PDIUSBD12所要求的寫時(shí)序了。
另外由于加入74LS245所造成的對(duì)其它接口時(shí)序的影響,可以通過設(shè)置DSP(TMS320C2XX)的WSGR寄存器來消除,所以這個(gè)方案是可行的。(事實(shí)上,后來制造好的電路也證明了這個(gè)方案是完全可行的)
對(duì)其余時(shí)序上的配合,經(jīng)過仔細(xì)的計(jì)算與核對(duì)證明,也是完全可行的。在硬件上,哂方案還采用了一片GAL(16V8)來實(shí)現(xiàn)對(duì)PDIUSBD12芯片的片選,以及實(shí)現(xiàn)對(duì)它的軟件和手動(dòng)復(fù)位。硬件總體框圖如圖4所示。
2軟件設(shè)計(jì)
2.1固件設(shè)計(jì)
由于采用的是不帶MCU內(nèi)核的USB接口芯片,所以關(guān)于USB1.1協(xié)議規(guī)范的實(shí)現(xiàn)都必須靠DSP(TMS320C2XX)控制PDIUSBD12芯片來完成。固件的主要設(shè)計(jì)任務(wù)是:在DSP(TMS320C2XX)的平臺(tái)上編寫程序,以完成USB1.1規(guī)范所要求的標(biāo)準(zhǔn)請(qǐng)求及用戶根據(jù)產(chǎn)品需要自己定義的請(qǐng)求。
為了不影響程序的執(zhí)行效率,本方案采用中斷方式完成固件的編寫;同時(shí),為了保證程序的模塊化及良好的可移植性,在設(shè)計(jì)中采用分層結(jié)構(gòu)進(jìn)行固件的編寫,如圖5所示。
最下層是硬件接口層,完成硬件上PDIUSBD12與DSP(TMS320C2XX)的對(duì)接。主要是DSP(TMS320C2XX)向PDIUSBD12中寫入數(shù)據(jù)或者命令,以及從中讀取數(shù)據(jù)。
中間層主要有兩個(gè)模塊,用來完成PDIUSBD12的命令接口和中斷處理子程序。命令接口是指按照PDIUSBD12的命令格式,完成DSP對(duì)它的控制。它的基本命令格式是:DSP先向其中的命令地址寫入某一條命令,接著從它的數(shù)據(jù)地址寫入或者讀出一系列的數(shù)據(jù)。中斷處理子程序是判斷中斷的產(chǎn)生源,然后跳轉(zhuǎn)到相應(yīng)的處理子程序。這些子程序不做過多的處理,而僅僅是將命令數(shù)據(jù)讀出然后置標(biāo)志位,或者是將某些數(shù)據(jù)送出。
最上層是主循環(huán)程序,以及對(duì)于USB1.1標(biāo)準(zhǔn)協(xié)議請(qǐng)求(這些請(qǐng)求主要是在USB1.1協(xié)議規(guī)范的第九章中定義的)和用戶自定義請(qǐng)求的處理程序。主循環(huán)的主要工作是檢查標(biāo)志位。如果標(biāo)志位被置位,則調(diào)用處理子程序,判斷是標(biāo)準(zhǔn)請(qǐng)求還是用戶自定義請(qǐng)求,然后調(diào)用相應(yīng)的處理程序加以處理,完成請(qǐng)求。
這樣分層的好處是:主循環(huán)程序在檢查標(biāo)志位以外的時(shí)間可以進(jìn)行其它工作,提高固件的運(yùn)行效率。
編程過程中,由于涉及了一些嚴(yán)格的接口時(shí)序配合問題,所以,整個(gè)固件的編寫工作全部采用DSP(TMS320C2XX)的匯編語言;用的是CC2000編程開發(fā)工具。
2.2PC機(jī)軟件的設(shè)計(jì)
PC機(jī)的驅(qū)動(dòng)程序由Philips公司提供。然后,用VC++6.0,通過調(diào)用API函數(shù),編寫PC的應(yīng)用程序。這樣即可實(shí)現(xiàn)PC機(jī)對(duì)DSP(TMS320C2XX)攝像系統(tǒng)的攝像控制以及圖像的傳輸。
主要使用的API函數(shù)是DeviceIOControl()、ReadFile()、WriteFile()。其中DeviceIOControl()用于PC(主機(jī))向DSP圖像采集系統(tǒng)發(fā)送請(qǐng)求;ReadFile()和WriteFile()分別用于從圖像采集系統(tǒng)中讀出數(shù)據(jù)以及向圖像采集系統(tǒng)中寫入數(shù)據(jù)。
在設(shè)計(jì)過程中必須注意的問題是:由于USB接口是主-從方式的接口,它的一切傳輸過程都必須通過主機(jī)向外設(shè)發(fā)送請(qǐng)求后才可以開始,所以在使用ReadFile()、WriteFile()讀寫數(shù)據(jù)之前,必須先通過DeviceIOControl()向圖像采集系統(tǒng)發(fā)送請(qǐng)求。
智能家庭要求家用電器經(jīng)網(wǎng)絡(luò)(總線)實(shí)現(xiàn)互聯(lián)、互操,總線協(xié)議是其精髓所在。目前,國(guó)際上占主導(dǎo)地位的家庭網(wǎng)絡(luò)標(biāo)準(zhǔn)有:美國(guó)的X10[1]、消費(fèi)總線(CEBus)[2]、日本的家庭總線(HOMEBUS)[3]、歐洲的安裝總線(EIB)[4]。
消費(fèi)總線使用五種類型的介質(zhì)(電力線、無線、紅外、雙絞線和同軸電纜),其中以電力線的應(yīng)用最為廣泛。消費(fèi)總線得到IBM、Hownywell、Microsoft、Intellon、Lucent、Philips、Siements等大公司的支持,1992年成為美國(guó)電力工業(yè)協(xié)會(huì)的標(biāo)準(zhǔn)(EIA600、EIA721)。1997年,EIA600成為美國(guó)ANSI標(biāo)準(zhǔn);2000年6月,微軟和CEBus委員會(huì)共同宣布支持CEBus的簡(jiǎn)單控制協(xié)議SCP。SCP是未來微中UPNP協(xié)議的子集。
1CEBus電力線物理層
鑒于家庭中電力線載波通訊的特殊性,CEBus采用價(jià)格低廉、簡(jiǎn)單易行的線性調(diào)頻(chirp)擴(kuò)頻調(diào)制技術(shù)。摒棄了傳統(tǒng)電力線載波通常應(yīng)用的直接序列擴(kuò)頻、調(diào)頻擴(kuò)頻、跳時(shí)擴(kuò)頻等設(shè)備復(fù)雜、價(jià)格昂貴的擴(kuò)頻調(diào)制技術(shù)。
圖2通用通訊模塊的原理圖
消費(fèi)總線的物理層有四種碼,分別是:“0”、“1”、“EOF”和“EOP”。均為掃頻信號(hào),正弦信號(hào)載波,從203kHz經(jīng)過19個(gè)周期線性地變?yōu)?00kHz,再經(jīng)過1個(gè)周期變?yōu)?00kHz,然后在5個(gè)周期中變?yōu)?03kHz,整個(gè)過程用時(shí)100μs,也就是1個(gè)UST(Unitsymbletime,在消費(fèi)總線中用多少個(gè)UST來度量時(shí)間)。其波形如圖1所示。
chirps掃頻載波需經(jīng)過放大耦合到電力線上,放大后的幅度應(yīng)適中。幅度太低,給接收電路帶來困難;幅度太大,又會(huì)對(duì)電力線上的設(shè)備產(chǎn)生干擾。CEBus的規(guī)定如表1[5]所示。
表1不同條件下的載波幅度值
設(shè)備工作電壓最小幅值最大幅值負(fù)載范圍
~120V2.5Vpp7Vpp10Ω~2kΩ
~240V5Vpp14Vpp39Ω~8.2kΩ
表2不同條件下的設(shè)備輸入阻抗值
設(shè)備工作電壓設(shè)備輸入阻抗(在頻率20kHz~50000kHz)載波幅值
~120V>150Ω6Vpp
~240V>300Ω12Vpp
同時(shí)也規(guī)定了電器設(shè)備對(duì)信號(hào)的阻抗。如果阻抗很小,就會(huì)將信號(hào)吸收從而無法傳送國(guó)。規(guī)定如表2[5]所示。
線性調(diào)頻技術(shù)實(shí)現(xiàn)寬帶低功率密度傳輸,從而大大提高抗干擾性能和傳輸距離。同時(shí),chirps具有很強(qiáng)的自相關(guān)性和自同步性。這種自相關(guān)決定了所有連接在網(wǎng)絡(luò)上的設(shè)備可以同時(shí)識(shí)別從網(wǎng)上任意設(shè)備發(fā)出的這種特殊波形。
2通訊模塊的設(shè)計(jì)
根據(jù)P89C51RD2和P300的芯片手冊(cè)[6][7],設(shè)計(jì)的通用通訊模塊的原理圖如圖2所示。P89C51RD2和P300之間采用SPI接口通訊,用模擬的I2C總線和串行EEPROM通訊。這樣,中斷口、串口和有足夠的I/O口可以用于實(shí)際設(shè)備的設(shè)計(jì)。
3通訊模塊電力線接口電路的設(shè)計(jì)
從P300輸出的信號(hào)幅度小、驅(qū)動(dòng)能力弱而且還有高次諧波,因此必須經(jīng)過濾波和放大,然后才能通過耦合電路將信號(hào)調(diào)制到電力線上。耦合電路將高壓和低壓隔離開,防止高壓擊穿通訊電路。另一方面,從電力線來的載波信號(hào)又要由P300接收,而電力線上的干擾很大也很不確定,所以需要一個(gè)帶通濾波器,通過100kHz~400kHz之間的信號(hào),再送到P300的接收端。電路的方框圖如圖3所示。
其中左邊的3根線來自P300,TS是數(shù)字信號(hào),控制收發(fā)轉(zhuǎn)換。實(shí)際上P300的收發(fā)類似半雙工方式,因?yàn)楫?dāng)它在“發(fā)送”劣態(tài)的時(shí)候,實(shí)際上并沒有輸出信號(hào)。因此,這個(gè)時(shí)候它可以處于接收狀態(tài),如果接收到了優(yōu)態(tài),就表示發(fā)生了競(jìng)爭(zhēng)。
3.1濾波電路
輸入濾波器電路如圖4所示。
這個(gè)濾波器有6階,對(duì)高頻干擾有很好的抑制,圖5是它的頻率響應(yīng)曲線。在高頻段400kHz處衰減為3dB。高于400kHz的平均衰減為3dB,高于400kHz的平均衰減為128dB/dec,可以有效地過濾干擾信號(hào)。
P300輸出的信號(hào)包含豐富的高次諧波,為了減小對(duì)電網(wǎng)的干擾,先經(jīng)過帶通濾波器再進(jìn)行放大。濾波器也采用無源電路,原理與上面類似,這里不再多述。
3.2放大電路
P300的輸出信號(hào)經(jīng)過濾波之后,其內(nèi)阻很大,沒有驅(qū)動(dòng)能力,而且電壓幅度不符合消費(fèi)總線的要求,必須放大后才能夠驅(qū)動(dòng)電力線。放大電路不僅要有強(qiáng)有力的輸出能力,還需有禁止輸出功能,這樣才能使P300接收其它節(jié)點(diǎn)發(fā)出信號(hào)。
電網(wǎng)的性能不確定,有時(shí)是容性負(fù)載,有時(shí)是感性負(fù)載。這樣就給末級(jí)電路采用反饋帶來很大困難。因?yàn)楫?dāng)負(fù)載的阻抗特性變化時(shí),輸出的信號(hào)相位會(huì)發(fā)生變化,最終有可能是負(fù)反饋?zhàn)兂闪苏答仯瑥亩鹫袷帯?/p>
圖6電力載波放大電路
設(shè)計(jì)的電力載波放大電路如圖6所示,虛線的左邊的原理圖,右邊是實(shí)現(xiàn)電路圖。可以看出,這個(gè)電路有兩個(gè)輸入,一個(gè)輸出。輸入信號(hào)來自P300的電力載波,輸出使能控制放大器運(yùn)行。圖6的左半部分,T1和T2接成互補(bǔ)式OTL輸出,它們的偏置電壓來自電阻R1、R2的分壓。來自P300的信號(hào)經(jīng)過運(yùn)放U1放大達(dá)到期望的幅度,然后通過電容耦合到T1和T2的基極。如果開關(guān)S1和S2合上,則T1和T2正常輸出電信,P300可以發(fā)送數(shù)據(jù);如果S1和S2都斷開,那么T1和T2的基極都處于懸空狀態(tài),輸出端也成為懸浮狀態(tài),從而不會(huì)吸收由電力線傳來的信號(hào),P300可以接收信號(hào)。
在圖6的右邊,開關(guān)S1和S2也被T7和T8取代,T1和T2被復(fù)合管取代,其中的電阻R11用來消除三極管漏電電流的影響。采用復(fù)合管是為提高放大倍數(shù),這樣可以盡量減小級(jí)間耦合,即使輸出信號(hào)發(fā)生了畸變,也不會(huì)影響到前級(jí)而發(fā)生振蕩。實(shí)際證明這種做法是很可行的。其對(duì)容性負(fù)載、感性負(fù)載以及純電阻的負(fù)載都有較穩(wěn)定的輸出,輸出阻抗小于2Ω。
圖7P300與電力線的耦合電路
3.3耦合電路及保護(hù)措施