freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文-基于fpga的uart設計說明書-展示頁

2024-11-28 18:45本頁面
  

【正文】 TxD端傳送給 FPGA 的 RxD端,最后由 LED 顯示出數(shù)據(jù)。 波特率發(fā)生器、接收器和發(fā)送器是 UART 的三個核心功能模塊。 第三章 課題詳 細設計與實現(xiàn) UART 的整體設計 一般 UART 通信通過兩條信號線完成數(shù)據(jù)的全雙工通信任務。 I/O 地址譯碼器和 UART 核使用硬件描述語言 VHDL 來編寫實現(xiàn)。 軟件設計 軟件采用 Altera 公司的 MAX+PLUSⅡ設計邏輯結(jié)構(gòu) ,設計的內(nèi)容包括通用 I/O 地址譯碼器、各個寄存器以及 UART 核。 UART 核主要包括 3 個部分 :波特率發(fā)生器、數(shù)據(jù)發(fā)送部分和數(shù)據(jù)接收部分。分析 UART 的結(jié)構(gòu),可以看出 UART 主要由數(shù)據(jù)總線接口、控制邏輯接口、波特率發(fā)生器、發(fā)送邏輯和結(jié)束邏輯等部分組成,各部分間的關(guān)系如圖 1 所示。兩設備用 RS232 相連的時候為收 —— 發(fā),發(fā) —— 收 ,地 —— 地。它的全名是“數(shù)據(jù)終端設備( DTE)和數(shù)據(jù)通訊設備( DCE)之間串 行二進制數(shù)據(jù)交換接口技術(shù)標準” (RS232C,其中 C 表示此標準修改了三次 ).標準中包括了電氣和機械方面的規(guī)定 .該標準規(guī)定采用一個 25 個腳的 DB25 連接器,對連接器的每個引腳的信號內(nèi)容加以規(guī)定,還對各種信號的電平加以規(guī)定 .后來隨著設備的不斷改進 ,成了目前大家普遍見到的 9 腳。一般為 9針的,也有 25 針的。 FPGA 采用了邏輯單元陣列 LCA( Logic Cell Array)這樣一個概念,內(nèi)部包括可配置邏輯模塊 CLB( Configurable Logic Block)、輸出輸入模塊 IOB( Input Output Block)和內(nèi)部連線( Interconnect)三個部分。 1 第一章 設計要求 一、設計一個全雙工 UART 電路,具體要求如下: 1) 支持數(shù)據(jù)格式:起始位( 1bit)+數(shù)據(jù)( 8bit)+奇偶校驗位( 1bit)+終止位( 1bit) 2) 奇 /偶校驗可配置 3) 可配置支持 115200 以下的常見波特率 4) 支持 115200 以下的波特率自適應,自適應過程如下: a. 復位后, UART 首先接收輸入,不斷自動調(diào)整波特率,直到以一定波特率正確連續(xù)接收到 3 個 bytes 的0x55 b. 接著 UART 以此波特率連續(xù)發(fā)送 3個 bytes 0xaa c. 之后兩端以此波特率進行通信 d. 波特率自適應只在電路復位后進行一次,如欲再次自適 應波特率應對電路再次復位 e. 波特率自適應過程中不能對 UART 的波特率作任何設置,自適應完成后可以對波特率作設置 5) 自動計算校驗位用于發(fā)送數(shù)據(jù);對接收到的校驗位和數(shù)據(jù)進行校驗,發(fā)現(xiàn)錯誤應設置錯誤標志,并丟棄數(shù)據(jù) 6) 對接收不正常數(shù)據(jù)(如無終止位、無校驗位、數(shù)據(jù)位數(shù)不正確等)應能自動識別并設置錯誤標志、丟棄 二、設計工具: 1)所有電路采用 VerilogHDL 或原理圖方法進行設計 2)在 QuartusII 下進行設計 3)綜合和仿真可以采用其他工具,如綜合可以采用 Synplify,仿真可以采用 ModelSim 4)目標器 件采用與實驗箱相同的器件 第二章 相關(guān)理論與技術(shù) UART 相關(guān)內(nèi)容簡介 復雜可編程邏輯器件 FPGA 簡介 FPGA( Field- Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在 PAL、 GAL、 CPLD 等可編程器件的基礎上進一步發(fā)展的產(chǎn)物。它是作為 專用集成電路 ( ASIC)領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了 原有可編程器件門電路數(shù)有限的缺點。 RS232 介紹 RS232 接口 ,就是普通電腦后面那個串口。是 1970 年由美國電子工業(yè)協(xié)會( EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計算機終端生產(chǎn)廠家共同制定 的用于串行通訊的標準。 在不使用傳輸控制信號的情況下 ,用 3根線就可以傳輸了, 9芯的是 2收 3發(fā) 5地, 25 芯的是 2發(fā) 3收7 地。 UART 處理的是并行數(shù)據(jù)轉(zhuǎn)為串行信號和串行數(shù)據(jù)轉(zhuǎn)為并行,但并不是簡單的轉(zhuǎn)換。 2 圖 1 UART 通信接口結(jié)構(gòu)圖 軟件設計 軟件采用 Altera 公司的 MAX+PLUSⅡ設計邏輯結(jié)構(gòu) ,設 計的內(nèi)容包括通用 I/O 地址譯碼器、各個寄存器以及 UART 核。 I/O 地址譯碼器和 UART 核使用硬件描述語言 VHDL 來編寫實現(xiàn)。 UART 核主要包括 3 個部分 :波特率發(fā)生器、數(shù)據(jù)發(fā)送部分和數(shù)據(jù)接收部分。 地。其中, TxD 是 UART 發(fā)送端,為輸出; RxD是 UART接收端,為輸入。我們所做的設計主要為數(shù)據(jù)接收模塊。 我們采用狀態(tài)機的方式來實現(xiàn)串口通訊功能,用一個接收狀態(tài)寄存器 state_rec 來表示當前狀態(tài)。如果低電平?jīng)]有保持兩個時隙,則重新回到空閑狀態(tài),state_rec=0。若在較復雜的環(huán)境下通訊,則可以考慮增加一個通訊失敗狀態(tài),若檢測到停止位為低電平,或者校驗位不滿足要求,則跳轉(zhuǎn)到失敗狀態(tài)。 UART允許在串行鏈路上進行全雙工通信,在數(shù)據(jù)通信及控制系統(tǒng)中得到了廣泛的應用。 UART的核心功能集成到 FPGA/CPLD內(nèi)部,就可以實現(xiàn)緊湊、穩(wěn)定且可靠的 UART 數(shù)據(jù)傳輸。 TxD 是 UART發(fā)送端,為輸出; RxD是 UART接收端,為輸入。例如,在發(fā)送器空閑時,數(shù)據(jù)線保持在邏輯高電平狀態(tài),發(fā)送器是通過發(fā)送起始位來開始一個數(shù)據(jù)幀的傳送,起始位使數(shù)據(jù)線處于邏輯 0狀態(tài),提示接收器數(shù)據(jù)傳輸即將開始 。然后發(fā)送校驗位 ,校驗 位一般用來判斷傳輸?shù)臄?shù)據(jù)位有無錯誤 ,一般是奇偶校驗。停止位在最后 ,用以標識數(shù)據(jù)傳送的結(jié)束 ,它對應于邏輯 1狀態(tài) 。這種格式是由起始位和停止位來實現(xiàn)字符的同步,如圖 1所示。 本文所介紹的 UART串行通訊模塊由 3個子模塊組成:波特率發(fā)生器、接收模塊和發(fā)送模塊,如圖 2所示。波特率發(fā)生器專門產(chǎn)生一個本地時鐘信號來控制 UART的接收與發(fā)送; UART接收模塊的用途是接收 RxD端的串行信號 ,并將其轉(zhuǎn)化為并行數(shù)據(jù); UART發(fā)送模塊的用途是將準備輸出的并行數(shù)據(jù)按照基本 UART幀格式轉(zhuǎn)為串行數(shù)據(jù)從 TxD 端串行輸出 。 波特率發(fā)生器實際上就是分頻器,可以根據(jù)給定的系統(tǒng)時鐘頻率 (晶振時鐘 ) 和要求的波特率算出波特率分頻因子 ,把算出的波特率分頻因子作為分頻器的分頻系數(shù)。故設要求的波特率因子為 M ,則 1042960010 ?? HZMHZM 。 波特率發(fā)生器模塊實現(xiàn)的源代碼 。 input CLK, reset。 //計數(shù)器 H,用來記錄輸入時鐘信號的跳變數(shù) reg num。 //輸出信號 always (posedge CLK or posedge reset) begin if ( reset) //復位信號到來 ,進行模塊初始化 begin H = 0。 End Else if (H = = 1041) / /當計數(shù)器計數(shù)值為 1041 時 ,計數(shù)器清 0,準備進行新一次的計數(shù) H = 0。 else //當計數(shù)器的值大于 521時 ,輸出為高電平 num = 1。 end end assign DIV_CLK = num。 波特率發(fā)生器模塊實現(xiàn)的仿真結(jié)果如圖 7所示 圖 6 波特率發(fā)生器模塊實現(xiàn)的流程 圖 7 現(xiàn)原理 UART通訊模塊是從 RxD端接收數(shù)據(jù)的, RxD端由邏輯 1跳變?yōu)檫壿?0可視為一個數(shù)據(jù)幀的開始,所以接收模塊首先要判斷起始位。當 RxD電平從邏輯 1變?yōu)檫壿?0,即當起始位到來,就意味著新的 UART數(shù)據(jù)幀的開始,一旦檢測到起始位,就從起始位的下一位開始對 UART通訊所要求的波特率時鐘 DIV _CLK的上升沿,每計一次數(shù)就對 RxD進行一次采樣 ,把每次采樣獲得的邏輯電平值按先后順序存入寄存器 Q中,也就是確保接收了所有的數(shù)據(jù)位, 8位串行數(shù)據(jù)也被轉(zhuǎn)換 為 8位并行數(shù)據(jù)。 接收模塊實現(xiàn)的流程如圖 8所示 。 input CLK_10MHz, N , reset。 //輸出的并行信號 reg [ 7: 0 ] P。 //計數(shù) 器 i,用來記錄接收到的數(shù)據(jù)位的數(shù)目 5 reg a。 //寄存器 k,用來判斷模塊是否完成數(shù)據(jù)接收 CNT CNT (CLK_10MHz, CLK_9600Hz, reset)。 a = 1。amp。 圖 8接收模塊的流程圖 if ( a = = 0) //如果接收控制寄存器 a表明可以接收數(shù)據(jù) ,則開始接收數(shù)據(jù) begin if ( i 8 amp。 k = = 1) //如果接收到的數(shù)據(jù)位小于 8位 ,則繼續(xù)進行接收 begin P [ i ] = N。 //接收一位數(shù)據(jù) ,則計數(shù)器加 1 end else //如果接收到的數(shù)據(jù)位大于 8位 ,則停止接收數(shù)據(jù) k = 0。 endmodule 。 圖 9 接收時的輸入信號為 N , 其輸入的位序列為 00110110001,此序列中已包含了起始位 0、校驗位 0和停止位 1。 3. 3 發(fā)送模塊的實 現(xiàn) 。即當 UART發(fā)送模塊被復位信號復位以后 ,發(fā)送模塊將立刻進入準備發(fā)送狀態(tài) ,在該狀態(tài)下讀 8位并行數(shù)據(jù)到寄存器 [7:0] NSend中 ,之后輸出邏輯 0作為起始位 ,從起始位的下一位開始對 UART串行通訊所要求的波特率時鐘 DIV_CLK的上升沿計數(shù) ,每計一次數(shù)從寄存器 [7:0] NSend中按照由低位到高位的順序取出一位數(shù)據(jù)送到 TxD 端 ,當計數(shù)為 8時 ,也就是確保 發(fā)送了所有的數(shù)據(jù)位 ,同時也將 8位并行數(shù)據(jù)轉(zhuǎn)換為 8位串行數(shù)據(jù)。 2. 發(fā)送模塊實現(xiàn)的流程 。 3. 發(fā)送模塊實現(xiàn)的源代碼 。 input [ 7: 0 ] NSend。 //復位信號 output QSend。 //寄存器 ack,用來判斷發(fā)送模塊是否已經(jīng)復位 reg startB it。 //計數(shù)器 iSend,用來記錄已經(jīng)發(fā)送的數(shù)據(jù)位的數(shù)目 reg tt。//寄存器 check,用來存放將要發(fā)送的數(shù)據(jù)校驗位 CNT CNT (CLK_10MHz, CLK_9600Hz, resetSend)。 startB it = 0。 startB it = 1。 check = 0。amp。 tt = N Send [ iSend ]。 //發(fā)送一位數(shù)據(jù) ,則計數(shù)器加 1 end Else 圖 10 發(fā)送模塊實現(xiàn)的流程圖 if ( iSend = = 8) //如果數(shù)據(jù)位發(fā)送完畢 ,則發(fā)送校驗位 begin tt = check。 end else 7 tt = 1。 endmodule 。 圖 11 準備發(fā)送的數(shù)據(jù)由高位到低位依次為 00110110,QSend為數(shù)據(jù)發(fā)送端 ,可以看到發(fā)送的串行位序列為00110110001,符合 UART幀格式的要求 。 在各模塊功能實現(xiàn)的基礎上 ,把它們有機地整合在一起,
點擊復制文檔內(nèi)容
畢業(yè)設計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1