999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

計(jì)算機(jī)多設(shè)備接口波特率不匹配的研究

2010-06-22 08:17:56柯鋮周琪云

柯鋮,周琪云

(江西師范大學(xué) 計(jì)算機(jī)信息工程學(xué)院,南昌330022)

柯鋮(工程師),主要研究領(lǐng)域?yàn)閱纹瑱C(jī)及 ARM Linux嵌入式系統(tǒng);周琪云(教授),主要研究領(lǐng)域?yàn)閿?shù)據(jù)庫(kù)設(shè)計(jì)、單片機(jī)及嵌入式系統(tǒng)。

引 言

不同設(shè)備接口在傳輸數(shù)據(jù)時(shí)所要求的頻率往往不同,而在一些僅使用一個(gè)晶振的系統(tǒng)上,如果一個(gè)接口的頻率完全匹配,那么其他接口所使用的頻率往往就不完全符合要求。例如,為了實(shí)現(xiàn)USB總線的48 MHz的傳輸頻率,一般可以用12 MHz的晶振來倍頻得到,而12 MHz的晶振在進(jìn)行串口通信時(shí)由于與標(biāo)準(zhǔn)波特率不成倍數(shù)關(guān)系,因而期望波特率和實(shí)際波特率往往不同。在波特率較低時(shí),這種誤差影響不大。例如,期望波特率為57 600 bps時(shí),實(shí)際波特率為57 692 bps,傳輸正常;而當(dāng)期望波特率高達(dá)115 200 bps時(shí),則實(shí)際波特率為125 000 bps,誤差較大。實(shí)驗(yàn)結(jié)果表明,此時(shí)如不對(duì)其進(jìn)行修正,則無法進(jìn)行正確傳輸。

筆者通過實(shí)驗(yàn)研究證明,通過使用小數(shù)波特率發(fā)生器,完全可以像低波特率時(shí)一樣正確地傳輸,實(shí)現(xiàn)了多位小數(shù)的分?jǐn)?shù)逼近法的算法,避免了人工計(jì)算過程,徹底實(shí)現(xiàn)了波特率計(jì)算和修正的自動(dòng)化。

1 小數(shù)波特率發(fā)生器工作原理

當(dāng)外部晶振或者VPB時(shí)鐘值不是標(biāo)準(zhǔn)波特率的整數(shù)倍時(shí),波特率的設(shè)定往往會(huì)出現(xiàn)偏差。通過小數(shù)波特率發(fā)生器則可減小或者消除這種偏差。

下面以LPC214x處理器的串口UART1為例闡述小數(shù)波特率發(fā)生器的工作原理。要使用小數(shù)波特率發(fā)生器,需要設(shè)置小數(shù)分頻寄存器(U1FDR),該寄存器控制產(chǎn)生波特率的時(shí)鐘分頻器。

預(yù)分頻器接收VPB時(shí)鐘,并經(jīng)過指定的小數(shù)要求產(chǎn)生一個(gè)輸出時(shí)鐘,小數(shù)由該寄存器的值決定。

在不使用小數(shù)波特率發(fā)生器時(shí),UART1波特率由下式計(jì)算:

當(dāng)使用小數(shù)波特率發(fā)生器時(shí),則由下式計(jì)算:

其中PCLK為VPB總線時(shí)鐘,U1DLM和U1DLL為標(biāo)準(zhǔn)的UART1波特率除數(shù)寄存器。可以看出,MulVal/(MulVal+DivAddVal)就是用來修正波特率的小數(shù)值,被稱作校準(zhǔn)系數(shù)。它由兩個(gè)參數(shù)構(gòu)成:DivAddVal(波特率生成欲分頻除數(shù)值)和MulVal(波特率預(yù)分頻乘數(shù)值)。DivAddVal和MulVal都必須為整數(shù),且滿足:

根據(jù)以上公式很容易計(jì)算串口波特率,但是實(shí)際應(yīng)用中,更多的是在使用非標(biāo)準(zhǔn)晶振時(shí)確定波特率校準(zhǔn)系數(shù),即設(shè)定U1FDR寄存器DivAddVal和MulVal的值。確定波特率校準(zhǔn)系數(shù)可以分如下3步進(jìn)行:

①確定除數(shù)鎖存器的值:根據(jù)需要的波特率bps,按照沒有校準(zhǔn)系數(shù)的波特率計(jì)算公式確定除數(shù)鎖存器的值(DLM,DLL)。由于采用非標(biāo)準(zhǔn)晶振,得到的結(jié)果通常為小數(shù)。無論小數(shù)值大小,均舍棄小數(shù)部分的值,對(duì)結(jié)果進(jìn)行取整操作(不是四舍五入),得到除數(shù)鎖存器的值。

