1 引 言
串行通信實際上就是兩臺電子設(shè)備之間一位一位地發(fā)送和接收數(shù)據(jù),它分為同步通信和異步通信兩類。異步串行通信無需數(shù)據(jù)時鐘、幀同步時鐘等時鐘信號,數(shù)據(jù)的發(fā)送和接收是自同步的,完全依靠收發(fā)雙方約定的傳輸波特率和數(shù)據(jù)線自身的電平變化來正確地收發(fā)數(shù)據(jù)位流,而且又因為它連線簡單,可以直接與PC機(jī)等帶異步串口的設(shè)備相連,同時它又采用RS 232電平,傳輸?shù)木嚯x要比同步通信的長。正因為有上述的優(yōu)點,異步串行通信被廣泛應(yīng)用在要進(jìn)行遠(yuǎn)距離遙測遙控的航天電子工程中。
但是,一般的處理器芯片都帶有同步串行接口,只有少數(shù)韻處理器,如TMS320F2XX、TMS320F24XX帶有速度相對較低的異步串口。為了實現(xiàn)那些沒有帶有異步串行接口的處理器能夠與其他設(shè)備進(jìn)行異步串行通信,可以采用復(fù)雜可編程邏輯器件CPLD技術(shù),并結(jié)合異步串行通信的協(xié)議,對異步串行通信接口電路進(jìn)行設(shè)計與實現(xiàn),該方法開發(fā)周期短,并且CPLD的時序嚴(yán)格,速度較快,可編程性好,還可以用于完成電子系統(tǒng)的其他邏輯功能的設(shè)計,如實現(xiàn)系統(tǒng)的譯碼和專門的緩沖電路。這樣一塊電路板上的外圍元器件數(shù)量就大大減少,系統(tǒng)的靈活性更好,調(diào)試也變得簡單的多了,同時,系統(tǒng)的功能模塊完成后可以先通過計算機(jī)進(jìn)行仿真,再實際投入使用,降低了使用風(fēng)險性。
2異步串行通信的原理
異步串行通信方式是把一個字符看作一個獨(dú)立的信息單元,并且字符出現(xiàn)在數(shù)據(jù)流中的相對時間是任意的,而每一個字符中的各位是以固定的時間傳送。因此這種方式在同一字符內(nèi)部是同步的,而字符間是異步的。
異步通信的主要特點是字符幀的傳輸格式,這樣就使得發(fā)送方可以在字符之間可根據(jù)實際的需要插入不同的時間問隔,即每一個字符的發(fā)送是隨機(jī)的。異步串行通信是以數(shù)據(jù)幀的格式傳送的,1個字符開始傳輸前,輸出線必須在邏輯上處于‘1’狀態(tài),這稱為標(biāo)識態(tài)。傳輸一開始,輸出線由標(biāo)識態(tài)變?yōu)?lsquo;0’狀態(tài),從而作為起始位。起始位后面為5~8個信息位,信息位由低到高排列,即第1位為字符的最低位,在同一傳輸系統(tǒng)中,信息位的數(shù)目是固定的。信息位后面為校驗位,校驗位可以按奇校驗設(shè)置,也可以按偶校驗設(shè)置,不過,校驗位也可以不設(shè)置。最后的數(shù)位為‘1’,它作為停止位,停止位可為1位、1.5位或者2位。如果傳輸完1個字符以后,立即傳輸下一個字符,那么,后一個字符的起始位便緊挨著前一個字符的停止位了,否則,輸出線又會立即進(jìn)入標(biāo)識態(tài),即邏輯上處于‘1’。圖1是兩個字節(jié)0XA0和0X67被傳輸?shù)膸母袷健?/p>
在通信中發(fā)送方和接收方之間允許沒有共同的時鐘,所以在異步通信中,收發(fā)雙方取得同步的方法是采用在字符格式中設(shè)置起始位和停止位的辦法。每一個字符傳輸前,信號線上始終為高電平,一旦開始傳送就要先傳送一個低電平的起始位,這樣接收方就開始接收數(shù)據(jù),從而與發(fā)送方保持同步(格式上的同步)。通信雙方可按使用需要隨時改變通信協(xié)議,即改變數(shù)據(jù)位、奇偶校驗位和停止位長度和數(shù)據(jù)傳輸率。
3異步串行通訊控制器的結(jié)構(gòu)設(shè)計
異步串行通訊控制器的內(nèi)部結(jié)構(gòu)可分為控制邏輯電路和寄存器組兩大部分。在控制邏輯電路中,包括波特率控制電路、讀寫控制邏輯電路、發(fā)送控制電路、接收控制電路、調(diào)制解調(diào)器控制邏輯電路、中斷控制邏輯電路和內(nèi)部總線控制邏輯電路。寄存器組分為模式寄存器、控制寄存器和狀態(tài)寄存器。結(jié)構(gòu)框圖如圖2所示。
該異步串行通訊控制器提供的模式寄存器和控制寄存器,用來設(shè)定奇偶校驗、傳輸速率、握手機(jī)制以及中斷。在這個設(shè)計中,提供了3種奇偶校驗選擇:不采用、奇校驗或偶校驗。傳輸速率的設(shè)定是通過向模式寄存器中設(shè)置特定的數(shù)值,來選擇波特率因子,再結(jié)合外部連入的時鐘信號就可以得出傳輸?shù)牟ㄌ芈柿恕K鼈冎g的關(guān)系是:時鐘頻率=波特率因子×波特率。
3.1發(fā)送數(shù)據(jù)模塊
串行異步通信的發(fā)送器的實現(xiàn)要比接收器簡單很多。沒有數(shù)據(jù)要發(fā)送時,發(fā)送數(shù)據(jù)寄存器為空,發(fā)送器處于空閑狀態(tài);當(dāng)檢測到發(fā)送數(shù)據(jù)寄存器滿信號后,發(fā)送器開始發(fā)送起始位,同時8個數(shù)據(jù)位被并行裝入發(fā)送移位寄存器,停止位緊接著數(shù)據(jù)位指示數(shù)據(jù)幀結(jié)束。只有發(fā)送數(shù)據(jù)寄存器為空時,待發(fā)送的數(shù)據(jù)才能被裝入,在設(shè)計中用一個TxE信號來告訴CPU此時控制器的發(fā)送寄存器為空。程序中使用計數(shù)器來保證發(fā)送數(shù)據(jù)時時鐘的正確。這里使用一個狀態(tài)機(jī)描述發(fā)送過程,圖3是發(fā)送器狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換示意圖。
作者:李洪威,張遂南 來源:中電網(wǎng)