<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 基于FPGA 的簡(jiǎn)化UART 電路設計

基于FPGA 的簡(jiǎn)化UART 電路設計

作者: 時(shí)間:2009-03-10 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要: 本文闡述了通用異步發(fā)生器 的功能特點(diǎn),介紹了用硬件描述語(yǔ)言Verilog 來(lái)開(kāi)發(fā)各個(gè)模塊,并給出仿真結果。本設計使用Altera 的 芯片,將 的核心功能嵌入到 內部,能夠實(shí)現異步通信的功能,可以將其靈活地嵌入到各個(gè)通信系統中。

本文引用地址:http://dyxdggzs.com/article/192137.htm

關(guān)鍵詞:;;Verilog HDL

0 引言
隨著(zhù)嵌入式系統的廣泛推廣和應用,UART ( Universal Asynchronous Receiver Transmiller )作為一種串行數據傳輸方式也得到廣泛的使用。UART 允許在串行鏈路上進(jìn)行全雙工通信。串行外設到RS 232-C 異步串行接口一般采用專(zhuān)用的集成電路即UART 實(shí)現。常見(jiàn)的串行接口芯片如8250 、8251 、NS16450 等,能夠實(shí)現比較全面的串行通信功能。而在實(shí)際應用中,我們往往并不需要如此完整的功能,從而會(huì )造成資源的浪費和成本的提高。隨著(zhù)EDA 技術(shù)的飛速發(fā)展,我們就可以根據自己的需求,將所需要的UART 功能集成到FPGA 內部,從而簡(jiǎn)化了電路、減小了體積、提高了系統的可靠性?;谶@種思想,作者在設計中選用Altera 公司的EP1C12Q240CQ8,使用Verilog HDL 設計實(shí)現UART 的核心功能。1 UART 通信原理 串行通信分為兩種類(lèi)型:同步通信方式和異步通行方式。UART 是通用異步發(fā)送器,是一種串行異步通信方式。它是各種設備之間進(jìn)行通信的關(guān)鍵模塊,允許在串行鏈路上進(jìn)行全雙工的通信。在發(fā)送端,并行的數字信號需要轉化成串行信號才能通過(guò)有線(xiàn)或無(wú)線(xiàn)傳輸到另外一臺設備;而在接收端,串行信號必須要被恢復成并行信號才能進(jìn)行數據處理。UART 就是用來(lái)處理這種數據與串口之間的串并和并串轉換的。
UART 傳送一個(gè)字符以起始位(Start Bit) 開(kāi)始,以停止位(Stop Bit )結束,字符之間沒(méi)有固定的時(shí)間間隔要求。每一個(gè)字符的前面都有一個(gè)起始位(低電平),字符本身由5~8 位數據位組成,然后是一位校驗位(可選),最后是停止位(1 位,1 位半或2 位),停止位后面是不定長(cháng)度的空閑位。停止位和空閑位都規定高電平,這樣就可以保證起始位開(kāi)始處有一個(gè)下降沿。

圖1 數據傳輸格式

2 UART 在FPGA 中的實(shí)現
2.1UART 的硬件
在串行通信中,普遍采用的是RS-232 接口標準。硬件電路主要由FPGA 串口模塊、MAX3232 和DB-9 組成,電路圖如圖2 所示。數據從DB-9 的TxD 端進(jìn)入,經(jīng)過(guò)MAX3232 進(jìn)行電平轉換后由FPGA 串口模塊中的RxD 端進(jìn)入,進(jìn)行串并轉換后由數據總線(xiàn)進(jìn)入FPGA 的其他模塊。數據處理后經(jīng)由數據總線(xiàn)進(jìn)入FPGA 串口模塊,在其中進(jìn)行并串轉換后由TxD 端輸出到MAX3232 中,經(jīng)電平轉換后由DB-9 的RxD 端輸出。

圖2 UART 硬件電路圖

1. 2.2 UART 的結構設計 UART 主要由波特率發(fā)生模塊、發(fā)送模塊、接收模塊這三個(gè)部分組成。
2.2.1 波特率發(fā)生模塊
當UART 在發(fā)送數據的時(shí)候,只需要按照一定的速率將數據串行地移動(dòng)出就可以了。然而,當UART 在接收串行的數據時(shí),在什么時(shí)刻將數據移入移位寄存器是非常關(guān)鍵的。最理想的情況是在串行數據的每一位的中間時(shí)刻,對串行數據進(jìn)行采樣。對每一位數據的時(shí)間進(jìn)行分段,時(shí)間的分段越多,對串行數據的采樣就越靠近中點(diǎn),由于接收方和發(fā)送方的時(shí)鐘不可能完全同步,時(shí)間的分段越多,接收方出現采樣錯誤的概率就越低。但時(shí)間的分段越多,也意味著(zhù)采樣時(shí)間就越高,系統的開(kāi)銷(xiāo)就越大。因此,在實(shí)際的設計中,采用16 倍于波特率的時(shí)鐘頻率。UART 收發(fā)的每一個(gè)數據寬度都是波特率發(fā)生器輸出的時(shí)鐘周期的16 倍。如按照9600b/s 進(jìn)行收發(fā),那么波特率發(fā)生器的輸出時(shí)鐘頻率應為9600×16Hz 。由于外部時(shí)鐘采用25MHz ,可以很簡(jiǎn)單地通過(guò)總線(xiàn)寫(xiě)入不同的數值到波特率發(fā)生器保持寄存器中,然后用計數器的方式生成所需要的各種波特率。計算公式為:25000000/(16 ×所期望的波特率)-1。
2. 2.2.2 發(fā)送模塊


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

關(guān)鍵詞: FPGA UART 電路設計

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>