1 引 言
串行通信實際上就是兩臺電子設(shè)備之間一位一位地發(fā)送和接收數(shù)據(jù),它分為同步通信和異步通信兩類。異步串行通信無需數(shù)據(jù)時鐘、幀同步時鐘等時鐘信號,數(shù)據(jù)的發(fā)送和接收是自同步的,完全依靠收發(fā)雙方約定的傳輸波特率和數(shù)據(jù)線自身的電平變化來正確地收發(fā)數(shù)據(jù)位流,而且又因為它連線簡單,可以直接與PC機等帶異步串口的設(shè)備相連,同時它又采用RS 232電平,傳輸?shù)木嚯x要比同步通信的長。正因為有上述的優(yōu)點,異步串行通信被廣泛應(yīng)用在要進行遠距離遙測遙控的航天電子工程中。
但是,一般的處理器芯片都帶有同步串行接口,只有少數(shù)韻處理器,如TMS320F2XX、TMS320F24XX帶有速度相對較低的異步串口。為了實現(xiàn)那些沒有帶有異步串行接口的處理器能夠與其他設(shè)備進行異步串行通信,可以采用復(fù)雜可編程邏輯器件CPLD技術(shù),并結(jié)合異步串行通信的協(xié)議,對異步串行通信接口電路進行設(shè)計與實現(xiàn),該方法開發(fā)周期短,并且CPLD的時序嚴(yán)格,速度較快,可編程性好,還可以用于完成電子系統(tǒng)的其他邏輯功能的設(shè)計,如實現(xiàn)系統(tǒng)的譯碼和專門的緩沖電路。這樣一塊電路板上的外圍元器件數(shù)量就大大減少,系統(tǒng)的靈活性更好,調(diào)試也變得簡單的多了,同時,系統(tǒng)的功能模塊完成后可以先通過計算機進行仿真,再實際投入使用,降低了使用風(fēng)險性。
2異步串行通信的原理
異步串行通信方式是把一個字符看作一個獨立的信息單元,并且字符出現(xiàn)在數(shù)據(jù)流中的相對時間是任意的,而每一個字符中的各位是以固定的時間傳送。因此這種方式在同一字符內(nèi)部是同步的,而字符間是異步的。
異步通信的主要特點是字符幀的傳輸格式,這樣就使得發(fā)送方可以在字符之間可根據(jù)實際的需要插入不同的時間問隔,即每一個字符的發(fā)送是隨機的。異步串行通信是以數(shù)據(jù)幀的格式傳送的,1個字符開始傳輸前,輸出線必須在邏輯上處于‘1’狀態(tài),這稱為標(biāo)識態(tài)。傳輸一開始,輸出線由標(biāo)識態(tài)變?yōu)椤?’狀態(tài),從而作為起始位。起始位后面為5~8個信息位,信息位由低到高排列,即第1位為字符的最低位,在同一傳輸系統(tǒng)中,信息位的數(shù)目是固定的。信息位后面為校驗位,校驗位可以按奇校驗設(shè)置,也可以按偶校驗設(shè)置,不過,校驗位也可以不設(shè)置。最后的數(shù)位為‘1’,它作為停止位,停止位可為1位、1.5位或者2位。如果傳輸完1個字符以后,立即傳輸下一個字符,那么,后一個字符的起始位便緊挨著前一個字符的停止位了,否則,輸出線又會立即進入標(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è)定奇偶校驗、傳輸速率、握手機制以及中斷。在這個設(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)機描述發(fā)送過程,圖3是發(fā)送器狀態(tài)機狀態(tài)轉(zhuǎn)換示意圖。
3.2接收數(shù)據(jù)模塊
串行數(shù)據(jù)幀與接收時鐘是異步的,所以接收器功能實現(xiàn)中的關(guān)鍵是接收器時鐘與每個接收字符的同步。一個有效的方法是接收器采用高速率時鐘對串行數(shù)據(jù)進行采樣,通常采樣頻率是位時鐘頻率的整數(shù)倍,也就是選擇比較高的波特率因子。理論上倍數(shù)越高接收數(shù)據(jù)各位的分辨率越高,實際中一般最大選擇16倍。
接收器應(yīng)該盡可能地在靠近每個數(shù)據(jù)位周期的中心處進行采樣。如果接收器能很好地預(yù)測起始位的開始,那么它可在起始位的下降沿到來之后,等待半個位周期再采樣數(shù)據(jù)位。此后,接收器每等待一個位周期采樣一個數(shù)據(jù)位,直至收到最后一位為止。
接收過程主要由一個3位狀態(tài)機實現(xiàn),其狀態(tài)有空閑狀態(tài)、接收起始位、接收數(shù)據(jù)位、接收奇偶校驗位以及接收停止位。每一個狀態(tài)表明了當(dāng)前正在接收到數(shù)據(jù)屬于哪一種字符,并且根據(jù)當(dāng)前接收字符的狀態(tài)驅(qū)動其他部件進行合適的操作。狀態(tài)轉(zhuǎn)換機的轉(zhuǎn)換圖如圖4所示。
4基于CPLD的實現(xiàn)和仿真
可編程邏輯器件(PLD)是在20世紀(jì)80年代迅速發(fā)展起來的一種新型集成電路,隨著大規(guī)模集成電路的進一步發(fā)展,出現(xiàn)了PAL和GAL邏輯器件,而復(fù)雜可編程邏輯器件CPLD是在此邏輯器件基礎(chǔ)上發(fā)展起來的,它是由大量邏輯宏單元構(gòu)成的。通過配置,可以將這些邏輯宏單元形成不同的硬件結(jié)構(gòu),從而構(gòu)成不同的電子系統(tǒng),完成不同的功能。正是CPLD的這種硬件重構(gòu)的靈活性,使得設(shè)計者能夠?qū)⒂糜布枋稣Z言(如VHDL或者Veritog HDL)描述的電路在CPLD中實現(xiàn)。這樣一來,同一塊CPLD能實現(xiàn)許多完全不同的電路結(jié)構(gòu)和功能。同時也大大簡化了系統(tǒng)的調(diào)試,從而能極大地縮短系統(tǒng)的研發(fā)周期。
于是我們在驗證這一環(huán)節(jié)中,采用Xilinx公司的XC9500系列的XC95108 CPLD來驗證該方案的合理性。在用VHDL語言實現(xiàn)圖2的功能時,采用自頂向下的設(shè)計方法,先設(shè)計一個TOP頂層模塊,它里面包括了接口控制電路模塊,調(diào)制解調(diào)模塊,發(fā)送模塊和接收模塊。其中接口控制電路模塊包含了圖2中的波特率控制邏輯電路,數(shù)據(jù)總線緩沖器和讀寫控制邏輯電路。設(shè)計實現(xiàn)中比較復(fù)雜的部分就是接口控制電路的實現(xiàn)。在接口控制電路模塊中,設(shè)計了接收緩沖寄存器(RBR),發(fā)送保持寄存器(THR),中斷使能寄存器(IER),中斷標(biāo)識寄存器(IIR),模式選擇控制寄存器(LCR),調(diào)制解調(diào)控制寄存器(MCR),接收發(fā)送狀態(tài)寄存器(LSR),調(diào)制解調(diào)狀態(tài)寄存器(MSR),它們的存儲器映射地址分別設(shè)置為000~110,因為該設(shè)計中把控制器設(shè)計為不能同時接收和發(fā)送,所以接收緩沖寄存器(RBR)和發(fā)送保持寄存器(THR)共用一個地址。其中,模式選擇控制寄存器(LCR)用來設(shè)置,要發(fā)送數(shù)據(jù)的位數(shù)(從低到高發(fā)送),奇偶校驗位的位數(shù)和停止位的位數(shù)。
采用Xilinx公司的ISE工具發(fā)送和對接收這兩個關(guān)鍵模塊分別進行仿真,發(fā)送模塊的時序波形圖如圖5所示,接收數(shù)據(jù)模塊的時序波形圖如圖6所示。
在發(fā)送模塊的仿真測試程序中,讓CPU的數(shù)據(jù)總線連續(xù)發(fā)送55H,AAH,5AH,A5H,并在控制器的模式控制寄存器中設(shè)置發(fā)送的數(shù)據(jù)位5位,1個奇偶校驗位(偶校驗),1個停止位。在TxRDYn信號變低的時候,開始發(fā)送一幀新的數(shù)據(jù)。根據(jù)圖5中數(shù)據(jù)輸出信號Sout上信號變化的情況可以驗證該模塊設(shè)計是正確的。
在接收模塊仿真波形圖中,Sin信號是負責(zé)接收串行數(shù)據(jù)的信號線,RBR是該控制器內(nèi)部的緩沖寄存器,負責(zé)存儲經(jīng)過串并轉(zhuǎn)換后的數(shù)據(jù),RxRDYn是控制器的外部信號,用來告訴CPU,控制器已經(jīng)轉(zhuǎn)換完一幀數(shù)據(jù),CPU可以把數(shù)據(jù)從緩沖寄存器中取出。中斷信號INTR會在數(shù)據(jù)傳輸完后,產(chǎn)生一個正脈沖。在測試接收數(shù)據(jù)模塊的文件中,使產(chǎn)生一個連續(xù)的AAH和56H的串行數(shù)據(jù),在圖6中可以看到在Sin信號每接收完一個數(shù)據(jù)幀后,數(shù)據(jù)便存入RBR寄存器,RBR寄存器的數(shù)據(jù)位AAH和56H,并且在AAH傳完后,RxRDYn立即變?yōu)榈碗娖健?/p>
5 結(jié)語
本文在對異步串行通信協(xié)議進行分析的基礎(chǔ)上,根據(jù)實際工程的需要,對異步串行通信控制器進行了詳細設(shè)計,并結(jié)合CPLD器件,采用VHDL語言,對設(shè)計方案進行了實現(xiàn)和驗證,通過最后時序仿真的波形圖得出了設(shè)計方案的正確,而且加載了該設(shè)計程序的CPLD在實際工程中能夠很好地與處理器進行連接來收發(fā)數(shù)據(jù),從而為那些沒有串行異步接口的處理器提供一個比較理想的設(shè)計方案。(李洪威,張遂南)
-
cpld
+關(guān)注
關(guān)注
32文章
1257瀏覽量
170674 -
控制器
+關(guān)注
關(guān)注
114文章
16838瀏覽量
182272 -
vhdl
+關(guān)注
關(guān)注
30文章
819瀏覽量
129367
發(fā)布評論請先 登錄
相關(guān)推薦
利用可編程器件CPLD/FPGA實現(xiàn)VGA圖像控制器的設(shè)計方案

基于CPLD和FPGA的VHDL語言電路優(yōu)化設(shè)計
怎么實現(xiàn)基于CPLD的異步串行通訊控制器的設(shè)計?
CPLD器件在單片機控制器中的使用
異步串行通信接口電路的VHDL語言設(shè)計
基于CPLD的電梯控制器的設(shè)計
采用CPLD/FPGA的VHDL語言電路優(yōu)化原理設(shè)計

基于CPLD的GPIB控制器

基于VHDL的DRAM控制器設(shè)計

基于VHDL語言和可編程邏輯器件實現(xiàn)Petri網(wǎng)邏輯控制器的設(shè)計

評論