www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 智能硬件 > 智能硬件
[導(dǎo)讀]不同設(shè)備接口在傳輸數(shù)據(jù)時所要求的頻率往往不同,而在一些僅使用一個晶振的系統(tǒng)上,如果一個接口的頻率完全匹配,那么其他接口所使用的頻率往往就不完全符合要求。例如,為了實現(xiàn)USB總線的48MHz的傳輸頻率,一般可以用12MHz的晶振來倍頻得到,而12MHz的晶振在進(jìn)行串口通信時由于與標(biāo)準(zhǔn)波特率不成倍數(shù)關(guān)系,因而期望波特率和實際波特率往往不同。

引言

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

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

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

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

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

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

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

UART1baudrate = PCLK/(16×(256×U1DLM+U1DLL))

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

UART1baudrate = [PCLK/(16 ×(256 × U1DLM + U1DLL))] ×(MulVal / (MulVal + DivAddVal)

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

1 ≤ MulVal≤ 15,0 ≤ DivAddVal ≤ 15。

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

① 確定除數(shù)鎖存器的值: 根據(jù)需要的波特率bps,按照沒有校準(zhǔn)系數(shù)的波特率計算公式確定除數(shù)鎖存器的值(DLM,DLL)。由于采用非標(biāo)準(zhǔn)晶振,得到的結(jié)果通常為小數(shù)。無論小數(shù)值大小,均舍棄小數(shù)部分的值,對結(jié)果進(jìn)行取整操作(不是四舍五入),得到除數(shù)鎖存器的值。
② 確定校準(zhǔn)前的波特率: 將①得到的除數(shù)值(DLM,DLL)代入不帶校準(zhǔn)系數(shù)的串口波特率計算公式,得到未經(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 MHz,擬設(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)驗技巧或者反復(fù)試驗。如參考文獻(xiàn)2《深入淺出ARM7LPC214x下》中,第77頁描述的那樣:

  根據(jù)1 ≤ MulVal ≤ 15和0 ≤ DivAddVal ≤ 15的限制,由于系數(shù)接近1,因而DivAddVal取盡可能小的整數(shù)。多次試驗取值得到12 / (1 + 12) = 0.9231與期望的系數(shù)0.9216最接近,能夠使波特率誤差最小,因而最后確定MulVal = 12, DivAddVal = 1。
顯然,按照這種方法是無法完成程序自動化的,必須在每次編程之前根據(jù)波特率來人工推算出MulVal和DivAddVal的值,并且還需要大量的誤差對比和反復(fù)試驗,導(dǎo)致工作效率的降低。

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

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

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

500)this.style.width=500;" border="0" />
圖1  程序流程

  初始化時要求找到A和B的值,使其滿足B

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

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

結(jié)語

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

參考文獻(xiàn)

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

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

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

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

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

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

微信的好友列表里就有在德國、英國、日本、美國等國家留學(xué)的同學(xué),每次遇到這些網(wǎng)友,我都喜歡問一個問題:你們那里是怎么教計算機(jī)的?在跟他們的聊天對話中,我了解到了不同國家在計算機(jī)教育方面的差異。

關(guān)鍵字: 微信 同學(xué) 計算機(jī)

幾乎一直到DXP甚至后來的AD時代,3D封裝模型技術(shù)才開始慢慢日趨成熟,自此3D封裝的發(fā)展完美的解決了這個問題,3D封裝能夠讓我們在設(shè)計之前就能夠看到真實的3D模型,很多器件空間比如長寬高,甚至在一些中空的地方下面擺一些...

關(guān)鍵字: DXP AD 3D封裝

英偉達(dá)9月20日的“春晚”GTC沒能力挽狂瀾。美東時間9月26日,英偉達(dá)收盤于122.28美元。一個月前的8月26日,英偉達(dá)開啟了本輪下行,從當(dāng)天開盤的178.57美元一路下探,至今已跌去超三成。

關(guān)鍵字: 算力 英偉達(dá) 計算機(jī)

中國超級計算機(jī)是如何實現(xiàn)從無到有,從大型機(jī)到巨型機(jī)進(jìn)化的?1950年3月,中央人民廣播電臺播發(fā)了一封書信,信中說“梁園雖好,非久居之鄉(xiāng),歸去來兮。

關(guān)鍵字: 超級 計算機(jī) 進(jìn)化史

隨著IT技術(shù)飛速發(fā)展,互聯(lián)網(wǎng)已經(jīng)進(jìn)入了“物聯(lián)網(wǎng)”時代。物聯(lián)網(wǎng)中需要的大量設(shè)備不在依賴人與人之間的交互產(chǎn)生聯(lián)系,更多通過協(xié)議、通信、程序設(shè)計等方式連接到一處。即 “物聯(lián)網(wǎng)”的目的則是讓所有的物品都具有計算機(jī)的智能但并不以通...

關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 計算機(jī)

隨著13代酷睿處理器的上市,銘瑄本次同步發(fā)布了四款Z790主板,包括兩款A(yù)TX、一款mATX,以及一款I(lǐng)TX迷你小板。其中,包括新款MS-終結(jié)者Z790M D5主板,售價僅1499元。將在10月20日21點(diǎn)隨13代酷睿處...

關(guān)鍵字: 酷睿 ATX 接口 DDR

SAIHUB CAB 025M成功獲得安全試驗所UL美國與加拿大認(rèn)證證書 新加坡2022年10月17日 /美通社/ -- SAI.TECH Global Corporation("SAI.TECH"...

關(guān)鍵字: AI BSP PS 清潔能源

現(xiàn)實生活中,我們聽到的聲音都是時間連續(xù)的,我們稱為這種信號叫模擬信號。模擬信號需要進(jìn)行數(shù)字化以后才能在計算機(jī)中使用。

關(guān)鍵字: 模擬信號 數(shù)字化 計算機(jī)

(全球TMT2022年10月13日訊)Supermicro Micro Computer, Inc. (SMCI) 發(fā)表其JumpStart早期遠(yuǎn)程試用計劃Supermicro X13 J...

關(guān)鍵字: MICRO START SUPER PS

AD軟件有自帶制作簡單的3D元件體用于3D PCB封裝中下面以0603C封裝為例進(jìn)行簡單介紹。

關(guān)鍵字: AD 3D元件體 0603C封裝

智能硬件

21972 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