數字系統實驗 串列埠通訊A

2021-10-03 23:23:55 字數 2059 閱讀 6812

a級任務:本次實驗採用狀態圖形成vhdl檔案方法

之前的bcd級任務已經完成,得到的如下所示:

名稱針腳號

輸入資料d7-d0

28-24,9-7

控制訊號rxf

144控制訊號txe

4控制訊號rd

143控制訊號wr

3傳送aa

傳送55

雙向傳輸

接下來是實現crc演算法,a級實驗實際上就是要求通過電腦輸入乙個數值,然後經過實驗板處理之後,返回該資料的crc迴圈冗餘檢驗碼,比方說輸入a5應該返回05。這裡我取crc演算法中的p=110101,r=5

a5=10100101,在實驗板中加上5個0後為1010010100000,然後該數對p=110101進行除法操作(異或操作),直到剩下乙個五位數,具體如下:

1010010100000

110101

0111000

110101

00110110

110101

0000110000

110101

000101

最終得到的校驗碼為00101,因為要補齊八位,所以在首三位新增0,最終得到的輸出資料為00000101,即十六進製制的05。

再取輸入資料為bf,即10111111,p=110101,r=5,補齊之後得到的處理資料為1011111100000,進行異或操作:

1011111100000

110101

0110101

110101

000000100000

110101

010101

最終得到的校驗碼為10101,補齊八位後得到的輸出資料 為00010101,即十六進製制的15,。結果如下;

結果正確,證明實驗方法可行性為100%,結果正確且完整,表示實驗成功

實驗方法:

這次實驗採用狀態圖輸入方法,由於狀態圖無法直接進行資料集合的輸入輸出(繁瑣且不能賦值),所以採用狀態圖生成狀態控制訊號vhdl檔案,另建資料控制vhdl檔案,由此生成兩個模組實現實驗的主要控制功能,狀態控制模組的狀態圖書上已經有了乙個基本的構架,另外可以從書上的vhdl中找到每個狀態應該進行什麼操作。因為有六個狀態,所以我在狀態圖中另外設計了3個控制訊號t1~t3,用來表示當前是什麼狀態,以此來作為資料控制模組的控制訊號。最後生成的狀態圖如圖所示:

另外在資料控制模組中,由於這個實驗的電路是時序的是,所以我將資料輸入,資料處理,資料輸出都分別拿了出來,作為三個process程序,通過這種方法來實現時間上的序列進行,最終實驗結果證明我這種實驗方法是正確的。

不過最後我發現這兩個模組可以進行修改,合成乙個大的vhdl模組,通過這樣可以簡化畫圖,更加簡潔明瞭,所以最後我就合併為了乙個模組實現:

串列埠通訊實驗

晶振12mhz,波特率1200,程式啟動後微控制器主動發出hello server,pc使用串列埠助手應答微控制器,當微控制器收到pc發來的資料aah後,將30h 3fh的16個位元組傳送給pc,當51收到e0h時就發40h 5fh的32個位元組資料,若微控制器收到其他資料後,則不做任何修改返回pc...

微控制器實驗 串列埠通訊實驗

實驗三 串列埠通訊實驗 內容 1 利用電腦串列埠與實驗台串列埠進行連線 2 根據幀格式定義 波特率定義,程式設計配置串列埠,並編寫控制程式 3 實現從電腦上輸入控制字元,由微控制器通過串列埠接收,並控制led顯示的功能 4 對所程式設計序進行除錯及驗證。要求 1 掌握波特率的概念 學會程式設計設定波...

python串列埠通訊實驗筆記

1 安裝兩個第三方庫 pip3 install serial pip3 install pyserial2 注 如果安裝了第三方庫還是報錯,可能由於網路原因沒有安裝好,解決方法,解除安裝之後重新安裝兩個第三方庫檔案 pip3 uninstall serial和pip3 uninstall pyser...