新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的UART 16倍頻采樣的VHDL設(shè)計(jì)

基于FPGA的UART 16倍頻采樣的VHDL設(shè)計(jì)

作者: 時(shí)間:2013-04-18 來源:網(wǎng)絡(luò) 收藏

概述

本文引用地址:http://m.butianyuan.cn/article/189636.htm

隨著電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)的發(fā)展,可編程邏輯器件/CPLD已經(jīng)在許多方面得到了廣泛應(yīng)用,而(通用異步收發(fā)器) 是在數(shù)字通信和控制系統(tǒng)中廣泛使用的串行數(shù)據(jù)傳輸協(xié)議。因此越來越多用戶根據(jù)自己的需要,以EDA技術(shù)作為開發(fā)手段,用一塊/CPLD設(shè)計(jì)出符合自己需要的芯片?;?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/FPGA">FPGA/ CPLD的設(shè)計(jì)在諸多文獻(xiàn)中都有論述,在此不再對(duì)UART整個(gè)功能模塊實(shí)現(xiàn)做太多的論述。本文著重分析UART接收器起始位的檢測(cè)。

3采樣的缺陷

首先,串行異步通信規(guī)定了字符數(shù)據(jù)的傳送格式。每一幀數(shù)據(jù)由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位和線路空閑狀態(tài)組成,格式如圖1所示。一般情況起始位為1位,數(shù)據(jù)位為5、6、7或8位、奇偶校驗(yàn)位為1位,停止位為1、1.5或2位。其中的起始位和停止位就是用來實(shí)現(xiàn)字符的同步。在空閑狀態(tài),傳送線為邏輯“1”狀態(tài)。數(shù)據(jù)的傳送總是以一個(gè)“起始位”開始的,接著是要傳送的若干數(shù)據(jù)位,低位先行,最后是一個(gè)“1”狀態(tài)的“停止位”;那么,當(dāng)接收器檢測(cè)到一個(gè)“1”向“0”的跳變時(shí),便視為可能的起始位。起始位被確認(rèn)后,就知道發(fā)送器已開始發(fā)送,當(dāng)接收了已協(xié)議好的位數(shù)后并接收到字符幀中停止位就是一幀字符數(shù)據(jù)已發(fā)送完畢。這樣,接收器就知道發(fā)送器何時(shí)開始發(fā)送數(shù)據(jù)和何時(shí)結(jié)束發(fā)送數(shù)據(jù)。

基于FPGA的UART 16倍頻采樣的VHDL設(shè)計(jì)

要提高接收器的接收準(zhǔn)確性,減少誤碼率,必須要用比數(shù)據(jù)波特率高n 倍(n≥1)的速率對(duì)數(shù)據(jù)進(jìn)行采樣。文獻(xiàn)2中采用了非常規(guī)的3采樣方法:用3的波特率對(duì)每一位數(shù)據(jù)進(jìn)行采樣(如圖2所示),然后對(duì)3次采樣結(jié)果進(jìn)行判決。如果3次采樣中至少有2次為高電平,則接收這一位數(shù)據(jù)被判決為高電平,否則,為低電平。

此方法剛開始給人感覺比常規(guī)的16倍頻采樣準(zhǔn)確性高,因?yàn)槊恳晃粩?shù)據(jù)都進(jìn)行3取2的判決,而16倍頻采樣對(duì)每位數(shù)據(jù)只進(jìn)行一次中間采樣。然而筆者在實(shí)際應(yīng)用中發(fā)現(xiàn)了其存在抗干擾性差,移植性差等不足。筆者在應(yīng)用中自定義的異步數(shù)據(jù)幀長(zhǎng)達(dá)21位,應(yīng)用環(huán)境是渦輪工作間。在這樣條件下,3倍頻采樣比在良好的實(shí)驗(yàn)室環(huán)境性能差了很多,誤碼率很高。

基于FPGA的UART 16倍頻采樣的VHDL設(shè)計(jì)

經(jīng)分析代碼,發(fā)現(xiàn)3倍頻采樣方法在檢測(cè)異步數(shù)據(jù)起始位沒有任何的抗干擾處理。如果在接收線上存在干擾信號(hào),即使是一個(gè)很窄負(fù)脈沖干擾,接收器也會(huì)誤判為是數(shù)據(jù)幀的起始位,從而產(chǎn)生采樣時(shí)鐘進(jìn)行后續(xù)的數(shù)據(jù)采樣。圖3所示為存在干擾信號(hào)時(shí),檢測(cè)起始位信號(hào)時(shí)序仿真波形。圖中COLCK3-IN是3倍頻采樣時(shí)鐘,CLOCK1-IN是數(shù)據(jù)波特率,DATAIN是接收線上的數(shù)據(jù)。從圖中看出,干擾信號(hào)后,COLCK3-IN時(shí)鐘產(chǎn)生,接收器接收數(shù)據(jù)??梢娊邮盏降臄?shù)據(jù)都是錯(cuò)誤數(shù)據(jù)。簡(jiǎn)單說,文獻(xiàn)2中所論述方法不能識(shí)別真假數(shù)據(jù)起始位。再?gòu)某绦蚩梢浦残詠碚f,3倍頻采樣時(shí)鐘是用三個(gè)數(shù)值進(jìn)行計(jì)數(shù)判斷而得,當(dāng)波特率改變,其數(shù)值都要做相應(yīng)改變,這就增加了程序的修改難度。

基于FPGA的UART 16倍頻采樣的VHDL設(shè)計(jì)

16倍頻采樣起始位的檢測(cè)

3倍頻采樣方法無法識(shí)別真假數(shù)據(jù)起始位,導(dǎo)致其抗干擾性差,準(zhǔn)確性得不到保證。筆者拋棄非常規(guī)3倍頻采樣方法,采用了常規(guī)的16倍頻采樣方法:采用數(shù)據(jù)速率的16倍進(jìn)行采樣,采樣時(shí)鐘連續(xù)采樣到8個(gè)低電平信號(hào),可確定該低電平為真正的起始位,從而防止干擾信號(hào)產(chǎn)生的假起始位現(xiàn)象的發(fā)生。此后,接收器每隔16個(gè)采樣時(shí)鐘采樣一次,并把采樣到的數(shù)據(jù)作為輸入數(shù)據(jù),以移位方式存入到接收移位寄存器。

基于FPGA的UART 16倍頻采樣的VHDL設(shè)計(jì)

fpga相關(guān)文章:fpga是什么



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: FPGA UART VHDL 倍頻

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