畢業(yè)論文“基于FPGA的UART模塊設(shè)計”.doc_第1頁
畢業(yè)論文“基于FPGA的UART模塊設(shè)計”.doc_第2頁
畢業(yè)論文“基于FPGA的UART模塊設(shè)計”.doc_第3頁
畢業(yè)論文“基于FPGA的UART模塊設(shè)計”.doc_第4頁
畢業(yè)論文“基于FPGA的UART模塊設(shè)計”.doc_第5頁
免費預(yù)覽已結(jié)束,剩余32頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

本本科科畢畢業(yè)業(yè)設(shè)設(shè)計計 論論文文 題目 基于 FPGA 的 UART 模塊設(shè)計 學(xué) 院 物理與電子工程學(xué)院 年 級 06 專 業(yè) 電子科學(xué)與技術(shù) 班 級 電子 1 班 學(xué) 號 050206110 學(xué)生姓名 倪海日 指導(dǎo)教師 潘啟勇 職 稱 講師 論文提交日期 2010 5 19 常熟理工學(xué)院本科畢業(yè)設(shè)計 論文 誠信承諾書 本人鄭重聲明 所呈交的本科畢業(yè)設(shè)計 論文 是本人在導(dǎo)師的指導(dǎo)下 獨立進行研究工作所取得的成果 除文中已經(jīng)注明引用的內(nèi)容外 本論文不 含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品成果 對本文的研究做出重 要貢獻的個人和集體 均已在文中以明確方式標(biāo)明 本人完全意識到本聲明 的法律結(jié)果由本人承擔(dān) 本人簽名 日期 常熟理工學(xué)院本科畢業(yè)設(shè)計 論文 使用授權(quán)說明 本人完全了解常熟理工學(xué)院有關(guān)收集 保留和使用畢業(yè)設(shè)計 論文 的規(guī) 定 即 本科生在校期間進行畢業(yè)設(shè)計 論文 工作的知識產(chǎn)權(quán)單位屬常熟理 工學(xué)院 學(xué)校有權(quán)保留并向國家有關(guān)部門或機構(gòu)送交論文的復(fù)印件和電子版 允許畢業(yè)設(shè)計 論文 被查閱和借閱 學(xué)??梢詫厴I(yè)設(shè)計 論文 的全部或部分 內(nèi)容編入有關(guān)數(shù)據(jù)庫進行檢索 可以采用影印 縮印或掃描等復(fù)制手段保存 匯編畢業(yè)設(shè)計 論文 并且本人電子文檔和紙質(zhì)論文的內(nèi)容相一致 保密的畢業(yè)設(shè)計 論文 在解密后遵守此規(guī)定 本人簽名 日期 導(dǎo)師簽名 日期 常熟理工學(xué)院畢業(yè)設(shè)計 論文 I 基于 FPGA 的 UART 模塊設(shè)計 摘 要 通用異步收發(fā)器 Universal Asynchronous Receiver Transmitter UART 是一種廣 泛應(yīng)用于短距離 低速 低成本通信的串行傳輸接口 UART允許在串行鏈路上進行全雙 工通信 常見的串行接口芯片能夠?qū)崿F(xiàn)比較全面的串行通信功能 而在實際應(yīng)用中 我 們往往并不需要如此完整的功能 從而會造成資源的浪費和成本的提高 由于常用UART 芯片比較復(fù)雜且移植性差 本文提出一種采用可編程器件FPGA實現(xiàn)UART功能的方法 采 用TOP DOWN設(shè)計方法 對系統(tǒng)劃分模塊以及各個模塊的信號連接 然后進行模塊設(shè)計 并用VHDL語言編寫代碼來實現(xiàn)各模塊功能 從而簡化了電路 減小了體積 提高了系統(tǒng) 的可靠性 使用Quartus自帶的仿真器對各模塊進行功能仿真和時序仿真 實現(xiàn)了發(fā)送 接收等功能 驗證了結(jié)果 表明設(shè)計正確 功能良好 符合設(shè)計要求 關(guān)鍵詞關(guān)鍵詞 FPGA VHDL UART 有限狀態(tài)機 常熟理工學(xué)院畢業(yè)設(shè)計 論文 II The Design of Universal Asynchronous Receiver Transmitter Based on FPGA Abstract UART Universal Asynchronous Receiver Transmitter is a widely used for short range low speed low cost serial communication transmission interface UART allow full duplex communication on serial links Common serial interface chips can realize comprehensive serial communication function In practice we often did not need such a complete feature which will result in waste of resources and higher costs As the UART chips used more complex and it s transplantation is poor this paper presents a method that a implementation of UART based on programmable devices FPGA TOP DOWN design method is used the system is divided into modules and signal connections of each module the module function is designed in VHDL language In this way the design can simplifies the circuit reduces the volume improves the reliability of the system Using Quartus simulator for each module function simulation and temporal simulation this designing has realized send receive and other functions Verifing the results suggests that the design comply with the design requirements Key Words FPGA VHDL UART FSM 常熟理工學(xué)院畢業(yè)設(shè)計 論文 III 目 錄 第一章 緒論 1 1 1 課題背景與現(xiàn)實意義 1 1 2 課題研究的現(xiàn)狀及相關(guān)技術(shù)的介紹 1 1 2 1 UART 芯片的性能指標(biāo) 1 1 2 2 FPGA 的發(fā)展歷程和結(jié)構(gòu)介紹 2 1 2 3 FPGA 的設(shè)計方法及軟件平臺 3 1 2 4 VHDL 語言簡介 4 1 3 本文的研究內(nèi)容 5 1 4 本文的內(nèi)容結(jié)構(gòu) 6 1 5 小節(jié) 6 第二章 UART 理論基礎(chǔ) 7 2 1 UART 原理 7 2 2 串行通信基礎(chǔ)知識 8 2 2 1 串行通信工作方式 9 2 2 2 串行異步通信 9 2 2 3 串行同步通信 11 2 3 小節(jié) 11 第三章 UART 的設(shè)計實現(xiàn) 12 3 1 UART 的設(shè)計分析 12 3 1 1 UART 設(shè)計概述 12 3 1 2 UART 設(shè)計整體結(jié)構(gòu) 12 3 2 UART 模塊設(shè)計 13 3 2 1 頂層模塊設(shè)計 13 3 2 2 波特率發(fā)生模塊設(shè)計 13 3 2 3 接收模塊設(shè)計 14 3 2 4 發(fā)送模塊設(shè)計 16 常熟理工學(xué)院畢業(yè)設(shè)計 論文 IV 3 3 小節(jié) 17 第四章 UART 設(shè)計的仿真與驗證 18 4 1 頂層模塊仿真 18 4 2 波特率發(fā)生模塊仿真 19 4 3 接收模塊仿真 19 4 4 發(fā)送模塊仿真 20 4 5 FPGA 開發(fā)版下載驗證 21 4 6 小節(jié) 22 結(jié)語 23 致謝 25 參考文獻 26 附錄 部分程序代碼 27 常熟理工學(xué)院畢業(yè)設(shè)計 論文 1 第一章 緒 論 1 11 1 課題背景與現(xiàn)實意義課題背景與現(xiàn)實意義 通用異步收發(fā)器 Universal Asynchronous Receiver Transmitter UART 是一種廣 泛應(yīng)用于短距離 低速 低成本通信的串行傳輸接口 是計算機中最普遍的一部分 異 步串行通信接口具有傳輸線少 成本低 可靠性高 實現(xiàn)簡單等優(yōu)點 廣泛應(yīng)用于微機 和外設(shè)的數(shù)據(jù)交換 如和鼠標(biāo) 鍵盤 調(diào)制解調(diào)器 打印機之間以及微機與微機之間的 串行數(shù)據(jù)傳輸 l 同時在當(dāng)今的嵌入式微處理器芯片的設(shè)計中 UART接口已成為標(biāo)準(zhǔn)配 置 通用異步收發(fā)器主要實現(xiàn)功能是接收外設(shè)傳送的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)同時校驗該 數(shù)據(jù) 然后將并行數(shù)據(jù)提供給處理器處理 或者將處理器發(fā)送來的并行數(shù)據(jù)轉(zhuǎn)換成串行 數(shù)據(jù)同時根據(jù)串行通信協(xié)議附加上起始位 奇偶校驗位以及停止位 然后從串行數(shù)據(jù)輸 出端發(fā)送出去 2 3 用UART來實現(xiàn)傳輸數(shù)據(jù)的串 并轉(zhuǎn)換或者并 串轉(zhuǎn)換 目前大部分處理器芯片中都集成 了UART功能 但是在FPGA芯片中一般沒有集成UART 這增加了FPGA芯片與其它處理器間 數(shù)據(jù)交換的復(fù)雜性 為提高FPGA設(shè)計的靈活性 我們可以用硬件描述語言編寫一個具有 UART功能的模塊 然后把這個模塊配置到FPGA芯片中 由于FPGA的功能日益強大 開發(fā) 周期短 現(xiàn)場可編程等一系列優(yōu)點也越來越明顯 將需要的UART功能集成到FPGA內(nèi)部 利用VHDL語言將UART的核心功能集成 去掉一些不必要的管腳 這樣既可簡化電路又能 提高系統(tǒng)可靠性以及穩(wěn)定性并可以方便地對芯片進行升級或內(nèi)嵌到各種不同的FPGA芯片 中 方便快捷 使整個設(shè)計更加緊湊 穩(wěn)定 可靠 因此利用FPGA自身的優(yōu)點來設(shè)計設(shè) 備間串行通信接口 具有較高的實用價值和重大意義 4 1 21 2 課題研究的現(xiàn)狀及相關(guān)技術(shù)的課題研究的現(xiàn)狀及相關(guān)技術(shù)的介紹介紹 1 2 1 UART 芯片的性能指標(biāo) 自第一個大規(guī)模集成電路芯片發(fā)明以后 在上世紀(jì)70年代UART就得到了廣泛的應(yīng)用 經(jīng)過幾十年的發(fā)展 UART芯片的管腳名稱 管腳功能以及整體的操作模式幾乎沒有太大 的改變 現(xiàn)在的一些基于CMOS工藝的UART芯片諸如NSl6650的原型可以追溯到早期的一些 經(jīng)典接口器件像Intel8250 5 這些年來因一些高速Modem以及一些軟件 例如Laplink 要 求更高速的數(shù)據(jù)傳輸速率 UART內(nèi)部的基本構(gòu)架已經(jīng)得到了擴展 常熟理工學(xué)院畢業(yè)設(shè)計 論文 2 衡量UART的性能指標(biāo)主要有 主機接口性能 數(shù)據(jù)緩沖寄存器的深度 波特率等等 在主機接口方面 被稱為VLIO 可變延遲I O 的新型接口現(xiàn)在得到了采用 此外新一代 1 8V UART設(shè)計成可以與總線無縫連接 現(xiàn)代工藝的進一步發(fā)展推動了新一代具有靈活性 主機接口的高性能UART的出現(xiàn) 這些UART工作在低電壓低功耗下 能夠提供較高的數(shù)據(jù) 傳輸速率來滿足藍牙EDR等新連接標(biāo)準(zhǔn)的要求 UART傳輸數(shù)據(jù)所需的CPU開銷直接受UART 內(nèi)部的FIFO深度影響 FIFO的深度越深 每次中斷時就可以傳輸更多數(shù)據(jù) 這大大提高 了數(shù)據(jù)的吞吐量 6 從而減少CPU的開銷 提高了系統(tǒng)的運行效率 因此對UART性能方面 的提高主要是對數(shù)據(jù)緩沖寄存器方面進一步的優(yōu)化 接下來UART芯片的發(fā)展將會以智能 化通信協(xié)調(diào)處理器的形式出現(xiàn) 這類設(shè)備已經(jīng)在一些PC機的插件上應(yīng)用了 4 1 2 2 FPGA 的發(fā)展歷程和結(jié)構(gòu)介紹 當(dāng)今社會是數(shù)字化的社會 是數(shù)字集成電路廣泛應(yīng)用的社會 數(shù)字集成電路本身在不 斷地進行更新?lián)Q代 隨著微電子設(shè)計技術(shù)與工藝的發(fā)展 數(shù)字集成電路從電子管 晶體 管 中小規(guī)模集成電路 超大規(guī)模集成電路 VLSIC 逐步發(fā)展到專用集成電路 ASIC 但 是ASIC因其設(shè)計周期長 不可移植性 靈活性差等缺陷制約著它的應(yīng)用范圍 現(xiàn)場可編 程邏輯器件的出現(xiàn)使ASIC的設(shè)計周期大大縮短 在設(shè)計初期就能設(shè)計出合適的ASIC芯片 并且立即投入實際應(yīng)用之中 其中應(yīng)用最廣泛的當(dāng)屬現(xiàn)場可編程門陣列FPGA Field Programmable Gate Array 和復(fù)雜可編程邏輯器件CPLD Complex Programmable Logic Device FPGA與CPLD都是可編程邏輯器件 它們是在PAL 可編程陣列邏輯 以及隨后出現(xiàn)的 PLA 可編程邏輯陣列 等邏輯器件的基礎(chǔ)上發(fā)展起來的 PAL PLA的區(qū)別就是與門和或門 的結(jié)構(gòu)不同 到了80年代初期在PLD的輸出端口附加上了新的輸出邏輯宏單元 這時候就 發(fā)展成為GAL 通用陣列邏輯 隨后出現(xiàn)的一些尖端的技術(shù)把GAL器件都集成到了一個硅 片上 就得到了CPLD 復(fù)雜可編程邏輯器件 一直到了上世紀(jì)80年代中期 出現(xiàn)了 FPGA 現(xiàn)場可編程門陣列 器件 7 FPGA與傳統(tǒng)的那些可編程邏輯器件相比 8 它最大的 優(yōu)點就是設(shè)計靈活 可移植性以及可以對外接或內(nèi)置的RAM或EPROM反復(fù)無限次得編程 可以實時地改變器件內(nèi)部的邏輯功能 實現(xiàn)現(xiàn)場可編程 這種芯片受到世界范圍內(nèi)電子 工程設(shè)計人員的廣泛關(guān)注和普遍歡迎 FPGA器件從結(jié)構(gòu)上而言 其核心部分是邏輯單元陣列LCA Logic Cell Array LCA是 由內(nèi)部邏輯塊矩陣及周圍的輸入 輸出模塊IOB Input Output Block 組成 而其內(nèi)部連 線 可編程內(nèi)部互連資源PI Programmable Interconnection 則占據(jù)邏輯塊的行列之 常熟理工學(xué)院畢業(yè)設(shè)計 論文 3 間 以及邏輯塊與FO塊之間的通道 LCA的可編程邏輯塊CLB Configurable Logic Block 和 IOB的功能及其互連 是由存儲器中的配置程序來控制的 1 可編程邏輯塊CLB FPGA器件的主體部分是由很多可編程邏輯塊CLB構(gòu)成的矩陣 每個CLB含有可編程的組 合邏輯和寄存器 寄存器可由組合邏輯或直接由CLB的輸出裝入信息 寄存器的輸出也可 以直接驅(qū)動組合邏輯 一個CLB包括4個Slices 每個Slices包括兩個查找表LUT 兩個觸 發(fā)器和相關(guān)邏輯 查找表本質(zhì)上就是一個RAM 目前FPGA中多使用4輸入的LUT 所以每一個LUT可以看成 一個有4位地址線的16X1的RAM 當(dāng)用戶通過原理圖或HDL描述了一個邏輯電路以后 CPLD FPGA開發(fā)軟件會自動計算邏輯電路的所有可能的結(jié)果 并把結(jié)果事先寫入RAM 這 樣 每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表 找出與地址對應(yīng)的內(nèi) 容 然后輸出即可 2 輸入輸出塊I 0 輸入輸出I 0含有一個可編程輸入通道和一個可編程輸出通道 可編程輸入通道由驅(qū) 動器 觸發(fā)器及程序控制多路開關(guān)組成 它可以通過程序控制選擇直接輸入或通過寄存 器輸入 可編程輸出通道由多路開光和輸出緩沖器組成 它可以通過程序控制選擇三態(tài) 輸出 常開或常閉三種狀態(tài) 3 RAM塊 中小規(guī)模的存儲模塊可以簡化系統(tǒng)的設(shè)計 提高系統(tǒng)的工作速度 而且可以減少數(shù)據(jù) 存儲的成本 使芯片內(nèi)外數(shù)據(jù)信息的交換更可靠 4 可編程互連資源PI 可編程互連資源包括各種長度的金屬連線段和一些可編程連接開關(guān) 它們將各個CLB 之間或CLB與IOB之間互相連接起來 構(gòu)成各種復(fù)雜功能的系統(tǒng) 14 1 2 3 FPGA 的設(shè)計方法及軟件平臺 傳統(tǒng)的數(shù)字邏輯設(shè)計手段是采用原理圖輸入的方式進行的 當(dāng)時所做的復(fù)雜數(shù)字邏輯 電路及系統(tǒng)的設(shè)計規(guī)模比較小相對而言也比較簡單 其中用到的FPGA或ASIC設(shè)計工作往 往只能采用廠家提供的專用電路圖輸入工具來進行 為了滿足設(shè)計性能指標(biāo) 工程師往 往需要花費很長時間進行手工布線并且還得非常熟悉所選器件的內(nèi)部結(jié)構(gòu)和外部引線特 點 才能達到設(shè)計要求 這種低效率的設(shè)計方法大大延長了設(shè)計周期 設(shè)計往往是從功 能描述開始的 設(shè)計人員首先要考慮規(guī)劃出能完成某一具體功能 滿足產(chǎn)品系統(tǒng)設(shè)計要 常熟理工學(xué)院畢業(yè)設(shè)計 論文 4 求地某一功能模塊 利用某種方式把功能描述出來 通過功能仿真以驗證設(shè)計思路地正 確性 當(dāng)所設(shè)計功能滿足需要時 再考慮以何種方式完成所需要的設(shè)計 并能直接使用 功能定義地描述 這就是自頂而下的設(shè)計方法 簡單分為功能定義 設(shè)計輸入 功能仿 真 邏輯綜合 綜合后仿真 布局布線 布局布線后仿真 下載驗證等8個步驟 9 本課題 邏輯設(shè)計使用的軟件為Altera公司的Quartus II Quartus II的主要特點 Quartus II是一個集成環(huán)境 可以完成整個FPGA開發(fā)過程 Quartus II集成了很多著名 的FPGA設(shè)計工具 根據(jù)設(shè)計流程合理應(yīng)用這些工具 會使工程師的設(shè)計工作如魚得水 Quartus II界面風(fēng)格簡潔流暢 易學(xué)易用 Quartus II的界面秉承了可視化編程技術(shù) 界面根據(jù)設(shè)計流程而組織 整個設(shè)計過程只需按照界面組織結(jié)構(gòu)依次點擊相應(yīng)的按鈕或 相應(yīng)的選項即可 強大的設(shè)計輔助功能 Quartus II秉承了Altera設(shè)計軟件的強大輔助功能 在編寫代 碼時可以使用編寫向?qū)晌募^和模塊框架 也可以使用語言模板幫助編寫代碼 在 圖形輸入時可以使用輔助項幫助設(shè)計原理圖 另外 Quartus II可以方便地生成IP Core IP核 與高效模塊為用戶所用 大大減少了設(shè)計者的工作量 提高了設(shè)計效率和質(zhì) 量 Quartus II的集成工具主要分為設(shè)計輸入工具 綜合工具 仿真工具 實現(xiàn)工具和 輔助設(shè)計工具等5類 HDL Editor可以完成設(shè)計電路的HDL語言的輸入 能根據(jù)語法來彩 色顯示關(guān)鍵字 自帶仿真器做仿真 特點是仿真速度快 仿真精度高 綜合能力強 1 2 4 VHDL 語言簡介 隨著電子技術(shù)的發(fā)展 集成電路的規(guī)模越來越大 復(fù)雜程度也越來越高 對于如此 大規(guī)模的和復(fù)雜程度的電路設(shè)計問題 傳統(tǒng)的門級描述方法顯得過于瑣碎和難以管理 而 VHDL 語言具有強大的功能 覆蓋面廣 描述能力強 可用于從門級 電路級直至系統(tǒng) 級的描述 仿真和綜合 下面簡要介紹了 VHDL 語言 VHDL 的英文全名是 Very High Speed Integrated Circuit Hardware DescriptiON Language 誕生于 1982 年 1987 年底 VHDL 被 IEEE 和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述 語言 自 IEEE 公布了 VHDL 的標(biāo)準(zhǔn)版本 IEEE 1076 簡稱 87 版 之后 各 EDA 公司相 繼推出了自己的 VHDL 設(shè)計環(huán)境 或宣布自己的設(shè)計工具可以和 VHDL 接口 此后 VHDL 在 電子設(shè)計領(lǐng)域得到了廣泛的接受 并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語言 1993 年 IEEE 對 VHDL 進行了修訂 從更高的抽象層次和系統(tǒng)描述能力上擴展 VHDL 的內(nèi)容 公布 了新版本的 VHDL 即 IEEE 標(biāo)準(zhǔn)的 1076 1993 版本 簡稱 93 版 現(xiàn)在 VHDL 和 Verilog 作為 IEEE 的工業(yè)標(biāo)準(zhǔn)硬件描述語言 又得到眾多 EDA 公司的支持 在電子工程領(lǐng)域 已 常熟理工學(xué)院畢業(yè)設(shè)計 論文 5 成為事實上的通用硬件描述語言 有專家認(rèn)為 在新的世紀(jì)中 VHDL 與 Verilog 語言將 承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計任務(wù) VHDL 主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu) 行為 功能和 接口 除了含有許多具有硬件特征的語句外 VHDL 的語言形式和描述風(fēng)格與句法是十分 類似于一般的計算機高級語言 VHDL 的程序結(jié)構(gòu)特點是將一項工程設(shè)計 或稱設(shè)計實 體 可以是一個元件 一個電路模塊或一個系統(tǒng) 分成外部 或稱可視部分 及端口 和內(nèi)部 或稱不可視部分 即設(shè)計實體的內(nèi)部功能和算法完成部分 在對一個設(shè)計實體 定義了外部界面后 一旦其內(nèi)部開發(fā)完成后 其它的設(shè)計就可以直接調(diào)用這個實體 這 種將設(shè)計實體分成內(nèi)外部分的概念是 VHDL 系統(tǒng)設(shè)計的基本點 概括的說 VHDL 具有以下主要優(yōu)點 VHDL 支持層次化設(shè)計 可以在 VHDL 的環(huán)境下 完成從簡練的設(shè)計原始描述 經(jīng)過層 層細化求精 最終獲得可直接付諸生產(chǎn)的電路級或版圖參數(shù)描述的全過程 VHDL 有良好的可讀性 它可以被計算機接受 也容易被讀者理解 用 VHDL 書寫的源 文件 既是程序又是文檔 既是技術(shù)人員直接交換信息的文件 又可作為合同簽約者之 間的文件 VHDL 有良好的可移植性 作為一種已被 IEEE 承認(rèn)的工業(yè)標(biāo)準(zhǔn) VHDL 事實上已成為 通用的硬件描述語言 可以在不同的設(shè)計環(huán)境和系統(tǒng)平臺中使用 使用 VHDL 可以延長設(shè)計的生命周期 因為 VHDL 的硬件描述與工藝技術(shù)無關(guān) 不會 因為工藝變化而使描述過時 與工藝技術(shù)有關(guān)的參數(shù)可通過 VHDL 提供的屬性加以描述 工藝改變時 只需要修改相應(yīng)程序中的屬性參數(shù)即可 VHDL 支持對大規(guī)模設(shè)計的分解和已有設(shè)計的再利用 VHDL 可以描述復(fù)雜的電路系統(tǒng) 支持對大規(guī)模設(shè)計進行分解 由多人 多項目組來共同承擔(dān)和完成 標(biāo)準(zhǔn)化的規(guī)則和風(fēng) 格 為設(shè)計的再利用提供了有力的支持 1 31 3 本文的研究內(nèi)容本文的研究內(nèi)容 本課題的內(nèi)容就是要用VHDL語言在FPGA上實現(xiàn)一個通用異步收發(fā)器 首先根據(jù)通用異 步收發(fā)器的具體性能與要求將UART分為幾個模塊的組合 采用Top Down的層次化設(shè)計方 法和硬件描述語言 VHDL 來編寫內(nèi)部的邏輯功能模塊 然后運用Quartus II的綜合工具 以及Quartus II的仿真工具中對其進行綜合優(yōu)化以及仿真驗證 最后下載到實物開發(fā)板 上進行調(diào)試 主要的研究內(nèi)容有如下幾點 第一步 熟悉FPGA的設(shè)計開發(fā)流程以及通用異步收發(fā)器 UART 的各個子模塊的功能 常熟理工學(xué)院畢業(yè)設(shè)計 論文 6 掌握各個模塊之間的聯(lián)系與工作流程 熟悉UART通信協(xié)議 RS 232協(xié)議 第二步 用VHDL語言編寫通用異步收發(fā)器內(nèi)部的各個子模塊以及頂層模塊的程序代碼 第三步 在Quartus II集成的軟件開發(fā)環(huán)境中對其進行邏輯綜合 仿真驗證 布局布 線 以及最后的硬件實現(xiàn) 1 41 4 本文的結(jié)構(gòu)本文的結(jié)構(gòu) 第一章主要指出本課題的提出背景以及研究意義 以及與本研究該課題相關(guān)的技術(shù)及 開發(fā)環(huán)境 第二章著重介紹了通用異步收發(fā)器的理論內(nèi)容 包括UART通信時各模塊的工作特性及 串行通信協(xié)議 第三章主要對UART的結(jié)構(gòu)設(shè)計 包括系統(tǒng)設(shè)計以及各個模塊的設(shè)計過程進行了分析 第四章主要是對設(shè)計完成后的UART進行邏輯綜合 功能模擬及時序仿真 同時分析邏 輯綜合和仿真結(jié)果 最后下載到FPGA實驗板中進行實物驗證 第五章是結(jié)束語 主要分析本課題所取得的研究成果以及有待改進的不足之處 1 51 5 小節(jié)小節(jié) 本章首先介紹了此課題的研究背景和研究意義 然后闡述了與該課題相關(guān)的內(nèi)容 UART 芯片研究狀況 FPGA 特點 VHDL 語言 最后分析了該課題的研究方法和研究內(nèi)容 常熟理工學(xué)院畢業(yè)設(shè)計 論文 7 第二章 UART 理論基礎(chǔ) UART 是通用異步收發(fā)器的英文縮寫 它包括了 RS232 RS499 RS423 RS422 和 RS485 等接口標(biāo)準(zhǔn)規(guī)范和總線標(biāo)準(zhǔn)規(guī)范 即 UART 是異步串行通信口的總稱 而 RS232 RS499 RS423 RS422 和 RS485 等 是對應(yīng)各種異步串行通信口的接口標(biāo)準(zhǔn)和總 線標(biāo)準(zhǔn) 它規(guī)定了通信口的電氣特性 傳輸速率 連接特性和接口的機械特性等內(nèi)容 UART 是異步串行通信方式 通信的發(fā)送方和接收方各自有獨立的時鐘 傳輸?shù)乃俾视呻p 方約定 串行通信分為兩種類型 同步通信方式和異步通行方式 UART 是一種串行異步通信 方式 它是各種設(shè)備之間進行通信的關(guān)鍵模塊 允許在串行鏈路上進行全雙工的通信 在發(fā)送端 并行的數(shù)字信號需要轉(zhuǎn)化成串行信號才能通過有線或無線傳輸?shù)搅硗庖慌_設(shè) 備 而在接收端 串行信號必須要被恢復(fù)成并行信號才能進行數(shù)據(jù)處理 UART 就是用來 處理這種數(shù)據(jù)與串口之間的串并和并串轉(zhuǎn)換的 本章首先介紹 UART 的基本結(jié)構(gòu) 然后闡述一些有關(guān)串行通信的知識 在串行通信基 礎(chǔ)知識介紹中對同步通信也作了簡要介紹 2 12 1 UARTUART 原理原理 通用異步接收 發(fā)送器UART用于將并行數(shù)據(jù)轉(zhuǎn)換成串行形式 串行輸入時 又將串行 形式轉(zhuǎn)換成并行形式 圖2 1顯示UART基本結(jié)構(gòu) 它的組成包括 10 圖2 1 UART基本結(jié)構(gòu) 1 UART內(nèi)核 常熟理工學(xué)院畢業(yè)設(shè)計 論文 8 內(nèi)核模塊是UART設(shè)計的核心部分 內(nèi)部為控制邏輯 它接收來自微處理器或上層部件 的控制信號 執(zhí)行其所要求的操作 并輸出狀態(tài)信息和控制信號 在數(shù)據(jù)接收時 UART 內(nèi)核模塊負(fù)責(zé)控制波特率發(fā)生器和移位寄存器 控制移位寄存器在波特率時鐘的驅(qū)動下 同步接收同時保存RS 232接收端口上的串行數(shù)據(jù) 在數(shù)據(jù)發(fā)送時 UART內(nèi)核模塊首先根 據(jù)待發(fā)送數(shù)據(jù) 奇偶校驗位和停止位的設(shè)置產(chǎn)生完整的發(fā)送序列 包括起始位 數(shù)據(jù)位 奇偶校驗位和停止位 之后控制移位寄存器將發(fā)送序列加載到移位寄存器的內(nèi)部寄存器 里 最后控制波特率發(fā)生器驅(qū)動移位寄存器將數(shù)據(jù)串行輸出 2 信號監(jiān)測器 對串行輸入端 RXD 的輸入信號進行實時監(jiān)測 一旦發(fā)現(xiàn)新的數(shù)據(jù)信號監(jiān)測器立即發(fā) 送信號通知UART內(nèi)核 3 移位寄存器 移位寄存器用來存儲輸入或者輸出的數(shù)據(jù) 發(fā)送時 微處理器將待發(fā)數(shù)據(jù)送入發(fā)送數(shù) 據(jù)寄存器 然后對待發(fā)數(shù)據(jù)格式化 包括起始位 奇偶校驗位和停止位 將格式化后的 數(shù)據(jù)送到發(fā)送移位寄存器 然后按先前規(guī)定的波特率串行輸出 接收時 串行輸入設(shè)備 通過UART的串行輸入端口發(fā)送串行數(shù)據(jù)到UART的接收器 一旦串行輸入端口電位由高電 平變到低電平 接收器就認(rèn)為接收到起始位 并把后續(xù)的數(shù)據(jù)位依次移入接收移位寄存 器 當(dāng)接收一個完整數(shù)據(jù)后 就送往內(nèi)核的接收移位寄存器 并通知微處理器或上層部 件讀取接收到的數(shù)據(jù) 4 波特率發(fā)生器 UART的發(fā)送和接收是按照相同的波特率進行收發(fā)的 波特率發(fā)生器產(chǎn)生的時鐘頻率是 根據(jù)給定的的波特率算出的 5 奇偶校驗器 為了使傳送數(shù)據(jù)過程更可靠 在UART中設(shè)置了錯誤標(biāo)志 奇偶錯誤 在接收時 奇 偶校驗器檢查接收到的每一個字符碼中 l 的個數(shù) 若不符合要求 則發(fā)出奇偶校驗出 錯信息 發(fā)送時則根據(jù)待發(fā)送數(shù)據(jù)計算出奇偶校驗標(biāo)志 由內(nèi)核加載到發(fā)送數(shù)據(jù)中 6 總線選擇器 總線選擇模塊選擇奇偶校驗器的輸入是數(shù)據(jù)接收總線還是數(shù)據(jù)發(fā)送總線 7 計數(shù)器 計數(shù)器模塊的功能是在可控的輸入時鐘驅(qū)動下進行計數(shù) 當(dāng)達到計數(shù)上閾時給UART內(nèi) 核一個提示信號 常熟理工學(xué)院畢業(yè)設(shè)計 論文 9 2 22 2 串行通信基礎(chǔ)知識串行通信基礎(chǔ)知識 串行通信傳送的一組組的字符信息通常稱為信息幀 為了正確得到發(fā)送和接收這些數(shù) 據(jù)幀 就要求數(shù)據(jù)通信中實現(xiàn)同步通信 同步就是通信雙方協(xié)調(diào)發(fā)送和接收之間的動作 通信雙方必須對數(shù)據(jù)傳輸方式 同步控制方式 差錯處理 應(yīng)答方式和數(shù)據(jù)格式等問題 做出一組規(guī)定并共同遵守來實現(xiàn)同步 這種規(guī)定即為通信協(xié)議 串行通信分為異步通信 和同步通信兩種 相應(yīng)的串行通信協(xié)議中則分有異步通信協(xié)議和同步通信協(xié)議 2 2 1 串行通信工作方式 串行通信是把傳輸?shù)臄?shù)據(jù)一位一位地順序傳送的一種通信方式 在傳送一個字節(jié)數(shù)據(jù) 時 每次將數(shù)據(jù)依次發(fā)送至單根傳輸線上 或者反過來 從單根傳輸線上依次地接收數(shù) 據(jù) 然后組合成一個字節(jié)數(shù)據(jù) 因其需要的數(shù)據(jù)線少 傳送距離長 可靠性高而廣泛用 于外設(shè)與計算機之間的通信 如終端 打印機 磁盤等 但由于傳送數(shù)據(jù)格式繁瑣 速 度慢 效率低 實時性差 而無法應(yīng)用于高速實時數(shù)據(jù)通信 串行通信的有如下三種 11 1 單工方式 單工方式只允許數(shù)據(jù)按一個固定的方向傳送 采用這種方式時 就已經(jīng)確定了通信方 式中的一方為接收端 并且這種方式是不可改變的 2 半雙工方式 這種方式下的通信雙方A和B都具有接收和發(fā)送能力 但通信線只有一條 因此在特定 的時刻雙方只能有一個發(fā)送而另一個接收或一方接收 另一方發(fā)送 決不允許A和B同時 接收或同時發(fā)送 3 雙工方式 全雙工具有兩條獨立的通信線 一條專門用作發(fā)送 另一條為接收 這就克服了單工 或半雙工帶來的A和B雙方不能同時既發(fā)送又接收的缺點 因此 為保證實現(xiàn)全雙工通信 任務(wù) A和B雙方的串行接口必須具備一套完全獨立的發(fā)送器和接收器 2 2 2 串行異步通信 串行異步通信是計算機通信中最常用的數(shù)據(jù)信息傳輸方式 接收和發(fā)送雙方不使用共 同的參考時鐘 但要求發(fā)送的每一位數(shù)據(jù)都必須經(jīng)過事前格式化 發(fā)送時以字符為單位 在其前后分別加 起始位 和 停止位 用以指示每一數(shù)據(jù)的開始和結(jié)束來進行傳輸 字符之間沒有固定的時間間隔要求 而每個字符中的各位則以固定的時間傳送 由于要 給每一位數(shù)據(jù)位加起始位 停止位 故傳送效率不及同步通信高 但對接收與發(fā)送時鐘 常熟理工學(xué)院畢業(yè)設(shè)計 論文 10 的同步要求降低了 1 串行異步通信的數(shù)據(jù)格式 收發(fā)雙方取得同步的方法是在字符格式中設(shè)置起始位和停止位 在一個有效字符正式 發(fā)送前 發(fā)送器先發(fā)送一個起始位 然后發(fā)送有效字符位 在字符結(jié)束時再發(fā)送一個停 止位 起始位到停止位構(gòu)成一幀 故這種通信方式又稱為起止式異步通信方式 在一幀 信息傳送之前 傳輸線邏輯上處于1狀態(tài) 在傳送字符信息的時候 先發(fā)送起始位邏輯 O 緊隨其后發(fā)送5到8位的數(shù)據(jù)信息位 從低位到高位順序排列 就是說先傳低位后傳高 位 在字符的最高位之后是一個可選擇的奇偶校驗位 可以選擇奇校驗 偶校驗或無校 驗 在奇偶校驗位之后是標(biāo)志著一幀字符結(jié)束的停止位 這位必須是邏輯1 位數(shù)可以選 擇1位 1 5位或者2位 在傳送數(shù)據(jù)的時候 數(shù)據(jù)幀與幀之間如果有間隙的話 就在停止 位之后附加空閑位 用邏輯l來表示 當(dāng)沒有空閑位的時候 傳送數(shù)據(jù)的效率是最高的 異步串行通信的數(shù)據(jù)格式如圖2 2所示 12 圖2 2串行異步通信的數(shù)據(jù)幀格式 2 發(fā)送和接收時鐘 在UART通信協(xié)議中 發(fā)送模塊和接收模塊不使用共同的時鐘信號 所以稱作異步發(fā)送 和接收器 也就是在串行通信時發(fā)送 接受數(shù)據(jù)的兩個UART接口不會共用一個時鐘信號 13 兩者的時鐘頻率在一定的誤差范圍內(nèi)近似相等 為提高定位采樣的分辨能力和抗干擾能 力接收器采用比波特率更高頻率的時鐘進行采樣 這個頻率的倍數(shù)即為波特率因子 一 般取16 32和64 3 起 止位 起 止位作為聯(lián)絡(luò)信號 用于異步通信雙方的同步 當(dāng)起始位出現(xiàn)時 信號電平由高變 低 告訴接收方新的一幀已經(jīng)到達 后面接著是數(shù)據(jù)位 起始位用來表示一個數(shù)據(jù)幀傳 送的開始 停止位表示一個數(shù)據(jù)幀傳送的結(jié)束 這就為通信雙方提供了何時開始收發(fā) 何時結(jié)束的標(biāo)志 有了起 止位 傳輸數(shù)據(jù)時收發(fā)雙方對時鐘同步的要求就不需太高 發(fā) 送器和接收器可以使用不同的時鐘 即使收發(fā)雙方的時鐘頻率存在一定的偏差 但字符 間的停止位和空閑位為此提供了緩沖 這樣就不會因連續(xù)誤差的累積導(dǎo)致錯位 保證了 常熟理工學(xué)院畢業(yè)設(shè)計 論文 11 數(shù)據(jù)傳輸?shù)目煽窟M行 4 奇偶校驗 奇偶校驗是最簡單也最常用的校驗方法 它的基本原理是在傳輸?shù)挠行?shù)據(jù)中附加一 個檢驗位 利用這個校驗位 使得數(shù)據(jù)信息位 包括有效數(shù)據(jù)位和檢驗位 中1的個數(shù)為偶 數(shù)或者奇數(shù) 如果整個信息位1的個數(shù)為偶數(shù)的話稱為偶檢驗 為奇數(shù)的話則稱為為奇檢 驗 在接收端用專門的電路來檢查1的個數(shù)與事先的規(guī)定是否符合 若奇偶性發(fā)生了變化 則說明傳輸出現(xiàn)了錯誤 這種方法只能檢查傳輸數(shù)據(jù)幀的一位錯誤 兩位數(shù)據(jù)位以上的 錯誤就無法檢查出來 由于傳輸過程中最容易產(chǎn)生一位數(shù)據(jù)位的錯誤 加上奇偶校驗的 實現(xiàn)方法最簡單 所以實際應(yīng)用也最廣泛 2 2 3 串行同步通信 同步通信的基本特征是發(fā)送與接收時鐘始終保持嚴(yán)格的同步 傳送的信息流中每個二 進制位都需要時鐘同步 要讓接收設(shè)備能正確接收發(fā)送的數(shù)據(jù)位 就要進行同步 在串行同步通信中 接收雙方的同步方法可以分為內(nèi)同步和外同步 內(nèi)同步法就是接 收端從接收到的數(shù)據(jù)信息波形本身提取同步的方法 而外同步法是在發(fā)送數(shù)據(jù)之前向接 收器發(fā)送一串時鐘脈沖 接收端按這個時鐘頻率調(diào)整自己的時序 使接收時鐘頻率鎖定 在接收到的時鐘頻率上 并作為同步時鐘來接收數(shù)據(jù) 2 32 3 小節(jié)小節(jié) 本章著重介紹了 UART 的理論基礎(chǔ)包括 UART 芯片的基本結(jié)構(gòu)并對每塊作了詳細介紹 串行通信基礎(chǔ)知識如串行通信工作方式 串行異步通信和串行同步通信 本章是理解下 章的理論前提 常熟理工學(xué)院畢業(yè)設(shè)計 論文 12 第三章 UART 的設(shè)計實現(xiàn) UART Universal Asynchronous Receiver Transmitter 是計算機串行通信系統(tǒng)中廣 泛使用的接口 發(fā)送端將計算機處理完的數(shù)據(jù)進行并串轉(zhuǎn)換送給外圍設(shè)備 接收端將外 設(shè)傳送來的數(shù)據(jù)進行串并轉(zhuǎn)換送給計算機處理 下面就如何設(shè)計UART模塊進行重點分析 3 13 1 UARTUART 的設(shè)計分析的設(shè)計分析 3 1 1 UART 設(shè)計概述 UART通用異步收發(fā)器 是微機系統(tǒng)與外界串行設(shè)備進行數(shù)據(jù)通信的芯片 作為RS 232C數(shù)據(jù)終端設(shè)備接口 UART主要提供以下主要功能 將微機系統(tǒng)內(nèi)部傳送來的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)流輸出 將微機系統(tǒng)外設(shè)發(fā)送來的 串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù) 供微機系統(tǒng)內(nèi)部器件處理 在輸出串行數(shù)據(jù)流中加入奇偶校 驗位 啟停標(biāo)記 并對從外部接收的數(shù)據(jù)流進行奇偶校驗 刪除啟停標(biāo)記 本論文所設(shè)計的UART具有通用UART的基本功能 同時支持通用的異步串行通信協(xié)議 其基本功能如下 具有可編程串行接口特性 如字符數(shù)據(jù)位數(shù) 奇偶校驗?zāi)J?通信速率 具有全雙工的數(shù)據(jù)發(fā)送器 接收器 能夠?qū)€路狀態(tài)以及錯誤開始位的檢測 支持標(biāo)準(zhǔn)RS 232接口 接收通道發(fā)生奇偶校驗 最大傳輸速率為系統(tǒng)時鐘1 16 本UART使用16次采樣 即在每一個采樣時鐘脈沖的上升沿采樣接收數(shù)據(jù)線 將第8個 脈沖采樣到的數(shù)據(jù)送至接收模塊的移位寄存器 計到第16個脈沖的時候代表一位數(shù)據(jù)位 接收完畢 脈沖計數(shù)值清零 開始下一位數(shù)據(jù)位的采樣 發(fā)送時 采樣時鐘每計數(shù)到16 次 輸出一比特數(shù)據(jù) 同時計數(shù)值清零 開始下一位數(shù)據(jù)的傳送 3 1 2 UART 設(shè)計整體結(jié)構(gòu) 在了解 UART 的相關(guān)知識并結(jié)合 FPGA 的設(shè)計特點后 依據(jù) FPGA 的 TOP DOWN 設(shè)計方 法將 UART 的 FPGA 設(shè)計分為 4 個子模塊設(shè)計 頂層模塊設(shè)計 波特率發(fā)生模塊設(shè)計 接 收模塊設(shè)計 發(fā)送模塊設(shè)計 常熟理工學(xué)院畢業(yè)設(shè)計 論文 13 3 23 2 UARTUART 模塊模塊設(shè)計設(shè)計 3 2 1 頂層模塊設(shè)計 異步收發(fā)器的頂層模塊由波特率發(fā)生器 UART 接收器和 UART 發(fā)送器構(gòu)成 UART 發(fā) 送器的用途是將準(zhǔn)備輸出的并行數(shù)據(jù)按照基本 UART 幀格式轉(zhuǎn)為 TXD 信號串行輸出 UART 接收器接收 RXD 串行信號 并將其轉(zhuǎn)化為并行數(shù)據(jù) 波特率發(fā)生器就是專門產(chǎn)生一個遠 高于波特率的本地時鐘信號對輸入 RXD 不斷采樣 使接收器與發(fā)送器保持同步 將波特 率發(fā)生器 發(fā)送器和接收器簡單的組裝起來 就能較容易地實現(xiàn)通用異步收發(fā)器總模塊 頂層模塊 RTL 級圖和頂層模塊接口信號分別如圖 3 1 圖 3 2 所示 圖 3 1 頂層模塊的 RTL 圖 圖 3 2 頂層模塊接口信號 3 2 2 波特率發(fā)生模塊設(shè)計 波特率是單位時間內(nèi)傳送的二進制數(shù)據(jù)的位數(shù) 以位 秒 b s 表示 也稱為數(shù)據(jù)位 率 收 發(fā)時鐘頻率與波特率之間關(guān)系 收 發(fā)時鐘頻率 N 波特率 N 可以取 8 16 32 和 64 等 為了兼顧速度和穩(wěn)定性一般取為 16 N 在硬件設(shè)計時 已經(jīng)設(shè)定好 軟件不能改變 波特率發(fā)生器由兩個 8 位的數(shù)據(jù)寄存器組合成 16 位的分頻 寄存器 可以實現(xiàn)系統(tǒng)頻率的 1 2 16 分頻 達到預(yù)定的波特率設(shè)置 波特率發(fā)生器的功能是產(chǎn)生和 RS 232 通信所采用的波特率同步的時鐘 實現(xiàn)波特率 時鐘的基本思路就是設(shè)計一個計數(shù)器 該計數(shù)器工作在速度很高的系統(tǒng)時鐘下 當(dāng)計數(shù)到 某數(shù)值時將輸出置為高電平 再計數(shù)一定數(shù)值后將輸出置為低電平 如此反復(fù)就能得到所 需的波特率時鐘 由于內(nèi)部采樣時鐘 bclk 周期 由波特率發(fā)生器產(chǎn)生 是發(fā)送或接收波特 常熟理工學(xué)院畢業(yè)設(shè)計 論文 14 率時鐘頻率的 16 倍 例如 FPGA 的系統(tǒng)時鐘為 40MHz 通信波特率為 9600bps 則波特率時 鐘的每個周期約相當(dāng)于 260 個系統(tǒng)時鐘的周期 假如要得到占空比為 50 的波特率時鐘 只要使計數(shù)器在計數(shù)到 260 50 130 時將輸出置為高電 平 之后在計數(shù)到 260 時輸出低電平并重新計數(shù) 就能得到 和 9600 波特率同步的時鐘 波特率發(fā)生器接口信號如圖 3 3 所示 3 2 3 接收模塊設(shè)計 接收模塊是發(fā)送模塊功能的逆序執(zhí)行 它接收來自外部的串行數(shù)據(jù) 根據(jù)配置去除 數(shù)據(jù)的起始位 停止位和奇偶校驗位 若出現(xiàn)數(shù)據(jù)的奇偶校驗有差錯則立即產(chǎn)生錯誤信 息 如果沒有錯誤 則將剩余的 8 位有用數(shù)據(jù)送入 RBR Receive Buffer Register 接收 緩沖寄存器 再由 RBR 送給 CPU 串行數(shù)據(jù)幀和接收時鐘是異步的 發(fā)送來的數(shù)據(jù)由邏輯 1 變?yōu)檫壿?0 可以視為一個 數(shù)據(jù)幀的開始 接收器先要捕捉起始位 確定 RXD REC 輸入由 1 到 0 邏輯 0 要 8 個 bclk 時鐘周期 才是正常的起始位 然后在每隔 16 個 bclk 時鐘周期采樣接收數(shù)據(jù) 移 位輸入接收移位寄存器 rec buf 最后輸出數(shù)據(jù) 還要輸出一個數(shù)據(jù)接收標(biāo)志信號 rec ok 標(biāo)志數(shù)據(jù)接收完 UART 接收器接口信號如圖 3 4 所示 圖 3 4 接收模塊接口信號 由于串行數(shù)據(jù)幀和接收時鐘是異步的 由邏輯 1 轉(zhuǎn)為邏輯 0 可以被視為一個數(shù)據(jù)幀 的起始位 然而 為了避免信號干擾 得到正確的起始位信號 必須要求接收到的起始 位在波特率時鐘采樣的過程中至少有一半都是屬于邏輯 0 才可認(rèn)定接收到的是起始位 由于內(nèi)部采樣時鐘 bclk 周期 由波特率發(fā)生器產(chǎn)生 是發(fā)送或接收波特率時鐘頻率的 16 倍 所以起始位需要至少 8 個連續(xù) bclk 周期的邏輯 0 被接收到 才認(rèn)為起始位接收到 接著數(shù)據(jù)位和奇偶校驗位將每隔 16 個 bclk 周期被采樣一次 即每一個波特率時鐘被采樣 一次 如果起始位的確是 16 個 bclk 周期長 那么接下來的數(shù)據(jù)將在每個位的中點處被 采樣 UART 接收器的狀態(tài)機一共有 5 個狀態(tài) 圖 3 3 波特率模塊接口信號 常熟理工學(xué)院畢業(yè)設(shè)計 論文 15 1 等待起始位狀態(tài) REC START 當(dāng) UART 接收器復(fù)位后 接收狀態(tài)機將處于這一狀態(tài)下 此時 接受狀態(tài)機一直在等 待 RXD 的電平從邏輯 1 變?yōu)檫壿?0 的跳轉(zhuǎn) 一旦確定了產(chǎn)生電平跳變 狀態(tài)機將轉(zhuǎn)入 REC CENTER 狀態(tài) 在 REC CENTER 狀態(tài)中檢測是否為起始位 確定即意味著新的一 UART 數(shù)據(jù)幀的開始 RXD SYNC 信號是 RXD 的同步信號 因為在進行邏輯 1 或邏輯 0 判斷時 不希望檢測的信號是不穩(wěn)定的 所以不直接檢測 RXD 信號 而是檢測經(jīng)過同步后的 RXD SYNC 信號 2 確定起始位并求中點狀態(tài) REC CENTER 對于異步串行信號 為了使每次都能正確檢測數(shù)據(jù)位信號 且在后面的數(shù)據(jù)位檢測 時累計誤差較小 顯然在每位的中點檢測是最為理想的 本狀態(tài)就是通過對 bclk 的個數(shù) 進行計數(shù) REC CNT16 由起始位求出每位的中點 但計數(shù)值要考慮得當(dāng) 正確選擇 要考 慮經(jīng)過一個狀態(tài) 也即經(jīng)過了一個 bclk 周期 所希望得到的是在采樣時 1 2 位 8 個 bclk 周期 另外 在 REC START 狀態(tài)檢測到的起始位可能不是真正的起始位 可能是一 個偶然出現(xiàn)的干擾尖脈沖 負(fù)脈沖 但這種干擾脈沖的周期是很短的 所以可以認(rèn)為檢 測到的邏輯 0 保持時間超過 1 2 個位時間 8 個 bclk 周期 的信號一定是起始位 3 等待采樣狀態(tài) REC WAIT 當(dāng)狀態(tài)機處于這一狀態(tài) 等待計滿 15 個 bclk 在第 16 個 bclk 是進入 REC SAMPLE 狀態(tài)進行數(shù)據(jù)位的采樣檢測 同時也判斷數(shù)據(jù)位長度是否已達到數(shù)據(jù)幀的長度 FrameLen 如果計數(shù)已滿 就說明停止位來臨了 FrameLeng 是可更改的 使用了 Generic 在本設(shè) 計中默認(rèn)為 8 即對應(yīng)的 UART 工作在 8 位數(shù)據(jù)位 奇偶校驗任選 4 采樣數(shù)據(jù)狀態(tài) REC SAMPLE 即數(shù)據(jù)位采樣檢測 同時對已接受的數(shù)據(jù)求奇偶校驗 完成后無條件狀態(tài)機轉(zhuǎn)入 REC WAIT 狀態(tài) 等待下次數(shù)據(jù)位的到來 5 停止位和奇偶校驗接收狀態(tài) REC STOP 無論停止位是 1 位還是 1 5 位 或是 2 位 狀態(tài)機在 REC STOP 不具體檢測 RXD 在 無奇偶校驗時只是輸出幀接收完畢信號 rec ok 1 停止位后狀態(tài)機轉(zhuǎn)回到 REC START 狀態(tài) 等待下一個幀的起始位 在有奇偶校驗時判斷接收到的校驗位與求出的 校驗值是否相同 若相同則表明接受的數(shù)據(jù)正確 rec ok 出 1 error 輸出 0 不 相同表明接受的數(shù)據(jù)有錯誤 rec ok 輸出 0 error 輸出 1 狀態(tài)轉(zhuǎn)移如圖 3 4 所 示 狀態(tài)機部分實現(xiàn)代碼見附錄 接收模塊狀態(tài)機部分代碼 常熟理工學(xué)院畢業(yè)設(shè)計 論文 16 上述狀態(tài)定義如下 type states is rec start rec center rec wait rec sample rec stop 定義各子狀態(tài) signal state states rec start 圖 3 4 接收模塊狀態(tài)機 3 2 4 發(fā)送模塊設(shè)計 發(fā)送模塊的核心是狀態(tài)機 它可以讀入來自 THR Transmit Hold Register 發(fā)送保持 寄存器的數(shù)據(jù) 并根據(jù)配置寄存器里面的信息加入起始位 1 1 5 或 2 位停止位和奇偶 校驗位 然后把打包的數(shù)據(jù)通過移位寄存器把數(shù)據(jù)以標(biāo)準(zhǔn)的串口協(xié)議發(fā)送給串口接收設(shè) 備 數(shù)據(jù)的發(fā)送是由微處理器控制 微處理器給出 tansfer cmd 信號 發(fā)送器根據(jù)此信 號將并行數(shù)據(jù) txdbuf framleng 1 0 通過移位操作發(fā)送串行數(shù)據(jù)至串行數(shù)據(jù)輸出端 txd 在數(shù)據(jù)發(fā)送過程中用輸出信號 send over 作為標(biāo)志信號 當(dāng)數(shù)據(jù)移位串行發(fā)送完畢 時 send over 信號為 1 通知 CPU 在下個時鐘裝入新數(shù)據(jù) UART 發(fā)送器的接口信號如 圖 3 5 所示 圖 3 5 發(fā)送模塊器的接口信號 發(fā)送器只要每隔 l6 個 bclk 周期輸出 1 個數(shù)據(jù)即可 次序遵循第 1 位是起始位 第 8 位是停止位 在本設(shè)計中可選擇是否產(chǎn)生校驗位 改變 Generic 參數(shù) FrameLent 可以 改變數(shù)據(jù)長度 停止位是固定的 1 位格式 在發(fā)送時已計算出此數(shù)據(jù)的奇偶校驗值 發(fā)送狀態(tài)機一共有 5 個狀態(tài)如圖 3 6 所示 常熟理工學(xué)院畢業(yè)設(shè)計 論文 17 1 空閑狀態(tài) TRA IDLE 當(dāng) UART 被復(fù)位后 狀態(tài)機將立刻進入這一狀態(tài) UART 的發(fā)送器一直在等待數(shù)據(jù)幀發(fā) 送命令 TRANSFER CMD TRA CMD 信號是對 TRANSFER CMD 的處理 TRA CMD 是一個短脈沖 信號 當(dāng) TRA CMD 1 狀態(tài)機轉(zhuǎn)入 TRA START 準(zhǔn)備發(fā)送起始位 2 發(fā)送起始位狀態(tài) TRA START 在這個狀態(tài)下 UART 的發(fā)送器發(fā)送一個 bclk 周期時間寬度的邏輯 0 信號至 TXD 緊 接著狀態(tài)機轉(zhuǎn)入 TRA WAIT 狀態(tài) TRA CNT 是 bclk 的計數(shù)器 3 等待移位狀態(tài) TRA WAIT 當(dāng)狀態(tài)機處于這一狀態(tài) 先等待計滿 15 個 bclk 完成一個完整的起始位發(fā)送 在第 16 個 bclk 是進入 TRA SHIFT 狀態(tài)進行數(shù)據(jù)移位發(fā)送 同時也判斷數(shù)據(jù)位長度是否已達到 數(shù)據(jù)幀的長度 FrameLeng 如果計數(shù)已滿 就說明數(shù)據(jù)發(fā)送完畢 進入 TRA STOP 狀態(tài) 4 移位狀態(tài) TRA SHIFT 當(dāng)狀態(tài)機處于這一狀態(tài)時 實現(xiàn)待發(fā)數(shù)據(jù)的并串轉(zhuǎn)換并發(fā)送 TRA WAIT 轉(zhuǎn)換完成立 即回到 TRA WAIT 狀態(tài) 5 校驗 停止位狀態(tài) TRA STOP 當(dāng)數(shù)據(jù)幀發(fā)送完畢 狀態(tài)機轉(zhuǎn)入該狀態(tài) 此狀態(tài)下先判斷是否要發(fā)送奇偶校驗位 若需要則先發(fā)送校驗位后發(fā)送停止位 不需要直接發(fā)送 16 個 bclk 周期的邏輯 1 信號 即 1 位停止位 狀態(tài)機送完停止位后判斷 TRANSFER CMD 信號 為 1 回到 TRA IDLE 狀態(tài) 并等待另一個數(shù)據(jù)幀的發(fā)送命令 狀態(tài)機部分實現(xiàn)代碼見附錄 發(fā)送模塊狀態(tài)及部分代 碼 發(fā)送模塊狀態(tài)定義如下 type states is tra idle tra start tra wait tra shift tra stop

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論