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久久| 国产真实乱了在线播放| 无码高潮喷水专区久久| 久久综合激情网| 国产迷奸在线看| 国产欧美日韩资源在线观看| 亚洲男女天堂| 91久久国产热精品免费| 少妇精品在线| 色呦呦手机在线精品| 黄色网址免费在线| 日韩在线中文| 久久 午夜福利 张柏芝| 日韩不卡高清视频| 人妻一区二区三区无码精品一区| 久久黄色毛片| 另类综合视频| 欧美精品另类| 熟妇人妻无乱码中文字幕真矢织江 | 亚洲精品国产乱码不卡| 18禁黄无遮挡网站| 99久久国产精品无码| 亚洲欧美另类视频| 国产成人欧美| 国产视频欧美| 国产高清国内精品福利| 澳门av无码| 成·人免费午夜无码视频在线观看 | a毛片基地免费大全| 亚欧成人无码AV在线播放| 无码 在线 在线| 五月天福利视频| www.99精品视频在线播放| 91精品久久久久久无码人妻| 日韩精品一区二区深田咏美| 国产精品午夜福利麻豆| 亚洲国产成人在线| 99re热精品视频国产免费| 国产剧情一区二区| 最新日本中文字幕| 久久国产黑丝袜视频| 亚洲熟女偷拍| 少妇人妻无码首页| 男女性午夜福利网站| 亚洲AV成人一区二区三区AV| 国产成+人+综合+亚洲欧美| 亚洲欧美日韩中文字幕在线一区| 一级不卡毛片| 久久亚洲国产最新网站| 亚洲第一国产综合| 久热中文字幕在线| 日韩在线视频网站| 久久亚洲欧美综合| 成人精品区| 中文字幕在线看| 精品国产www| 一级片免费网站| 欧美日韩在线第一页| 国产在线精彩视频论坛| 在线精品亚洲一区二区古装| 国产免费久久精品99re丫丫一| 自拍中文字幕| 国产亚洲一区二区三区在线| 欧美中文字幕在线二区| 精品国产免费人成在线观看| 久久这里只精品国产99热8| 亚洲五月激情网| 日韩欧美中文字幕在线韩免费| 国产成人亚洲日韩欧美电影| 夜夜高潮夜夜爽国产伦精品| 网友自拍视频精品区| 国产v精品成人免费视频71pao| 亚洲综合二区| 国产日韩欧美一区二区三区在线| 久久精品无码一区二区日韩免费| 丝袜美女被出水视频一区| 亚洲精品制服丝袜二区|