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

基于FPGA的UART模塊的設計

2009-05-12 03:14:34楊宗國李艷萍
現代電子技術 2009年2期

楊宗國 李艷萍

摘 要:為了實現計算機與基于FPGA圖像處理系統的數據通信,這里用FPGA設計了一款簡易通用異步收發器(UART)模塊。UART的主要功能是實現數據處理模塊與RS 232串行數據接口之間的數據轉換,即將送過來的并行數據轉換為輸出的串行數據流,由數據處理模塊傳送給計算機,還可以將串行數據轉換為并行數據,供數據處理模塊使用。為了簡化電路設計,減少電路面積,這里省略了UART系統中的奇偶檢驗模塊。

關鍵詞:FPGA;VHDL;串/并轉換;并/串轉換;UART

中圖分類號:TN971文獻標識碼:B

文章編號:1004 373X(2009)02 019 04

Design of UART Module Based on FPGA

YANG Zongguo,LI Yanping

(College of Information Engineering,Taiyuan University of Technology,Taiyuan,030024,China)

Abstract:To realize data communication between computer and FPGA-based image processing system,a simple Universal Asynchronous Receiver Transmitter(UART)is designed by FPGA.The main function of UART is to realize data conversion between data disposal module and RS 232 serial port,that is to say,parallel data trinsmitted by data disposal module is converted into serial data flow,then it is transmitted into computer,the serial data is converted into parallel data for the usage of data disposal module.For predigesting circuit design and reducing electrocircuit proportion,parity check module is not needed.

Keywords:FPGA;VHDL;S/P conversion;P/S conversion;UART

0 引 言

在計算機的數據通信中,外設一般不能與計算機直接相連,它們之間的信息交換主要存在以下問題:

(1) 速度不匹配。

外設的工作速度和計算機的工作速度不一樣,而且外設之間的工作速度差異也比較大。

(2) 數據格式不匹配。

不同的外設在進行信息存儲和處理時的數據格式可能不同,例如最基本的數據格式可分為并行數據和串行數據。

(3) 信息類型不匹配。

不同的外設可能采用不同類型的型號,有些是模擬信號,有些是數字信號,因此采用的處理方式也不同。

為了解決外設和計算機之間的信息交換問題,即需要設計一個信息交換的中間環節接口。UART控制器是最常用的接口。

通用異步收發器(Universal Asynchronous Receiver/Transmitter,UART)是輔助計算機與串行設備之間的通信,作為RS 232通信接口的一個重要的部分,目前大部分的處理器都集成了UART。

1 UART的數據格式

UART的數據傳輸格式如圖1所示。

由于數字圖像亞像素在計算機中是用8位二進制表示,因此UART傳輸的有效數據位為8位。傳輸線在空閑時為高電平,因此有效數據流的開始位設為0。接著傳輸8位有效數據位,先從最低位開始傳送。奇偶檢驗位可以設置為奇檢驗、偶校驗或者不設置校驗位,由于本系統使用的傳輸速率不高,為了加快開發進程,減少電路面積,因此沒有設計奇偶檢驗模塊,數據流中不設奇偶檢驗位。最后停止位為高電平。

2 UART的基本結構

設計的UART主要由UART內核、信號檢測器、移位寄存器、波特率發生器和計數器組成,如圖2所示。UART各個功能模塊的功能如下文所述。

2.1 信號檢測器模塊

信號檢測器用于對RS 232的輸入信號進行實時監測,一旦發現新的數據則立即通知UART內核。信號檢測器的仿真波形如圖3所示。

其中,RxD第一次為低時,new_data信號闡述輸出,之后RxD又變低,但由于信號檢測器處于鎖定狀態,所以new_data信號并沒有輸出;最后,reset_n信號將信號檢測器復位,RxD再次變低時,new_data又有輸出。可見信號檢測器的實現完全正確,其功能完全符合設計要求。

2.2 移位寄存器模塊

移位寄存器模塊的作用是存儲輸入或者輸出數據。當UART接收RS 232輸入時,移位寄存器在波特率模式下采集RS 232輸入信號,且保存結果;當進行RS 232輸出時,UART內核首先將數據加載到移位寄存器內,再使移位寄存器在波特率模式下將數據輸出到RS 232輸出端口上。移位寄存器的仿真波形圖如圖4所示。

