基于CPLD的異步串行通信設(shè)計(jì)
摘 要:
摘 要:異步串行通信技術(shù)在電子通信設(shè)備中被廣泛使用。隨著復(fù)雜可編程邏輯器件(CPLD)的發(fā)展,按照異步串行通信的協(xié)議,采用VHDL語言編程,可以將異步串行通信功能集成到CPLD內(nèi),也就是用軟件的方法實(shí)現(xiàn)硬件的功能,既減少了元器件數(shù)量、簡化了電路,又提高了設(shè)計(jì)的可靠性。
關(guān)鍵詞:
關(guān)鍵詞:CPLD VHDL 異步串行通信
異步串行通信無需數(shù)據(jù)時(shí)鐘、幀同步時(shí)鐘等時(shí)鐘信號(hào),完全依靠收發(fā)雙方約定的傳輸波特率和數(shù)據(jù)線自身的電平變化來正確的收發(fā)數(shù)據(jù),而且連線簡單,廣泛應(yīng)用于電子通信設(shè)備中。
由于許多微處理器都沒有異步串行口,為了實(shí)現(xiàn)異步串行通信,需要使用專用串行通信芯片,電路設(shè)計(jì)比較復(fù)雜。隨著復(fù)雜可編程邏輯器件(CPLD)的發(fā)展,按照異步串行通信的協(xié)議,采用VHDL語言編程,可以將異步串行通信功能集成到CPLD內(nèi),也就是用軟件的方法實(shí)現(xiàn)硬件的功能,既減少了元器件數(shù)量、簡化了電路,,又提高了設(shè)計(jì)的可靠性。軟件編程采用的VHDL硬件描述語言,設(shè)計(jì)靈活,調(diào)試簡單,可以先通過計(jì)算機(jī)進(jìn)行仿真,再投入實(shí)際使用,可大大降低設(shè)計(jì)的風(fēng)險(xiǎn)性。
1 異步串行通信基本原理
所謂異步串行通信是指具有不規(guī)則數(shù)據(jù)段傳送特性的串行數(shù)據(jù)傳輸。異步通信數(shù)據(jù)幀的第一位是起始位,在通信線上沒有數(shù)據(jù)傳送時(shí)處于邏輯“1”狀態(tài)。當(dāng)發(fā)送設(shè)備要發(fā)送一個(gè)字符數(shù)據(jù)時(shí),首先發(fā)出一個(gè)邏輯“0”信號(hào),這個(gè)邏輯低電平就是起始位。起始位通過通信線傳向接收設(shè)備,當(dāng)接收設(shè)備檢測(cè)到這個(gè)邏輯低電平后,就開始準(zhǔn)備接收數(shù)據(jù)位信號(hào)。因此,起始位所起的作用就是表示字符傳送開始。當(dāng)接收設(shè)備收到起始位后,緊接著就會(huì)收到數(shù)據(jù)位。數(shù)據(jù)發(fā)送完之后,可以發(fā)送奇偶校驗(yàn)位。奇偶校驗(yàn)位用于有限差錯(cuò)檢測(cè),通信雙方在通信時(shí)需約定一致的奇偶校驗(yàn)方式。就數(shù)據(jù)傳送而言,奇偶校驗(yàn)位是冗余位,但它表示數(shù)據(jù)的一種性質(zhì),這種性質(zhì)用于檢錯(cuò),雖有限但很容易實(shí)現(xiàn)。在奇偶位或數(shù)據(jù)位之后發(fā)送的是停止位。停止位是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志。
2 復(fù)雜可編程邏輯器件(CPLD)
復(fù)雜可編程邏輯器件—CPLD(Complex Programmable Logic Device),是從PAL的GAL器件發(fā)展出來的器件,相對(duì)而言規(guī)范大,結(jié)構(gòu)復(fù)雜,屬于大規(guī)模集成電路范圍。是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。其基本設(shè)計(jì)方法是借助集成開發(fā)軟件平臺(tái),用原理圖、硬件描述語言等方法,生成相應(yīng)的目標(biāo)文件,通過下載電纜將代碼傳送到目標(biāo)芯片中,實(shí)現(xiàn)設(shè)計(jì)的數(shù)字系統(tǒng)。
3 VHDL語言
VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,誕生于1982年。1987年底,VHDL被IEEE和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風(fēng)格和句法十分類似于一般的計(jì)算機(jī)高級(jí)語言。
4 異步串行通信設(shè)計(jì)
4.1 總體框圖
本設(shè)計(jì)規(guī)定的數(shù)據(jù)幀格式為:1位起始位,8位數(shù)據(jù)位,1位停止位,無校驗(yàn)位;波特率為9600bps;系統(tǒng)時(shí)鐘頻率為1.8432MHz。程序主要包括波特率發(fā)生器、發(fā)送電路和接收電路三個(gè)部分。程序的功能框圖如圖1所示。
4.2 波特率發(fā)生器
波特率發(fā)生器實(shí)際上就是一個(gè)分頻器,主要是根據(jù)要求的串行口波特率,將系統(tǒng)時(shí)鐘進(jìn)行分頻,分別產(chǎn)生發(fā)送時(shí)鐘和接收時(shí)鐘。發(fā)送時(shí)鐘的頻率與串行口波特率相同。由于串行數(shù)據(jù)幀與接收時(shí)鐘是異步的,為了實(shí)現(xiàn)接收時(shí)鐘與接收數(shù)據(jù)幀的同步,需要采用高速率時(shí)鐘對(duì)接收數(shù)據(jù)進(jìn)行采樣,一般選擇16倍于波特率的時(shí)鐘頻率作為接收時(shí)鐘。本設(shè)計(jì)中,系統(tǒng)時(shí)鐘(1.8432MHz)12次分頻后得到接收時(shí)鐘(153600Hz),再將接收時(shí)鐘16次分頻后得到發(fā)送時(shí)鐘(9600Hz)。
4.3 發(fā)送電路
4.3.1 發(fā)送電路原理
發(fā)送電路相對(duì)比較簡單,當(dāng)有發(fā)送請(qǐng)求時(shí),按照發(fā)送時(shí)鐘的時(shí)序,在上升沿時(shí)刻依次發(fā)送起始位、8位數(shù)據(jù)和停止位。需要說明的是,8位數(shù)據(jù)的發(fā)送順序是先發(fā)送低位后發(fā)送高位。發(fā)送電路的時(shí)序圖如圖2所示。
4.3.2 發(fā)送電路設(shè)計(jì)
發(fā)送電路采用Moore型狀態(tài)機(jī)的方式設(shè)計(jì),包括:空閑、發(fā)送起始位、發(fā)送數(shù)據(jù)位和發(fā)送停止位四個(gè)狀態(tài)。發(fā)送電路的狀態(tài)圖如圖3所示。
空閑狀態(tài):初始狀態(tài)為空閑狀態(tài),只有在空閑狀態(tài)下,才能檢測(cè)是否有發(fā)送請(qǐng)求,當(dāng)檢測(cè)到有發(fā)送請(qǐng)求時(shí),將8位數(shù)據(jù)裝入發(fā)送移位寄存器,進(jìn)入發(fā)送起始位狀態(tài)。
發(fā)送起始位狀態(tài):發(fā)送一位起始位,進(jìn)入發(fā)送數(shù)據(jù)位狀態(tài)。
發(fā)送數(shù)據(jù)位狀態(tài):依次發(fā)送8位數(shù)據(jù),當(dāng)8位數(shù)據(jù)全部發(fā)送完成后,進(jìn)入發(fā)送停止位狀態(tài)。
發(fā)送數(shù)據(jù)位狀態(tài):發(fā)送一位停止位,表示一幀數(shù)據(jù)發(fā)送完成,再次進(jìn)入空閑狀態(tài)。
4.4 接收電路
4.4.1 接收電路原理
接收時(shí)鐘在每個(gè)時(shí)鐘周期都對(duì)接收數(shù)據(jù)進(jìn)行采樣,當(dāng)檢測(cè)到當(dāng)前數(shù)據(jù)位為“0”而前一個(gè)數(shù)據(jù)位為“1”時(shí),即表示檢測(cè)到了起始位。為了保證讀取數(shù)據(jù)的可靠性,每個(gè)數(shù)據(jù)位均在中間點(diǎn)進(jìn)行采樣,在檢測(cè)到起始位后,延遲8個(gè)接收時(shí)鐘周期,開始依次讀取起始位、數(shù)據(jù)位和停止位,兩次讀取的間隔為16個(gè)接收時(shí)鐘周期。為了能夠接收連續(xù)兩幀數(shù)據(jù)中的后一幀,讀取到停止位的下一個(gè)時(shí)鐘周期(而不是延遲8個(gè)時(shí)鐘周期)即開始檢測(cè)起始位。接收電路的時(shí)序圖如圖4所示。
4.4.2 接收電路設(shè)計(jì)
接收電路同樣采用Moore型狀態(tài)機(jī)的方式設(shè)計(jì),包括:空閑、接收起始位、接收數(shù)據(jù)位和接收停止位四個(gè)狀態(tài)。接收電路的狀態(tài)圖如圖5所示。
空閑狀態(tài):初始狀態(tài)為空閑狀態(tài),不斷對(duì)數(shù)據(jù)進(jìn)行采樣,檢測(cè)起始位,一旦檢測(cè)到起始位,即進(jìn)入接收起始位狀態(tài)。
接收起始位狀態(tài):接收一位起始位,并對(duì)起始位的有效性進(jìn)行判別,若為虛假起始位,則返回空閑狀態(tài),若確認(rèn)起始位有效,則進(jìn)入接收數(shù)據(jù)位狀態(tài)。
接收數(shù)據(jù)位狀態(tài):依次接收8位數(shù)據(jù),當(dāng)8位數(shù)據(jù)全部接收后,進(jìn)入接收停止位狀態(tài)。
接收停止位狀態(tài):接收一位停止位,表示一幀數(shù)據(jù)接收完成,將8位數(shù)據(jù)送接收緩存,再次進(jìn)入空閑狀態(tài)。
5 結(jié)語
本文對(duì)異步串行通信的工作原理、電路設(shè)計(jì)進(jìn)行了分析,采用VHDL語言編程,在CPLD上實(shí)現(xiàn)了異步串行通信功能。該設(shè)計(jì)為固定波特率和數(shù)據(jù)幀結(jié)構(gòu),無需微處理器進(jìn)行額外設(shè)置,操作簡單,使用方便。在實(shí)際工程應(yīng)用中,還可以根據(jù)需求,在此基礎(chǔ)上增加波特率設(shè)置、數(shù)據(jù)幀結(jié)構(gòu)設(shè)置、地址譯碼等電路,實(shí)現(xiàn)多路、波特率和數(shù)據(jù)幀結(jié)構(gòu)可設(shè)置的異步串行通信。
本文編號(hào):14943
本文鏈接:http://sikaile.net/kejilunwen/wltx/14943.html