崔建國,寧永香
(山西工程技術(shù)學(xué)院,山西 陽泉 045000)
嵌入式系統(tǒng)是一種專用的計算機(jī)系統(tǒng),作為裝置或設(shè)備的一部分。通常,嵌入式系統(tǒng)是一個控制程序存儲在ROM中的嵌入式處理器控制板。事實上,所有帶有數(shù)字接口的設(shè)備,如手表、微波爐、錄像機(jī)、汽車等,都使用嵌入式系統(tǒng)。
一些比較復(fù)雜的嵌入式系統(tǒng),基于性能的需求可能需要連接不同的終端設(shè)備,如磁帶機(jī)、打印機(jī)、語聲合成器、顯示器等,而不同設(shè)備接口在傳輸數(shù)據(jù)時所要求的頻率往往不同,所以嵌入式系統(tǒng)需要為每種終端設(shè)備提供不同的波特率發(fā)生器。
比如嵌入式系統(tǒng)常利用串口連接不同終端設(shè)備,這里的串口一般是指UART口,不同的UART口可能需要不同的波特率發(fā)生器為其提供工作時鐘頻率。一般利用定時/計數(shù)器如8253電路或單片機(jī)(如51系列單片機(jī))作為波特率發(fā)生器。
我們通常不可能在不同的終端設(shè)備之間或不同的UART口之間使用同一個波特率發(fā)生器,但我們另外可以加若干個波特率發(fā)生器到計算機(jī)或不同終端里的UART中去。
設(shè)計一個簡單的波特率發(fā)生器,它僅使用一個CMOS集成電路就可提供7種不同波特率信號,這個波特率發(fā)生器主要基于一塊14級CMOS二進(jìn)制計數(shù)器/振蕩器電路,型號為CD4060。
這種波特率發(fā)生器之所以可以產(chǎn)生如此多的時鐘信號,主要使用一塊14級CMOS二進(jìn)制計數(shù)器/振蕩器電路CD4060,CD4060內(nèi)部結(jié)構(gòu)如圖1所示[1]。
圖1 CD4060內(nèi)部電路功能框圖
由圖可知CD4060具有10個計數(shù)輸出端,而且其內(nèi)置了振蕩電路,振蕩器通過管腳9、10、11外接R/C元件或石英晶體就可以形成可控多諧振蕩,振蕩器已在內(nèi)部連接到計數(shù)器的時鐘輸入端,復(fù)位端R(12腳)為低電平時,計數(shù)器清零或復(fù)位(Q4~Q14輸出皆為“0”),且振蕩器使用無效;復(fù)位端R(12腳)為高電平時,由于外接的振蕩定時元件控制產(chǎn)生一定頻率的時鐘脈沖信號,由時鐘脈沖CP下降沿觸發(fā)計數(shù)(如圖1的CP端),計數(shù)器開始計數(shù),一個周期后在相應(yīng)的管腳可以輸出4分頻到10分頻,12分頻到14分頻的脈沖信號,其中Q14中的“14”即為14分頻輸出,其它類推[2]。
為了降低設(shè)計成本,我們設(shè)計的波特率發(fā)生器僅采用一個集成電路CD4060、三個電阻、兩個電容和一個預(yù)置電位器組成,電路結(jié)構(gòu)可劃分為可控多諧振蕩電路、計數(shù)器電路、波特率信號輸出電路以及復(fù)位電路四部分,如圖2所示。
圖2 基于CD4060的波特率發(fā)生器電氣原理圖
上文已經(jīng)指出CMOS集成電路4060是一個十四級二進(jìn)制計數(shù)器,它帶有一個內(nèi)部振蕩器,其振蕩頻率僅需由9、10、11腳外接R/C元件來確定,電阻R1、預(yù)置電位器P1、電容C1串連接于管腳9、10之間;電阻R2連接4060管腳11以及電位器P1之間。
主振蕩頻率可以由以下公式計算:
式中:f為赫茲,R為歐姆,C為法拉。
計數(shù)器的工作過程應(yīng)該是這樣的,由于4060的12腳為計數(shù)器復(fù)位端,計數(shù)器首先應(yīng)置12腳為高電平以實現(xiàn)計數(shù)器清零或復(fù)位,這樣可以使計數(shù)器的10個輸出皆輸出“0”電平,且振蕩器使用無效。
第二步使復(fù)位端(12腳)置“0”,計數(shù)器開始計數(shù),一個周期后在相應(yīng)的管腳就可以輸出從4分頻到10分頻,12分頻到14分頻的脈沖信號,形成我們所要求的波特率,例如Q4即為4分頻的波特率輸出端,Q10為10分頻的波特率信號輸出端……。
由R/C電路構(gòu)成的微分電路的結(jié)構(gòu)及其輸入輸出波形分析如圖3所示,圖3可以看出,如果微分電路的輸入電壓為方波,則其輸出為尖頂波。
圖3 微分運(yùn)算電路結(jié)構(gòu)圖與輸入輸出波形分析圖
在計數(shù)器4060的12腳設(shè)計一個計數(shù)器復(fù)位電路,如圖2所示電路中的電容C2與電阻R3構(gòu)成的復(fù)位電路實際組成了一個微分運(yùn)算電路。
圖2電路中的復(fù)位電路工作原理可以這樣描述,電源VCC上電時,電容C2充電,由于電容有端電壓不能突變的特性,故在電阻R3上出現(xiàn)電壓,使得計數(shù)器復(fù)位或清零;幾個毫秒后,C2充滿電,電阻R3上電流降為0,電壓也為0,使得計數(shù)器進(jìn)入工作狀態(tài),開始計數(shù)。
為了方便控制計數(shù)器的工作,設(shè)計一個人工復(fù)位按鈕,即在電容器C2兩端添加一個輕觸按鈕S,如圖2所示。計數(shù)器正式工作期間,按下輕觸按鈕S,電容C2放電,在電阻R3上出現(xiàn)電壓,使得計數(shù)器復(fù)位。松開按鈕S,電容C2又充電,幾個毫秒后,計數(shù)器又進(jìn)入工作狀態(tài),開始計數(shù)[3]。
復(fù)位電路也可以如圖4所示設(shè)計,這種復(fù)位電路能夠為計數(shù)器4060的12腳提供很準(zhǔn)確的“0”電平,因此復(fù)位效果更好。
圖4 由晶體管構(gòu)成的復(fù)位電路
當(dāng)電源接通后,經(jīng)過復(fù)位電路提供復(fù)位信號,計數(shù)器開始工作,這時計數(shù)器4060的各輸出端就可以輸出波特率時鐘信號,如電路圖2所示,按照圖中所示參數(shù),波特率發(fā)生器的不同輸出端的頻率如表1所示。
表1 波特率發(fā)生器各個管腳輸出波特率表
各個輸出不同波特率的線已經(jīng)在電路圖2中標(biāo)出,我們可以用一個連接線連接不同的輸出端子,以選擇所需的波特率輸出。
本振蕩器可以用電位器P1調(diào)整到適當(dāng)?shù)念l率。我們可以用示波器測量4060第9腳的輸出或Q4~Q10的任意一腳的輸出信號頻率。其頻率在第9腳上為38.4 kHz,Q4~Q10腳上應(yīng)為圖2或波特率表所標(biāo)出的波特率。
我們常常會需要時鐘頻率為波特率的16倍,意思就是在接收終端設(shè)備的傳輸數(shù)據(jù)時,采用波特率的16倍頻率作為接收時鐘,例如異步工作的8251等串口芯片,簡單解釋如下。
標(biāo)準(zhǔn)UART(通用異步收發(fā)傳輸器)的RXD前端有一個"1到0跳變檢測器",當(dāng)其連續(xù)接收到8個RXD上的低電平時,該檢測器就認(rèn)為RXD線出現(xiàn)了起始位,進(jìn)入接收數(shù)據(jù)狀態(tài),在接收狀態(tài),接收控制器對數(shù)據(jù)位7、8、9三個脈沖采樣,并遵從三中取二的原則確定最終值。采用這一方法的根本目的仍然還是為了增強(qiáng)抗干擾,以提高數(shù)據(jù)傳送的可靠性,采樣信號總是在每個接收位的中間位置,這樣可以避開數(shù)據(jù)位兩端的邊沿失真,也可以防止接收時鐘頻率和發(fā)送時鐘頻率不完全同步引起的誤差[4]。
所以,為了得到這一時鐘頻率,我們可以將圖2中電容C1容量由原來的470n更換為現(xiàn)在的27nF,4060第9腳的振蕩頻率應(yīng)調(diào)到614.4 kHz。
CD4060內(nèi)置振蕩源、具有10個計數(shù)輸出端,本設(shè)計巧妙利用這個十四級二進(jìn)制計數(shù)器, 將其主振蕩頻率通過各分頻輸出端口,得到4分頻到10分頻,12分頻到14分頻的脈沖信號,從而得到了不同的波特率輸出,本文所設(shè)計的波特率發(fā)生器可以同時為7個不同的終端設(shè)備提供波特率信號,避免了不同的終端設(shè)備之間或不同的UART口之間使用同一個波特率發(fā)生器的弊端。
設(shè)計電路比較簡單,但非常實用,可以很方便地應(yīng)用在嵌入式系統(tǒng)里,性價比頗高。