如圖4所示,移位寄存器在復位后的每個時鐘的上升沿工作。由于數據發送時是先發送有效數據的最低位,因此移位寄存器是將接收的數據由高位向低位移動,dout輸出移位寄存器的最低位。圖中的regs數據用16進制表示。

2.3 波特率發生器模塊

波特率發生器的功能是產生和RS 232通信所采用的波特率同步的時鐘,這樣才能方便地按照RS 232串行通信的時序要求進行數據接收或者發送。比如,波特率為9 600 b/s,即每秒傳輸9 600 b數據,則同步的波特率時鐘頻率為9 600 Hz,周期為1/9 600=0.104 17。

設計波特率時鐘的基本思路就是設計一個計數器,該計數器工作在速度很高的系統時鐘下,當計數器計數到某數值時將輸出置高,再計數到一定的數值后再將輸出置低,如此反復便能夠得到所需的波特率時鐘。該系統所用的FPGA系統時鐘為50 MHz,RS 232通信的波特率為9 600b/s,則波特率時鐘的每個周期相當于50×1069 6005 208個系統時鐘周期。假如要得到占空比為50%的波特率時鐘,只要使得計數器在計數到1 604時將輸出置高,之后在計數到5 208時將輸出置低并且重新計數,就能實現和9 600波特率同步的時鐘。

為了便于仿真,使計數器計到2時將輸出置高,之后計到4時將輸出置地并且重新計數。波特率發生器的仿真波形圖如圖5所示。

觀察波形可以看到波特率發生器每經過4個時鐘周期輸出1個完整的波特率時鐘周期,占空比為1/2,并且在每次輸出波特率時鐘周期之后輸出1個系統時鐘脈寬的提示信號indicator,UART通過此信號來了解波特率發生器已輸出的波特率時鐘周期個數。由波形圖可見波特率發生器的工作完全滿足設計的要求。

2.4 計數器模塊

計數器模塊的功能是可控的,在輸入時鐘的驅動下進行計數,當達到計數上閾時給UART內核一個提示信號。在不同的工作狀態下,計數器模塊的輸入時鐘是不同的。UART在數據發送之前需要進行數據加載(即將串行序列保存在移位寄存器內),在此工程中計數器模塊的輸入時鐘為系統時鐘,因為此時移位寄存器也工作在系統時鐘下。除了數據加載,另外2個需要計數器模塊的過程是數據接收和數據發送。由于這兩個過程中移位寄存器工作在波特率時鐘下,所以計數器模塊的時鐘就是與波特率時鐘同步的波特率發生器提示信號indicator,這樣每輸出1個完整的波特率時鐘周期計數器就能增加1。

計數器的仿真波形圖如圖6所示。

計數器在復位后并且ce有效時開始計數,并且在第10個時鐘周期輸出提示信號overflow。

2.5 發送數據緩沖器模塊

發送數據緩沖器模塊的功能是將要發送的并行數據轉換成串行數據,并且在輸出的串行數據流中加人起始位和停止位。緩沖器首先將要發送的8位數據寄存,并在最低位后添加起始位‘0,在最高位前添加停止位‘1,組成10位要發送的數據,然后根據UART內核模塊的計數值將相應的數據送入移位寄存器輸入端。UART內核模塊輸出的計數值是從0依次計到9,即先將要發送數據的最低位送入移位寄存器。發送數據緩沖器的仿真波形圖如圖7所示。

由波形圖可知,發送數據緩沖器在復位后,在輸入的計數值si_count為0時,send_si輸出起始位‘0。在輸入的計數值si_count為1~8時,send_si分別輸出send_bus上相應的數據位。在輸入的計數值si_count為9時,send_si輸出停止位‘1。

2.6 UART內核模塊

UART內核模塊是整個設計的核心。在數據接收時,UART內核模塊負責控制波特率發生器和移位寄存器,使得移位寄存器在波特率時鐘的驅動下同步地接收并且保存RS 232接收端口上的數據。在數據發送時,UART內核模塊首先根據待發送數據產生完整的發送數據序列(包括起始位、數據位和停止位),之后控制移位寄存器將序列加載到移位寄存器的內部寄存器里,最后再控制波特率發生器驅動移位寄存器將數據串行輸出。

