摘 要:CPLD是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,是一種半定制的集成電路。結(jié)合計(jì)算機(jī)軟件技術(shù)(EDA技術(shù))可以快速、方便地構(gòu)建數(shù)字系統(tǒng)。文章重點(diǎn)介紹了CPLD和PC機(jī)之間的異步串行接口間的通信。設(shè)計(jì)中采用多模塊化的設(shè)計(jì)方法設(shè)計(jì)整個系統(tǒng),包括波特率發(fā)生器、數(shù)據(jù)接收模塊、數(shù)據(jù)發(fā)送模塊及顯示模塊。采用VHDL硬件描述語言來開發(fā)基于CPLD的異步串行通信接口。采用RS232作為主要的接口控制芯片,利用Quartus II 9.0應(yīng)用軟件在CPLD芯片上進(jìn)行綜合描述。采用六種常用波特率,以開關(guān)形式對數(shù)據(jù)傳輸方式進(jìn)行選擇,輸出以LED燈的明滅和數(shù)碼管顯示數(shù)值進(jìn)行驗(yàn)證。分別在QuartusII 9.0和Altium Designer 6.9軟件開發(fā)環(huán)境下進(jìn)行設(shè)計(jì)、綜合與仿真。進(jìn)而實(shí)現(xiàn)異步串行接口的控制功能及速度可選擇性數(shù)據(jù)傳送的設(shè)計(jì)。
關(guān)鍵詞:CPLD;RS232;異步串行接口;VHDL
1 CPLD與VHDL簡述
CPLD適用性編輯器采用中心互連矩陣形式對不同的編碼進(jìn)行矩陣排列,該編輯器與原有傳統(tǒng)CMOS編輯器不同點(diǎn)在于,該編輯器能夠?qū)鬏旊娐窌r(shí)間具有一定的預(yù)測性。當(dāng)編碼器收到電流脈沖信號時(shí),便會對電流大小進(jìn)行數(shù)據(jù)收集,然后將收集的數(shù)據(jù)信號轉(zhuǎn)化為電流脈沖,該編輯器便會對電流的流經(jīng)時(shí)間做定性分析,保證電流傳輸?shù)姆€(wěn)定性。
大規(guī)??删幊踢壿嬈骷抢肊DA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的載體,硬件描述語言是利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的主要表達(dá)手段。常用的硬件描述語言有VHDL、Verilog和ABEL。設(shè)計(jì)中使用的VHDL語言在電子工程領(lǐng)域已成為事實(shí)上的通用硬件描述語言。
2 異步串行通信接口設(shè)計(jì)
課題要求實(shí)現(xiàn)基于CPLD的異步串行接口的設(shè)計(jì),需要進(jìn)行以下工作。
首先,需要利用Altium Designer 6.9軟件開發(fā)環(huán)境進(jìn)行硬件系統(tǒng)的設(shè)計(jì);其次,運(yùn)用QuartusII 9.0軟件將軟件系統(tǒng)程序進(jìn)行設(shè)計(jì)、綜合及仿真;最后,將軟硬件系統(tǒng)結(jié)合起來綜合調(diào)試、分析,實(shí)現(xiàn)設(shè)計(jì)課題的要求,在條件允許的情況下或進(jìn)行進(jìn)一步的完善。
2.1 串行異步通信的數(shù)據(jù)格式
收發(fā)雙方取得同步的方法是在字符格式中設(shè)置起始位和停止位,在一個有效字符正式發(fā)送前,發(fā)送器先發(fā)送一個起始位,然后發(fā)送有效字符位,在字符結(jié)束時(shí)再發(fā)送一個停止位,起始位到停止位構(gòu)成一幀。
2.2 串口模塊的設(shè)計(jì)
設(shè)計(jì)中選擇的是RS232串口通信。目前RS232是PC機(jī)與通信工業(yè)中應(yīng)用最廣泛的一種串行接口。典型的RS232信號在正負(fù)電平之間擺動,在發(fā)送數(shù)據(jù)時(shí),發(fā)送端驅(qū)動器輸出正電平在+5~+15V,負(fù)電平在-5~-15V。當(dāng)無數(shù)據(jù)傳輸時(shí),線上為TTL,從開始傳送數(shù)據(jù)到結(jié)束,線上電平從TTL到RS232電平再返回TTL電平。接收器典型的工作電平在+3~+12V與-3~-12V。
2.3 異步串行通信系統(tǒng)模塊設(shè)計(jì)
本設(shè)計(jì)可劃分為4個部分,即波特率發(fā)生模塊、接收模塊、發(fā)送模塊、顯示模塊和控制模塊的設(shè)計(jì)。
2.3.1 分頻模塊設(shè)計(jì)
系統(tǒng)利用晶振T5提供系統(tǒng)時(shí)鐘,然后通過分頻模塊產(chǎn)生六種波特率。
波特率(Baud Rate)是單位時(shí)間內(nèi)傳送的二進(jìn)制數(shù)據(jù)的位數(shù),以位/秒(b/s)表示。收/發(fā)時(shí)鐘頻率=N*波特率。為了兼顧速度和穩(wěn)定性一般N取為16。
根據(jù)當(dāng)前異步串行通信系統(tǒng)的傳輸結(jié)構(gòu),其波特率發(fā)生器在連接方式上采用2個8位數(shù)據(jù)寄存器相連,這樣便能進(jìn)行有效的數(shù)字寄存,保證1-16位進(jìn)制編碼的有效進(jìn)行。其次在系統(tǒng)頻率分頻方面,該波特率發(fā)生器能夠進(jìn)行2分頻,保證傳輸?shù)姆诸l波形能夠達(dá)到預(yù)定位置,但傳輸波形為一個波峰時(shí),則另個傳輸波形便會到達(dá)波谷,完成波特率波形的周期傳輸。
由于內(nèi)部采樣時(shí)鐘bclk周期(由波特率發(fā)生器產(chǎn)生)是收/發(fā)波特率時(shí)鐘頻率的16倍,如CPLD的系統(tǒng)時(shí)鐘為50MHz,當(dāng)波特率為9600Hz時(shí),則波特率時(shí)鐘的每個周期相當(dāng)于(1/9600)/[1/(50*106)]≈5208個系統(tǒng)時(shí)鐘的周期。若要得到占空比為1:1的波特率時(shí)鐘,只要使計(jì)數(shù)器在數(shù)到5208×1/2=2604時(shí)將輸出置高,之后計(jì)數(shù)到5208時(shí)將輸出置低并且重新計(jì)數(shù),就能夠?qū)崿F(xiàn)和9600波特率同步的時(shí)鐘。
設(shè)計(jì)功能:實(shí)現(xiàn)六種波特率1200、2400、4800、9600、19200、38400Hz的可選擇性,從而可以選擇數(shù)據(jù)傳輸速率。
假設(shè)數(shù)據(jù)的波特率為p,則所需時(shí)鐘的頻率為16*p,開發(fā)板上所選擇的晶振頻率為50MHz,則波特率發(fā)生器的分頻系數(shù)CNT1計(jì)算公式如下式:
X=50000000/(16*p)/2-(因X為計(jì)數(shù)器中值,所以需除以2)
則:當(dāng)p=1200時(shí),X=1302;
p=2400時(shí),X=651;
p=4800時(shí),X=325;
p=9600時(shí),X=162;
p=19200時(shí),X=81;
p=38400時(shí),X=41;
2.3.2 接收模塊設(shè)計(jì)
該模塊的功能:實(shí)時(shí)檢測線路,當(dāng)線路產(chǎn)生下降沿時(shí),即認(rèn)為線路有數(shù)據(jù)傳輸,啟動接收數(shù)據(jù)進(jìn)程進(jìn)行接收,按從低位到高位接收數(shù)據(jù)。
2.3.3 顯示模塊設(shè)計(jì)
設(shè)計(jì)的顯示模塊中,數(shù)碼管顯示傳輸數(shù)據(jù)的具體數(shù)值(十六進(jìn)制);八個LED燈主要是為了顯示系統(tǒng)從外部接收到的數(shù)據(jù)(二進(jìn)制)從左到右依次顯示數(shù)據(jù)的高位到低位,燈亮為“1”,反之則為“0”。
設(shè)計(jì)功能:將發(fā)送的數(shù)據(jù)結(jié)果顯示到開發(fā)板數(shù)碼管及LED燈上。
由于系統(tǒng)選用的是共陽極的數(shù)碼管,所以數(shù)碼管位選位初始值為“0”,當(dāng)位選位為“1”時(shí)選中該位。
2.3.4 控制模塊設(shè)計(jì)
系統(tǒng)的數(shù)據(jù)的接收可通過按鍵設(shè)計(jì)一個發(fā)送鍵,從PC機(jī)上輸入數(shù)據(jù),按下發(fā)送鍵,將數(shù)據(jù)傳輸?shù)介_發(fā)板上,由CPLD芯片接收;數(shù)據(jù)發(fā)送可通過開發(fā)板上的撥碼開關(guān)控制數(shù)據(jù)傳輸;同時(shí),六種波特率的選擇亦可通過撥碼開關(guān)設(shè)計(jì)。
3 結(jié)束語
本設(shè)計(jì)具有很大的靈活性,這一異步串行通信接口工作的波特率可以通過撥碼開關(guān)選擇,使其工作在不同的頻率環(huán)境下,十分方便。由于采用了VHDL語言作為輸入方式并結(jié)合CPLD,大大縮短了設(shè)計(jì)周期,提高了設(shè)計(jì)的可靠性、靈活性,使用戶可根據(jù)自己的需求,方便、高效地設(shè)計(jì)出適合的串行接口電路。
參考文獻(xiàn)
[1]王曉麗.可編程邏輯器件CPLD/FPGA的發(fā)展[J].科技信息(科學(xué)·教研),2007(28).
[2]侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M].西安: 西安電子科技大學(xué)出版社,1999.
[3]林容益.CPU/SOC及外圍電路應(yīng)用設(shè)計(jì)(基于FPGA/CPLD)[M].北京:北京航空航天大學(xué)出版社,2004.