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

正文內(nèi)容

畢業(yè)論文--基于fpga的串口通信電路設(shè)計(參考版)

2025-01-19 21:21本頁面
  

【正文】 圖 45 串口調(diào)試助手配置圖 調(diào)試結(jié)果 在串口調(diào)試助手 的發(fā)送數(shù)據(jù)框里用 PC 的鍵盤輸入字母“ a”,點擊手動發(fā)送按鈕,可以在串口調(diào)試助手的接收數(shù)據(jù)框里看到字母“ a”,如圖 46,同時也可以看到開發(fā)上的 8 個 LE。 基于 FPGA的串口通訊電路設(shè)計 34 配置串口調(diào)試軟件 根據(jù) PC 的串口調(diào)試助手工具的設(shè)置,決定代碼是否需要奇偶校驗位,以及分頻系數(shù)。單擊 Quartus II 軟件的 Programmer將編輯好的程序下載到 FPGA 芯片中。 圖 42 FPGA 與 PC 通信模塊連接原理圖 基于 FPGA的串口通訊電路設(shè)計 33 圖 43 設(shè)置 文件 單擊 Quartus II 軟件的 Pin Planner 按鈕彈出管腳分配窗口,進行管腳分配,參考 FPGA 開發(fā)板提供的芯片管腳資料進行分配,本次設(shè)計的實驗分配管腳圖如圖 44 所示。將原理圖存儲為 文件。 還要求用 PC 發(fā)送數(shù)據(jù)的 ASCII 碼來驅(qū)動電路板的 8 個 LED 燈,通過檢測 LED 燈的亮滅來判斷發(fā)送數(shù)據(jù)的 ASCII 碼是否正確,并觀察串口調(diào)試助手上基于 FPGA的串口通訊電路設(shè)計 32 接收到的數(shù)據(jù)與發(fā)送 的數(shù)據(jù)是否一致。 圖 41 本設(shè)計用到的 FPGA 開發(fā) 板 板級調(diào)試說明 板級調(diào)試場景由 PC 主機和基于 ALTERA 公司的 Cyclone II EP2C5T144 芯片的 FPGA 開發(fā)板, PC 和 FPGA 開發(fā)板通過 DB9 串口連接線連接,并接好下載線 [19]。本章主要介紹第 3 章的程序基于 ALTERA 公司的 Cyclone II EP2C5T144 芯片的 FPGA 開發(fā)板上的調(diào)試方法、步驟以及結(jié)果。通過本章的模塊原理和代碼實現(xiàn)以及分模塊的仿真,驗證各個模塊的功能是否實現(xiàn),本章是本設(shè)計的最重要部分, 需要對 Verilog HDL 語言有深入學(xué)習(xí)才能夠完成各個模塊的功能,通過本章加深了對串口通信的理解以及 Verilog HDL 語言的代碼編寫能力。 本章小結(jié) 本章是本設(shè)計的核心,通過前面幾章對串口通信協(xié)議基礎(chǔ)的了解,本章給出了具體的設(shè)計思路和方法,本設(shè)計采用分模塊設(shè)計思想,主要由波特率發(fā)生器、接收模塊和發(fā)送模塊這 3 個模塊組成,強調(diào)功能劃分明確,便于系統(tǒng)設(shè)計和調(diào)試。新建波形仿真文件,加入輸入輸出信號,設(shè)置系統(tǒng)時鐘信號 clk 的周期為 20ns,保存波形文件為,單擊 按鈕進行數(shù)據(jù)接收的波形仿真,波形仿真圖形如圖 36 所示。 圖 35 接收模塊連接圖 保存原理圖為 。新建一個原理圖文件,在原理圖空白處雙節(jié),在彈出的 Symbol 對畫框中選擇 Project –uartrx 模塊和 uart 模塊,單擊 OK 按鈕退出 Symbol 對話框。b0。b0。d0。d1。d175: begin t = 0。b1。d1。b0。 end 839。 rdsig = 139。 t = t + 839。b1。 end 839。 rdsig = 139。 t = t + 839。 else // 如果沒有接收到停止位,表示幀出錯 frameerror = 139。b1 == rx) frameerror = 139。b1。 end 839。 rdsig = 139。 t = t + 839。 else // 如果奇偶校驗位不對,表示數(shù)據(jù)出錯 基于 FPGA的串口通訊電路設(shè)計 28 dataerror = 139。 if(presult == rx) dataerror = 139。d152: begin idle = 139。b0。d1。 presult = presult^rx。b1。 end // 接收第 7 位數(shù)據(jù) 839。 rdsig = 139。 t = t + 839。 datatemp [6] = rx。d120: begin idle = 139。b0。d1。 presult = presult^rx。b1。 end // 接收第 5 位數(shù)據(jù) 839。 rdsig = 139。 t = t + 839。 datatemp [4] = rx。d88: begin idle = 139。b0。d1。 presult = presult^rx。b1。 end // 接收第 3 位數(shù)據(jù) 839。 rdsig = 139。 t = t + 839。 datatemp [2] = rx。d56: begin idle = 139。b0。d1。 presult = presult^rx。b1。 end // 接收第 1 位數(shù)據(jù) 839。 rdsig = 139。 t = t + 839。 datatemp [0] = rx。d24: begin idle = 139。b0。d1。b1。b1) 基于 FPGA的串口通訊電路設(shè)計 26 begin case (t) 839。b0。 end // 數(shù)據(jù)接收完成 else if(t == 839。 (~idle)) begin receive = 139。 end always (posedge clk) begin // 檢測到線路的下降沿并且原先線路為空閑,啟動接收數(shù)據(jù)進程 if (rxfall amp。 rxfall = rxbuf amp。 reg presult, idle。 parameter paritymode = 139。 reg [7:0] t。 reg rdsig, dataerror。 reg[7:0] dataout。 // 資料出錯指示 output dataerror。 // 接收數(shù)據(jù)輸出 output dataout。 // 采樣時鐘 input clk。 UART 接收模塊的 Verilog HDL 語言的代碼如下所列,代碼即附錄 3 中 文件。在接收系統(tǒng)中,起始狀態(tài)和數(shù)據(jù)都需要依靠接收端檢測得到,為了避免毛刺影響,能夠得到正確的起始信號和有效數(shù)據(jù),需要完成一個簡單的最大似然判決,其方法如下:由于 bclk 信號的頻率為 115200Hz 的 16 倍,則對于每個數(shù)據(jù)都會有 16 個樣值,最終的采樣比特值為出現(xiàn)次數(shù)超過 8 次的電平邏輯值 [17]。 圖 34 串口發(fā)送模塊的波形仿真圖 對圖 34 分析看出,當(dāng)發(fā)送命令 wrsig 的上升沿有效時,啟動發(fā)送數(shù)據(jù),串行數(shù)據(jù)的波形與發(fā)送數(shù)據(jù) dataout 相一致, UART 的發(fā)送模塊的功能得到正確驗證。編譯工程文件,編譯無誤后單擊 Processing – Generate Functional Simulation Netlist,產(chǎn)生功能仿真網(wǎng)表。在原理圖的適當(dāng)位置放置 testuart 模塊和 uart 模塊,并添加輸入輸出模塊,如圖33 所示,保存原理圖為 。 end end endmodule 在 Quartus II 軟件當(dāng)前工程窗口打開 文件,單擊 File — Create/Update — Create Symbol Files for Current File 命令,為 文件生成原理圖模塊。 t = t + 839。 end else begin wrsig = 139。 t = 839。 // 產(chǎn)生發(fā)送命令 基于 FPGA的串口通訊電路設(shè)計 23 wrsig = 139。 always (posedge clk) begin if(t == 254) begin // 每次數(shù)據(jù)加 1 dataout = dataout + 839。 reg wrsig。 output wrsig。 input clk。為了測試 UART 發(fā)送模塊的正確性,需要編寫一個測試模塊來測試 UART 發(fā)送模塊, 代碼如下所列,即附錄 2 中 文件。b0。d0。b1。d1。 基于 FPGA的串口通訊電路設(shè)計 22 t = 0。 idle = 139。d175: begin tx = 139。d1。b0。b1。 end // 一幀資料發(fā)送結(jié)束 839。 t = t + 839。 idle = 139。d160: begin tx = 139。d1。b1。 presult = datain[0]^paritymode。 end // 發(fā)送奇偶校驗位 839。 t = t + 839。 idle = 139。d128: begin tx = datain[7]。d1。b1。 presult = datain[6]^presult。 end // 發(fā)送第 6 位數(shù)據(jù) 839。 基于 FPGA的串口通訊電路設(shè)計 21 t = t + 839。 idle = 139。d96: begin tx = datain[5]。d1。b1。 presult = datain[4]^presult。 end // 發(fā)送第 4 位數(shù)據(jù) 839。 t = t + 839。 idle = 139。d64: begin tx = datain[3]。d1。b1。 presult = datain[2]^presult。 end // 發(fā)送第 2 位數(shù)據(jù) 839。 t = t + 839。 idle = 139。d32: begin tx = datain[1]。d1。b1。 presult = datain[0]^paritymode。 end // 發(fā)送第 0 位數(shù)據(jù) 839。 t = t + 839。 idle = 139。d0: begin tx = 139。 end end always (posedge clk) begin if(send == 139。d175) begin send = 139。b1。amp。 wrsig。 // 檢測發(fā)送命令是否有效 always (posedge clk) begin wrsigbuf = wrsig。 parameter paritymode = 139。 reg presult。 基于 FPGA的串口通訊電路設(shè)計 19 reg send。 // 發(fā)送數(shù)據(jù)信號 output tx。 // 發(fā)送命令,上升沿有效 input wrsig。 // UART 時鐘 input clk。 本設(shè)計中的發(fā)送模塊的代碼如下所列,代碼即附錄 2 中 文件。 發(fā)送模塊的 Verilog HDL 實現(xiàn) UART 發(fā)送模塊的功能:接收到發(fā)送指令后,把數(shù)據(jù)按 UART 協(xié)議輸出,先輸出一個低電平的起始位,然后從低到高輸出 8 個數(shù)據(jù)位,接著是可選的奇偶校驗位,最后是高電平的停止位 [16]。 基于 FPGA的串口通訊電路設(shè)計 18 圖 32 波特率發(fā)生器的仿真圖形 由波形仿真圖形可以看出,輸入的時鐘周期為 20ns,即 50MHz。 圖 31 波特率發(fā)生器的原理圖 編譯工程文件,編譯無誤后單擊 Processing – Generate Functional Simulation Netlist,產(chǎn)生功能仿真網(wǎng)表。新建一個原理圖文件,在原理圖空白處雙節(jié),在彈出的 Symbol 對畫框中選擇 Project –clkdiv 模塊,單擊 OK 按鈕退出 Symbol 對話框。d1。d0。b0。 end else if(t == 1639。 t = t + 1639。d12) begin clkout = 139。 reg [15:0] t。 // 采樣時鐘輸出 output clkout。 module clkdiv(clk, clkout)。 在本設(shè)計中,系統(tǒng)的時鐘為 50MHz ,取 N 為 16,則分頻系數(shù)為50000000/(16*115200)=,取整為 27。 波特率發(fā)生器模塊的 Verilog HDL 實現(xiàn) 波特率發(fā)生器實際上是一個分頻器,從給定的系統(tǒng)時鐘頻率得到要求的波特率。開發(fā)板上接收到數(shù)據(jù)后將數(shù)據(jù)
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1