UART內核模塊的主要功能是控制數據接收、數據加載和數據發送的過程,這可以用狀態機來實現,其狀態圖如圖8所示。

)數據加載過程。

數據的接收過程可以定義3個狀態:空閑“idle”狀態、接收“receive”和接收完成“receive_over”。UART內核模塊在復位后進入空閑狀態。如果信號檢測器檢測到數據傳輸,即new_data=‘1,UART內核檢測到此信號就會進入接收狀態。在UART進入由空閑狀態轉為接收狀態過程中,需要進行一系列的接收預備操作,包括將子模塊復位、選擇移位寄存器串行輸入數據以及選擇移位寄存器的輸入時鐘等。進入接收狀態后,波特率發生器開始工作,其輸出波特率時鐘驅動移位寄存器同步的存儲RS 232接收端口上的數據,并且其提示信號“indicator”驅動計數器進行計數。當所有數據接收完成,計數器也達到了其計數的上閾,此時overflow=‘1,通知UART內核進入接收狀態。UART內核進入接收完成狀態的同時,會檢查奇偶校驗的結果,同時使得子模塊使能信號無效,以停止各個子模塊。

UART內核的接收完成狀態僅保持1個時鐘周期,設置這個狀態的作用是借用一個時鐘周期復位信號檢測器,準備接收下次數據傳輸。

(2) 數據加載和發送過程。

數據加載和發送的過程都是為發送數據而設定的,所以將它們放在一起進行介紹,可以用4個狀態來實現上述的過程,即空閑、加載、發送和發送完成。其中的空閑狀態是UART內核復位后的空閑狀態,與上面介紹的數據接收過程的空閑狀態一致。數據加載過程在數據發送過程之前進行。UART內核復位后進入空閑狀態,當探測到發送控制信號有效時,即send=‘1,便會進入加載狀態開始數據加載。在進入加載狀態的同時,UART內核會將移位寄存器、計數器復位,并且通過選擇信號使得移位寄存器的輸入為發送數據緩沖器模塊產生的串行數據序列,使得移位寄存器和計數器的工作時鐘為系統時鐘。進入加載狀態后,在UART內核控制下,發送數據緩沖器模塊會將完整的待發送序列加載到移位寄存器的數據輸入端,發送的序列是和系統時鐘同步的,移位寄存器在系統時鐘的驅動下不斷讀入輸入端數據并保存在內部寄存器內。在移位寄存器加載數據的同時,計數器也在時鐘的驅動下進行計數,由于都是工作在系統時鐘下,所以當所有數據被加載時,計數器也達到了計數的上閾(即串行數據的總量),此時overflow=‘1,通知UART內核進入發送狀態。UART內核進入發送狀態的同時會改變幾個選擇信號,比如將移位寄存器的時鐘設為波特率時鐘,將計數器時鐘設為波特率的提示信號,最重要的是將輸出信號送到RS 232的發送端口TxD上。發送的過程和接收類似,移位寄存器在波特率時鐘的驅動下內部寄存器的數據串行的發送出去,同時計數器在波特率發生器的提示信號驅動下進行計數。UART內核在計數器到達計數上閾后便進入發送完成模式,并且輸出發送完成信號。

3 UART頂層模塊的仿真測試

將上述各個模塊的VHDL代碼生成原理圖符號,并在原理圖編輯工具中將各個模塊連接起組成1個完整的UART模塊。為了驗證UART模塊的正確性,對UART的發送過程和接收過程分別進行了波形仿真。為便于觀察波形,波特率產生器設置為4個系統時鐘產生一個完整的波特率時鐘。圖9是UART模塊接收過程的仿真波形圖。

由仿真波形圖可以看出,接收端RxD上的數據序列為0101010101,起始位‘0后為數據位“10101010”,最后一位為停止位‘1。在10個波特率時鐘之后,UART發出1個接收完成信號recv=‘1,并在數據輸出端“new_data”將接收的數據輸出給后續數據處理模塊。由于發送數據時首先發送數據的最低位,因此接收的數據應為“01010101”,將光條放置數據輸出端“new_data”的數據輸出波形上,可以從數據欄看到此時數據輸出端new_data=“01010101”,UART數據接收功能完全正確。

