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