②確定校準(zhǔn)前的波特率:將①得到的除數(shù)值(DLM,DLL)代入不帶校準(zhǔn)系數(shù)的串口波特率計(jì)算公式,得到未經(jīng)過校準(zhǔn)的波特率BPS。

③確定校準(zhǔn)系數(shù)p:p=bps/BPS=MulVal/(MulVal+DivAddVal)

根據(jù)限制條件1≤MulVal≤15和0≤DivAddVal≤15,尋找合適的值,使得到誤差盡可能小的校準(zhǔn)系數(shù)。

2 多位小數(shù)的分?jǐn)?shù)逼近算法

(1)傳統(tǒng)獲取MulVal和DivAddVal整數(shù)值的方法

假設(shè)系統(tǒng)晶振為12 M Hz,擬設(shè)定波特率bps為115 200 bps,根據(jù)前面所述校準(zhǔn)系數(shù)的確定過程,12 000 000/(16×115 200)=6.51,取6為除數(shù)值,那么BPS=12 000 000/[16×(256×0+6)]=125 000 bps,所以p=bps/BPS=0.921 6。

傳統(tǒng)獲取MulVal和DivAddVal整數(shù)值的方法大多依靠經(jīng)驗(yàn)技巧或者反復(fù)試驗(yàn)。如參考文獻(xiàn) 2《深入淺出ARM7-LPC214x下》中,第77頁描述的那樣:

根據(jù)1≤MulVal≤15和0≤DivAddVal≤15的限制,由于系數(shù)接近1,因而DivAddVal取盡可能小的整數(shù)。多次試驗(yàn)取值得到12/(1+12)=0.9231與期望的系數(shù)0.9216最接近,能夠使波特率誤差最小,因而最后確定MulVal=12,DivAddVal=1。

顯然,按照這種方法是無法完成程序自動(dòng)化的,必須在每次編程之前根據(jù)波特率來人工推算出MulVal和DivAddVal的值,并且還需要大量的誤差對(duì)比和反復(fù)試驗(yàn),導(dǎo)致工作效率的降低。

(2)獲取MulVal和DivAddVal整數(shù)值的新方法

我們的問題在于尋找一個(gè)分?jǐn)?shù),它能夠盡可能地接近校準(zhǔn)系數(shù)。那么可以使用這樣一種多位小數(shù)的分?jǐn)?shù)逼近法,該算法認(rèn)為:任何一個(gè)多位小數(shù),無論是無理數(shù)還是有理數(shù),均可以用一個(gè)分?jǐn)?shù)來近似表示它,并可用一定的程序使其誤差越來越小,直至達(dá)到所需的精確度。

根據(jù)該算法,可以通過程序來實(shí)現(xiàn)獲取這兩個(gè)參數(shù)的自動(dòng)計(jì)算,該程序流程如圖1所示。

圖1 程序流程

初始化時(shí)要求找到A和B的值,使其滿足B<P<A。假設(shè)用A1/A2來表示 A,B1/B2來表示B,而由于 p值(本例中p=0.921 6)一定小于1,且不小于1/2,故選取A1=1,A2=1,B1=1,B2=2即可滿足要求。

利用1≤MulVal≤15和0≤DivAddVal≤15的限制作為迭代退出條件,當(dāng)A的分母超過16時(shí),B就是最優(yōu)解,B1即為MulVal,而DivAddVal則等于B2-B1;同理,當(dāng)B的分母超過16時(shí),MulVal=A1,DivAddVal=A2-A1。

本例中程序計(jì)算出來MulVal=12,DivAddVal=1,與人工計(jì)算結(jié)果完全相同,所以使用這種算法,可以利用程序自動(dòng)高效計(jì)算得出MulVal和DivAddVal整數(shù)值,不僅節(jié)省人力,而且更加科學(xué)可靠。

結(jié) 語