圖10為UART發送過程仿真波形。由圖可以看出,send=‘1后待發送數據為“01010101”,將待發送數據加上起始位和停止位,并從最低位開始發送,則發送端txd上的數據序列為“0101010101”,發送停止位后,發送結束信號send_over=‘1。圖10證明UART數據發送功能完全正確。

4 結 語

介紹了UART在可編程邏輯器件FPGA上的實現,并通過實際電路驗證了設計的功能,使用FPGA不僅可以方便地用串口協議與PC機進行串行通信,而且擴展了板級系統的接口功能。應用在可編程器件FPGA內部,可以很大程度地減少電路板的使用面積,并提高系統的穩定性和可編程性。

參考文獻

[1]劉韜,樓興華.FPGA數字電子系統設計與開發實例導航.北京:人民郵電出版社,2005.

[2]侯伯亨.VHDL硬件描述語言與數字邏輯電路設計.西安:西安電子科技大學出版社,1999.

[3]褚振勇,齊亮.FPGA設計及應用.2版.西安:西安電子科技大學出版社,2006.

[4]朱明程.FPGA原理及應用設計[M].北京:電子工業出版社,2001.

[5]MEYER-BAESE U.數字信號處理的FPGA實現[M].劉凌,胡永生,譯.北京:清華大學出版社,2003.

[6]聶濤,許世宏.基于FPGA的UART設計.現代電子技術,2006,29(2):127-129.

作者簡介 楊宗國 男,1981年出生,太原理工大學碩士研究生。研究方向為信號與信息處理。

李艷萍 女,1963年出生,副教授,碩士生導師。研究方向為移動通信系統的信道估計與信號檢測。

主站蜘蛛池模板: 国产男女免费视频| 福利国产微拍广场一区视频在线| 经典三级久久| 人妻无码中文字幕第一区| 色男人的天堂久久综合| 欧美日韩精品综合在线一区| 久久99这里精品8国产| 国产高清在线精品一区二区三区| 欧美成人精品一级在线观看| 国产精品夜夜嗨视频免费视频| 55夜色66夜色国产精品视频| 日韩精品专区免费无码aⅴ| 伊人成人在线| 免费高清毛片| 无码啪啪精品天堂浪潮av| 一区二区三区在线不卡免费| 人妻中文久热无码丝袜| 色婷婷在线播放| 国产精品极品美女自在线网站| 情侣午夜国产在线一区无码| 最新亚洲人成无码网站欣赏网| 欧美一级爱操视频| 最新亚洲人成无码网站欣赏网| 国产精品自拍露脸视频| 在线观看亚洲国产| 国产成人狂喷潮在线观看2345| 国产女人18水真多毛片18精品| 人妻丰满熟妇αv无码| 97久久精品人人做人人爽| 国产激情在线视频| 精品国产福利在线| 午夜视频免费试看| 欧美日韩一区二区三区在线视频| 欧美五月婷婷| 久草视频一区| 97久久人人超碰国产精品| 九色视频最新网址| 毛片一级在线| av在线5g无码天天| 午夜精品国产自在| 国产 在线视频无码| 喷潮白浆直流在线播放| 久久久久人妻一区精品色奶水| 在线观看91精品国产剧情免费| 国产精品尤物在线| 亚洲欧美在线看片AI| 欧美午夜在线观看| 亚洲愉拍一区二区精品| 精品91自产拍在线| 国产91小视频在线观看| 午夜视频在线观看区二区| 在线精品欧美日韩| 网友自拍视频精品区| 欧美一级高清片欧美国产欧美| 国产不卡在线看| 亚洲精品成人片在线观看 | 精品人妻AV区| h视频在线观看网站| 国产偷国产偷在线高清| 久久99精品久久久大学生| 免费人成网站在线观看欧美| 3p叠罗汉国产精品久久| 久久久久亚洲精品无码网站| 亚洲精品色AV无码看| 日韩视频福利| 成年人福利视频| 亚洲乱码视频| 亚洲无码高清一区| 黄色一级视频欧美| 久久性视频| 天天干天天色综合网| 无码乱人伦一区二区亚洲一| 亚洲精品另类| 精品一區二區久久久久久久網站| 色天堂无毒不卡| 国产美女91视频| 91福利国产成人精品导航| 91网红精品在线观看| 国产毛片高清一级国语 | 国产男女免费视频| 亚洲欧美国产高清va在线播放| 亚洲日韩AV无码一区二区三区人|