計算機多設備接口波特率不匹配的研究
根據1 ≤ MulVal ≤ 15和0 ≤ DivAddVal ≤ 15的限制,由于系數接近1,因而DivAddVal取盡可能小的整數。多次試驗取值得到12 / (1 + 12) = 0.9231與期望的系數0.9216最接近,能夠使波特率誤差最小,因而最后確定MulVal = 12, DivAddVal = 1。
顯然,按照這種方法是無(wú)法完成程序自動(dòng)化的,必須在每次編程之前根據波特率來(lái)人工推算出MulVal和DivAddVal的值,并且還需要大量的誤差對比和反復試驗,導致工作效率的降低。
(2) 獲取MulVal和DivAddVal整數值的新方法
我們的問(wèn)題在于尋找一個(gè)分數,它能夠盡可能地接近校準系數。那么可以使用這樣一種多位小數的分數逼近法,該算法認為:任何一個(gè)多位小數,無(wú)論是無(wú)理數還是有理數,均可以用一個(gè)分數來(lái)近似表示它,并可用一定的程序使其誤差越來(lái)越小,直至達到所需的精確度。
根據該算法,可以通過(guò)程序來(lái)實(shí)現獲取這兩個(gè)參數的自動(dòng)計算,該程序流程如圖1所示。
圖1 程序流程
初始化時(shí)要求找到A和B的值,使其滿(mǎn)足B 利用1 ≤ MulVal ≤ 15和0 ≤ DivAddVal ≤ 15的限制作為迭代退出條件,當A的分母超過(guò)16時(shí),B就是最優(yōu)解,B1即為MulVal,而DivAddVal則等于B2-B1;同理,當B的分母超過(guò)16時(shí),MulVal=A1,DivAddVal=A2-A1。 本例中程序計算出來(lái)MulVal=12,DivAddVal=1,與人工計算結果完全相同,所以使用這種算法,可以利用程序自動(dòng)高效計算得出MulVal和DivAddVal整數值,不僅節省人力,而且更加科學(xué)可靠。 結語(yǔ) 計算機系統中的各種設備接口所要求的頻率往往不同,當只配備一個(gè)晶振時(shí),有一些設備頻率完全匹配而另外一些設備則可能無(wú)法完全匹配。作者通過(guò)對使用12 MHz晶振的LPC214xCPU進(jìn)行串口通信時(shí)產(chǎn)生的誤差研究發(fā)現,當期望波特率在57 600 bps以下時(shí),實(shí)際波特率與其誤差較小,可以正常通信;而當期望波特率為115 200 bps時(shí),實(shí)際波特率為125 000 bps,在這樣大的誤差下如果不修正實(shí)際波特率根本無(wú)法進(jìn)行正確的通信;而當通過(guò)設置使用小數波特率發(fā)生器校準非標準頻率晶振所引起的波特率誤差時(shí),可以讓期望波特率高達115 200 bps的實(shí)際波特率為115 384 bps,誤差僅為184,通信完全正常。另外,在計算小數分頻寄存器中的設置值時(shí)首次引入了科學(xué)的數學(xué)算法,摒棄了傳統工程師使用經(jīng)驗技巧和反復試驗獲取MulVal和DivAddVal值的人工方法,實(shí)現了由程序自動(dòng)、正確、快速地獲取設置寄存器參數值的目的,不僅提高了工作效率,更重要的是完全實(shí)現了自動(dòng)化,無(wú)需再人工干預。 參考文獻 [1] 周立功,等.ARM控制器基礎與實(shí)戰[M].北京:北京航空航天大學(xué)出版社,2005. [2] 周立功,等.深入淺出ARM7――LPC214x[M].北京:北京航空航天大學(xué)出版社,2005. [3] 周立功,等.深入淺出ARM7――LPC213x[M].北京:北京航空航天大學(xué)出版社,2005. [4] 周立功,等.ARM嵌入式系統實(shí)驗教程(一)[M].北京:北京航空航天大學(xué)出版社,2004. [5] 阿里.8051微控制器和嵌入式系統[M].北京:機械工業(yè)出版社,2007. [6] 陳其翔.多位小數的分數逼近法[J].北京聯(lián)合大學(xué)學(xué)報,1997,29(3).
評論