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

正文內(nèi)容

基于fpga的遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)畢業(yè)論文有程序-資料下載頁

2025-08-19 19:21本頁面

【導(dǎo)讀】到利用遠(yuǎn)程監(jiān)控系統(tǒng)來進(jìn)行工業(yè)設(shè)備的遠(yuǎn)程監(jiān)控,不僅可以避免在危險(xiǎn)的環(huán)境下工作,適當(dāng)利用的話更能實(shí)現(xiàn)一個(gè)人監(jiān)控多個(gè)現(xiàn)場的工作狀況以提高工作效率。特定界面上,并且可以通過特定PC界面發(fā)送控制信號(hào),控制直流電機(jī)的啟停,速率。的生成模塊中實(shí)現(xiàn)對(duì)電機(jī)供電控制,從而控制電機(jī)轉(zhuǎn)速。采集的轉(zhuǎn)速顯示,我們可以根據(jù)自己想要的轉(zhuǎn)速發(fā)送相應(yīng)的代碼來實(shí)現(xiàn)。制,由此證明我們此次的方案可行有效,可應(yīng)用到一定的工業(yè)設(shè)備上進(jìn)行遠(yuǎn)程控制。

  

【正文】 發(fā)送器主要的用途是將準(zhǔn)備輸出的并行數(shù)據(jù)按照基本的串行幀格式轉(zhuǎn)換位串行數(shù)據(jù)。 串行信號(hào)接收器接收 RXD 串行信號(hào)將其轉(zhuǎn)換為并行信號(hào)數(shù)據(jù)。波特率發(fā)生器就是專門產(chǎn)生一個(gè)遠(yuǎn)遠(yuǎn)高于波特率的本 地時(shí)鐘信號(hào)對(duì)輸入 RXD 不斷平樣,使接收器與發(fā)送器保持同步。 ( 1)波特率發(fā)生模塊 波特率發(fā)生模塊是為了提供符合傳輸波特率的時(shí)鐘信號(hào),兩個(gè)輸入端一個(gè)輸出端,一個(gè) 50Mhz 的時(shí)鐘 clk 輸入,一個(gè)復(fù)位高電平復(fù)位信號(hào)輸入, bclk 則是波特率時(shí)鐘信號(hào)。 ( 2)串口接收模塊 串行接收模塊是將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)的一個(gè)模塊, bclkr 為波特率時(shí)鐘信號(hào)輸 18 入信號(hào), resetr 為復(fù)位信號(hào), rxdr 則為串行數(shù)據(jù)輸入,我們將 rxdr 加載進(jìn)來的數(shù)據(jù)進(jìn)行并行輸出在 rbuf 輸出端。 ( 3)串口發(fā)送模塊 這里出現(xiàn)了和接收模塊 不一樣的地方是輸入是個(gè)八位的總線數(shù)據(jù)輸入,輸出卻是串 行數(shù)據(jù),另一點(diǎn)不一樣的是多了一個(gè) xmi_cmd_p,這個(gè)信號(hào)其實(shí)是一個(gè)始終控制信號(hào),用來控制何時(shí)開始發(fā)送,何時(shí)結(jié)束進(jìn)行下一次的發(fā)送 ( 4)發(fā)送控制模塊 結(jié)合數(shù)據(jù)發(fā)送的波特率及為了實(shí)現(xiàn)發(fā)送兩個(gè)字節(jié)的目的我們采用了 發(fā)送控制也 及將 50Mhz 的時(shí)鐘進(jìn)行 10000000 分頻。 VB 電機(jī)控制界面編程 本次為了方便對(duì)電機(jī)進(jìn)行控制與數(shù)據(jù)接收,我們使用了 中的 MSComm control 控件用來作為此次的核心控件如圖 34 是我們編 制的界面,用到的控件除了 MSComm control 外還有 Label, TextBox, CommandButton 控件。 Label 控件用于窗體或者其它容器中顯示文本。 TextBox 用來在運(yùn)行時(shí)候顯示用戶輸入的信息,或者在設(shè)計(jì)或者運(yùn)行時(shí)通過對(duì)控件的 Text 屬性賦值,作為信息輸出的對(duì)象。 CommandButton 主要用于設(shè)計(jì)用戶和應(yīng)用程序的交換式訪問。 19 圖 34 本章總結(jié) 本章我們主要對(duì)遠(yuǎn)程監(jiān)控系統(tǒng)進(jìn)行了總體跟細(xì)致的概括,從總體上我們闡述了如何去貫穿方案讓整個(gè)方案行之有效,通過合理的分析與推測我 們得出結(jié)論我們的方案是可行的,可以付諸于行動(dòng)的。從細(xì)節(jié)上我們對(duì)各個(gè)模塊所要實(shí)現(xiàn)的功能及連接管教進(jìn)行了初步的預(yù)設(shè)從而更進(jìn)一步的促成了整個(gè)方案的連貫。 4.具體實(shí)施與驗(yàn)證 Quartus II 功能仿真驗(yàn)證 我們用 vhdl 語言編寫的代碼是否符合我們所想要的功能,我們就要借助于 Quartus II仿真功能區(qū)實(shí)現(xiàn),對(duì)于特殊的驗(yàn)證我們將在遇到的時(shí)候我們將細(xì)細(xì)的介紹到。 當(dāng)我們的工程編譯通過后,必須對(duì)整個(gè)項(xiàng)目進(jìn)行全面徹底的測試驗(yàn)證,也即仿真,來確保項(xiàng)目的功能性跟時(shí)序性,針對(duì)本次的實(shí)驗(yàn)我們只是針對(duì)功能性進(jìn)行驗(yàn)證。 在仿真操作之前我們必須建立一個(gè)矢量波形文件( .vwf)作為仿真激勵(lì)。 Vwf 文件將仿真輸入矢量和仿真輸出描述成為一波形的圖形來實(shí)現(xiàn)仿真,但是也可以將仿真激勵(lì)矢量用文本表達(dá),即文本方式的矢量文件。 Vwf 文件方式的仿真流程的詳細(xì)步驟如下: ( 1)打開波形編輯器 在“文件”菜單下選擇“ New”,選中“ other files”標(biāo)簽頁,在彈出的窗口點(diǎn)擊“ Vector Waveform File”點(diǎn)擊“ OK” 打開波形編輯器。 20 ( 2)設(shè)置仿真時(shí)間 這是為了使仿真時(shí)間更合理,才設(shè)置的仿真時(shí)間區(qū)域,在 Edit 菜單中選擇 End Time選項(xiàng),在彈出的對(duì)話框中輸入時(shí)間范圍點(diǎn)擊“ OK”結(jié)束設(shè)置。 ( 3)輸入信號(hào)節(jié)點(diǎn) 在波形編輯窗口左側(cè)欄內(nèi)單擊鼠標(biāo)右鍵,出現(xiàn)浮動(dòng)菜單,選擇“ Insert Note or Bus?”出現(xiàn)“ Insert Note or Bus?”對(duì)話框,點(diǎn)擊“ Node Finder?”按鍵,出現(xiàn)“ Node Finder”對(duì)話框在圖中“ Filter:”選項(xiàng)下選擇管腳類型為“ Pins: all”,然后單擊 List 按鈕,可在左下側(cè)區(qū)域看到設(shè)計(jì)項(xiàng)目中的輸入輸出信號(hào),單擊按鈕“ = 〉”,將這些信號(hào)選擇到“ Selected Nodes”區(qū),表示對(duì)這些信號(hào)進(jìn)行觀測,單擊 OK ,完成信號(hào)的選擇。 ( 4)編輯輸入波形 選中你將要編輯的波形進(jìn)行單擊,使它變?yōu)樗{(lán)色,用設(shè)置時(shí)鐘的方式設(shè)置它,再單擊左側(cè)的時(shí)鐘設(shè)置鍵,在 clock 窗口中設(shè)置信號(hào)周期占空比等。也可以按住鼠標(biāo)左鍵在波形編輯區(qū)拖動(dòng)選擇某一段波形直接將其設(shè)置為 0或者 1。 ( 5)仿真器參數(shù)設(shè)定 選擇 Assignment 下拉菜單中 Settings 選項(xiàng),選擇 Settings 對(duì)話框中的CategorylSimulator 命令,在此項(xiàng)下可以觀察仿真總體設(shè)置情況;在 Simulation 欄 中確認(rèn)仿真模式為功能仿真; ( 6)啟動(dòng)仿真器 在 processing 下拉菜單中直接選擇 Start Simulation 選擇,直到出現(xiàn)仿真成功窗口出現(xiàn)。 ( 7)觀察仿真結(jié)果 放真波形文件通常會(huì)自動(dòng)彈出,在 Quartus II 中,波形編輯文件( *.vwf)與波形仿真報(bào)告是分開的。如果在啟動(dòng)仿真后,沒有出現(xiàn)仿真完成后的波形圖,而是出現(xiàn)文字“ Can’ t open Simulation Report Window ” 但 報(bào) 告 仿 真 成 功 , 則 可 以 通 過Processing1Simulation Report 自己打開仿真波 形。 模塊化仿真驗(yàn)證 十進(jìn)制計(jì)數(shù)器 從仿真圖我們可以看出隨著時(shí)鐘的個(gè)數(shù)的增加 CQ 輸出也在增加,當(dāng)達(dá)到十個(gè)脈沖后進(jìn)行復(fù)位從 0 開始輸出,重新計(jì)數(shù)。 21 鋸齒波發(fā)生器 從仿真圖中我們可以很明顯的看出, speed 是從 0 加到 254 再回到 0 繼續(xù)循環(huán),從而實(shí)現(xiàn)了鋸齒波的遞增功能。 比較器 從圖中的可以很明顯的看出 a的 ASCII 碼大于 G 的,輸出低電平, I 的大于 r 的,所以滿足我們的 A大于 B 輸出低電平其他輸出高電平的功能。 22 電機(jī)使能控制仿真 我們可以從圖中發(fā)現(xiàn)小于 6個(gè)時(shí)鐘輸入之前 clr 為 0, ena 為 1, load 為 0;當(dāng)在第6個(gè)時(shí)鐘時(shí)期 clr 為 0, ena 為 0, load 為 1;當(dāng)為 7 的時(shí)候 ena 為 0, load 為 0, clr 為1,正好滿足我們要設(shè)計(jì)的功能。 電機(jī)數(shù)碼管顯示仿真( dispiay 單元) 首先我們從 SEL 的功能開始分析這個(gè)仿真文件, SEL是要從 0到 7的循環(huán)掃描的,表格中完美的體現(xiàn)了, in2 與 in1 組合成高八位, in0 與 0000 組合成第八位進(jìn)行數(shù)碼管動(dòng)態(tài)顯示,通過分析組成的 16 位數(shù)為“ 0010 0000 1000 0000”,每四位分別對(duì)應(yīng)一個(gè) lou7值 從左到右依次輸出是 101101 011111 111111 0111111,圖中完全對(duì)應(yīng),功能仿真成功。 分頻模塊仿真( fenpin1) 在這里由于我們?cè)谠囼?yàn)中我們都采用的是一種設(shè)計(jì)思路設(shè)計(jì)的分頻,所以在這里我們就采取一個(gè)模塊進(jìn)行仿真驗(yàn)證,只對(duì)我們的思路進(jìn)行驗(yàn)證,接下來的類似的分頻模塊將不予在報(bào)告中進(jìn)行仿真分析說明。 23 從圖中我們可以看見整個(gè) 25 個(gè)脈沖都使得輸出為高電平,后面的 25 個(gè)脈沖輸出的是低電平,那么我們就可以得知這是 50 分頻,滿足我們的設(shè)計(jì)需求。 串口通信的調(diào)試 在這里我 們?nèi)绾螌?duì)串口通信這塊進(jìn)行實(shí)時(shí)有效的驗(yàn)證與仿真,這個(gè)成了我們一個(gè)問題,經(jīng)過考慮我們決定將并行接收到的數(shù)據(jù)輸入到一個(gè)數(shù)碼管譯碼模塊( decoder_8)來分別對(duì)應(yīng)器顯示的數(shù)據(jù),其模塊仿真圖如 41所示,將串行發(fā)送的數(shù)據(jù)通過 RS232 電路輸入到 PC 端,用串口調(diào)試助手進(jìn)行初始的調(diào)試。通過串口調(diào)試助手我們可以將今收到的數(shù)據(jù)進(jìn)行 16進(jìn)制顯示,給予一個(gè)固定的并行輸入,看是否在串口調(diào)試端顯示正確的數(shù)字。 圖 41 通過圖我們可以看到輸入為十六進(jìn)制的 a,從我們的程序原理觸發(fā)我們要輸出則應(yīng)該是 10011000,仿真完全 符合程序設(shè)計(jì)。 在這個(gè)態(tài)勢(shì)仿真的中間我們多次出現(xiàn)莫名其妙的問題,例如同樣的程序但是出的結(jié)果就是不一樣,經(jīng)分析我們發(fā)現(xiàn),我們沒有注意到模塊變量聲明跟模塊變量聲明是有優(yōu)先級(jí)的,盡管程序中的聲明相同但是若模塊上的聲明發(fā)生變化,那么結(jié)果將會(huì)產(chǎn)生差異。 在調(diào)試串口這個(gè)單元的時(shí)候我們首先遇到的問題是沒有將其中的狀態(tài)轉(zhuǎn)換搞清楚,為了更好的理解清楚的看到其中狀態(tài)的改變,我們調(diào)出發(fā)送跟接收模塊的狀態(tài)轉(zhuǎn)換圖如圖 4圖 43所示。圖 42當(dāng)遇到復(fù)位信號(hào)的時(shí)候狀態(tài)機(jī)立刻進(jìn)入 x_idle 狀態(tài),在這個(gè)狀態(tài)下串口發(fā)送器一直在等待數(shù)據(jù) 發(fā)送命令 xmit_cmd_p。此時(shí)如果 xmit_cmd_p 在串口 24 發(fā)送完成一個(gè)數(shù)據(jù)幀之后仍然有效那么就會(huì)錯(cuò)誤的被認(rèn)為一個(gè)新的數(shù)據(jù)發(fā)送命令又來了,顯然該幀的發(fā)送時(shí)錯(cuò)誤的。那么我們要求 xmit_cmd_p 這個(gè)脈沖為短脈沖,當(dāng)xmit_cmd_p 為 1時(shí)狀態(tài)轉(zhuǎn)為開始狀態(tài),準(zhǔn)備發(fā)送起始位,當(dāng)進(jìn)入 x_start 則發(fā)送一個(gè)位時(shí)間寬度的邏輯 0 信號(hào)至 TXD,即起始位,緊接著狀態(tài)機(jī)進(jìn)入 x_wait 狀態(tài), xt16 是 bclk的計(jì)數(shù)器,當(dāng)達(dá)到 16 個(gè) bclk 時(shí)鐘周期則整個(gè)起始位讀取完成,進(jìn)入 x_shift 狀態(tài),在進(jìn)入到 x_wait 狀 態(tài),兩狀態(tài)之間每經(jīng)過 16 個(gè) xt16 時(shí)鐘周期進(jìn)行狀態(tài)跳變,直到 8 位數(shù)據(jù)位被讀取完成最后跳轉(zhuǎn)到停止位進(jìn)入 x_stop狀態(tài)掃描 16個(gè) bclk周期最后返回到空閑狀態(tài)。完成一次幀的發(fā)送。 從圖 43 我們可以分析接收轉(zhuǎn)臺(tái)跳變,當(dāng)接收到復(fù)位信號(hào)狀態(tài)機(jī)處于開始狀態(tài)x_start,狀態(tài)機(jī)一直在等待 RXD 的電平從 1到 0的跳變,也即起始位,一旦起始位被確定狀態(tài)機(jī)轉(zhuǎn)到 R_center 狀態(tài),在程序中我們?cè)O(shè)定了一個(gè) rxd_sync 信號(hào)作為 rxd 的同步信號(hào),為了是檢測信號(hào)的穩(wěn)定性。在 r_center 狀態(tài)下對(duì)起始位進(jìn)行 16 個(gè)時(shí)鐘周期的 檢測之后跳轉(zhuǎn)到 x_wait 狀態(tài),等待計(jì)數(shù)滿 16 個(gè) bclk 進(jìn)入 r_sample 進(jìn)行數(shù)據(jù)的采樣檢測,同時(shí)判斷數(shù)據(jù)位的長度是否已經(jīng)達(dá)到幀長度,當(dāng)?shù)絹韯t說明停止位來臨,數(shù)據(jù)幀長度( FRAMELEN)是可以更改的,在本研究課題中我們默認(rèn)是 8,也即數(shù)據(jù)位是 8 位。沒有校驗(yàn)位。當(dāng)完成數(shù)據(jù)的采樣檢測,完成后狀態(tài)無條件的進(jìn)入 R_wait 狀態(tài),等待下次數(shù)據(jù)的到來,當(dāng)狀態(tài)處于 x_stop 狀態(tài)的時(shí)候無論停止位是 1, 或者 2位,狀態(tài)機(jī)都不會(huì)具體檢查 RXD,只是輸出幀接收完畢信號(hào)( rec_)給 1而已,停止位后轉(zhuǎn)太機(jī)轉(zhuǎn)回到 R_start狀態(tài),等待下一幀的起始位。 圖 42(發(fā)送模塊) 25 圖 43(接收模塊) 在我們研究好久之后我才發(fā)現(xiàn)其中的一個(gè)數(shù)據(jù)位沒有掃描到這其中的原因就出在,狀態(tài)之間的轉(zhuǎn)換沒有銜接好,我總結(jié)出在調(diào)試串口模塊的時(shí)候要結(jié)合串口調(diào)試助手跟狀態(tài)轉(zhuǎn)換圖,將每一位的數(shù)據(jù)是如何傳遞的要搞清楚不然實(shí)驗(yàn)將無法繼續(xù)進(jìn)行,耗時(shí)耗力。 再有一個(gè)比較常見的串口問題在此次的課題驗(yàn)證中我們也遇到了,那就是波特率不準(zhǔn)確的問題,那么在此次的試驗(yàn)中我總結(jié)一個(gè)行知有效的思路。首先了解你的主時(shí)鐘說多少,知道你的串口模塊需要設(shè)置多少的波特率進(jìn)行數(shù)據(jù)傳輸 ,再用主控時(shí)鐘將需要的布特呂進(jìn)行想除得到一個(gè)數(shù),那么將這個(gè)主控時(shí)鐘進(jìn)行這個(gè)數(shù)的分頻則可以得到你想要的波特率,但是還要提醒的是,經(jīng)過我在試驗(yàn)中的發(fā)現(xiàn),不同的電腦會(huì)或多或少波特率有點(diǎn)點(diǎn)差異,還是要進(jìn)行手動(dòng)稍微調(diào)試以保證適合這臺(tái)電腦的波特率。 VB 界面編程驗(yàn)證 但我們將 VB 界面布局完成,代碼編輯完成,接下來就是到了調(diào)試運(yùn)行的階段。 單擊工具欄上的啟動(dòng)按鈕,或者單擊運(yùn)行菜單下的啟動(dòng)按鈕,即可進(jìn)入運(yùn)行狀態(tài),如果程序出現(xiàn)錯(cuò)誤,可以單擊中斷按鈕進(jìn)行中斷調(diào)試,如果要在某一行設(shè)置斷點(diǎn)進(jìn)行調(diào)試,可以在一行代碼的左側(cè) 進(jìn)行單擊,便會(huì)出現(xiàn)一個(gè)小圓點(diǎn),這樣便設(shè)置了斷點(diǎn),同樣的方法也可以取消斷點(diǎn),終止運(yùn)行可以點(diǎn)擊結(jié)束按鈕。 結(jié)合圖 34 中我們要實(shí)現(xiàn)電機(jī)的停止,啟動(dòng),串口的打開,數(shù)據(jù)的 16 進(jìn)制接收跟十六進(jìn)制控制數(shù)據(jù)發(fā)送,那么如何去測試它呢,首先我采用的是分模塊的思想去逐個(gè)驗(yàn)證。最開始我們必須將串口打開,與關(guān)閉,由于我們采用的是 MSComm control 控件,其中具備打開串口的命令。具體的在這里不再贅述,需要的可以在附錄程序中查看;最關(guān)鍵的要在數(shù)據(jù)的十六進(jìn)制的發(fā)送跟接收,盡管說在控件中有關(guān)于如何將二進(jìn)制數(shù)轉(zhuǎn)換成16 進(jìn)制的 數(shù)但是其中涉及到很多格式的書寫,要確定你的轉(zhuǎn)換位數(shù)是多少,如要達(dá)到我們的將數(shù)據(jù)連續(xù)輸出的目的我們?cè)谄渲羞M(jìn)行不斷地?cái)?shù)據(jù)接收掃描顯示。 26 要實(shí)現(xiàn)驗(yàn)證在這里我們必須明確的是我們此次設(shè)置的握手協(xié)議如表 44 基于 FPGA 電機(jī)遠(yuǎn)程監(jiān)控握手命令 波特率 9600 奇偶校驗(yàn) 無 數(shù)據(jù)位 8 停止位 1 電機(jī)啟動(dòng) 55 電機(jī)停止 ff 表 44 在這其中遇到的問題也有不少,在調(diào)試 PC 接收顯示的時(shí)候,總是出現(xiàn)亂碼,我一開始是分析是不是我的串口線跟程序有問題,我換了根串口線,同樣出現(xiàn)這樣的問題,由此數(shù)
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1