計(jì)算機(jī)系統(tǒng)中的各種設(shè)備接口所要求的頻率往往不同,當(dāng)只配備一個(gè)晶振時(shí),有一些設(shè)備頻率完全匹配而另外一些設(shè)備則可能無法完全匹配。作者通過對(duì)使用12 MHz晶振的LPC214xCPU進(jìn)行串口通信時(shí)產(chǎn)生的誤差研究發(fā)現(xiàn),當(dāng)期望波特率在57 600 bps以下時(shí),實(shí)際波特率與其誤差較小,可以正常通信;而當(dāng)期望波特率為115 200 bps時(shí),實(shí)際波特率為125 000 bps,在這樣大的誤差下如果不修正實(shí)際波特率根本無法進(jìn)行正確的通信;而當(dāng)通過設(shè)置使用小數(shù)波特率發(fā)生器校準(zhǔn)非標(biāo)準(zhǔn)頻率晶振所引起的波特率誤差時(shí),可以讓期望波特率高達(dá)115 200 bps的實(shí)際波特率為115 384 bps,誤差僅為184,通信完全正常。另外,在計(jì)算小數(shù)分頻寄存器中的設(shè)置值時(shí)首次引入了科學(xué)的數(shù)學(xué)算法,摒棄了傳統(tǒng)工程師使用經(jīng)驗(yàn)技巧和反復(fù)試驗(yàn)獲取MulVal和DivAddVal值的人工方法,實(shí)現(xiàn)了由程序自動(dòng)、正確、快速地獲取設(shè)置寄存器參數(shù)值的目的,不僅提高了工作效率,更重要的是完全實(shí)現(xiàn)了自動(dòng)化,無需再人工干預(yù)。

[1]周立功,等.ARM控制器基礎(chǔ)與實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2005.

[2]周立功 ,等.深入淺出 ARM7——LPC214x[M].北京:北京航空航天大學(xué)出版社,2005.

[3]周立功 ,等.深入淺出 ARM7——LPC213x[M].北京:北京航空航天大學(xué)出版社,2005.

[4]周立功,等.ARM嵌入式系統(tǒng)實(shí)驗(yàn)教程(一)[M].北京:北京航空航天大學(xué)出版社,2004.

[5]阿里.8051微控制器和嵌入式系統(tǒng)[M].北京:機(jī)械工業(yè)出版社,2007.

[6]陳其翔.多位小數(shù)的分?jǐn)?shù)逼近法[J].北京聯(lián)合大學(xué)學(xué)報(bào),1997,29(3).

主站蜘蛛池模板: 97视频在线精品国自产拍| 一本大道香蕉中文日本不卡高清二区 | 国产1区2区在线观看| 日韩免费无码人妻系列| 91午夜福利在线观看| 伊人色在线视频| 成·人免费午夜无码视频在线观看| 亚洲欧美日韩中文字幕在线| 91麻豆国产在线| jizz在线免费播放| 国产高清无码麻豆精品| 欧美国产日产一区二区| 视频二区中文无码| 午夜精品福利影院| 国产免费怡红院视频| 欧美综合成人| 无码电影在线观看| 99成人在线观看| 亚洲国产成人久久精品软件| 亚洲精品视频网| 五月六月伊人狠狠丁香网| 亚洲自偷自拍另类小说| 欧美在线视频a| 激情国产精品一区| 黄色国产在线| 在线一级毛片| 国产成人精品第一区二区| 在线观看国产精品日本不卡网| 久久久久无码精品| 国产免费a级片| 午夜国产精品视频| 99久久精品免费观看国产| 亚洲第七页| 国产一区二区免费播放| 欧洲欧美人成免费全部视频| 亚洲成a∧人片在线观看无码| 毛片a级毛片免费观看免下载| 亚洲美女一级毛片| 日韩大乳视频中文字幕| 午夜啪啪网| 日本午夜影院| 综合色在线| 国产欧美日韩视频怡春院| 亚洲无线视频| 一级成人欧美一区在线观看| 欧美人人干| 人妻精品全国免费视频| 日韩精品一区二区三区中文无码 | 久久午夜影院| 亚洲男人的天堂久久精品| 亚洲欧美精品在线| 亚洲AV永久无码精品古装片| 久久性视频| 国产黄在线免费观看| 亚洲国产天堂久久综合| 国产网站在线看| 广东一级毛片| 欧美人与性动交a欧美精品| 成人在线综合| 一级爆乳无码av| 四虎永久在线视频| 国产a网站| 亚洲水蜜桃久久综合网站| 色爽网免费视频| 久久综合九九亚洲一区| 伊人五月丁香综合AⅤ| 色婷婷亚洲十月十月色天| 国产精品永久不卡免费视频| 日韩精品免费一线在线观看| 人妻夜夜爽天天爽| 日韩成人在线一区二区| 一本色道久久88综合日韩精品| 成人午夜在线播放| 国产色婷婷视频在线观看| 欧美综合区自拍亚洲综合绿色| 在线观看无码a∨| 亚洲天堂日韩在线| 99热这里只有精品免费| 久久一日本道色综合久久| 色婷婷国产精品视频| 国产精品自在在线午夜区app| 亚洲激情99|