場景:多個電路板串列埠通訊,由於 電路不穩定,會有誤碼。人工使用串列埠助手傳送指定測試指令耗時且枯燥。
借用@colinfred的串列埠工具,實現簡單統計串列埠誤位元速率。
一、資料從**來再回**去
# coding=utf-8
import serial
import time
import binascii
serialport = serial.serial('com3', 9600)
def myloop():
while true:
time.sleep(1)
while serialport.inwaiting() > 0:
n = serialport.inwaiting()
data = serialport.read(n)[0:]
strdata = str(binascii.b2a_hex(data))
print('serial receive data:' + strdata)
serialport.write(data)
if __name__ == '__main__':
myloop()
二、讀取檔案傳送、處理。
# 處理誤位元速率
def caculate_scale(self):
send = self.str_send.split(' ')
recv = self.str_recv.split(' ')
send_len = len(send)
recv_len = len(recv)
if send_len != recv_len:
self.s2__receive_text.insertplaintext('資料丟失:%s個位元組,請人工處理誤位元速率。' % (send_len - recv_len) + '\r\n')
else:
err_cnt: int = 0
for index in send_len:
if send[index] != recv[index]:
err_cnt += 1
self.s2__receive_text.insertplaintext('誤碼:%s %s' % send[index], recv[index] + '\r\n')
self.s2__receive_text.insertplaintext('誤碼:%s個位元組,誤位元速率%d' % (send_len - recv_len), err_cnt / send_len + '\r\n')
誤碼檢測單元的功能設計
本章具體介紹誤位元速率測試儀的基本功能的設計方法以及各部分的具體電路設計。主要包括 fpga 內部的碼型發生單元,誤碼插入單元 誤碼檢測單元,同步單元,誤碼計數單元,模擬通道單元和顯示單元組成。本節將介紹各個功能模組的功能和實現的核心 等。碼型發生單元主要描述的是偽隨機序列產生模組,偽隨機序列產生有...
FPGA 串列埠接收不準確,有誤碼
協議 1位起始位,8位資料位,1位停止位 fpga的串列埠接收設計,由於 在串列埠傳輸8bit資料時需要10bit 才可以,在接收bit位時,將8bit資料接收完成後,還有1bit 的停止位,如果在接收時嚴格的等待結束位完成之後再去檢測起始位的下降沿,或者是檢測起始位的開始位,在這種情況下 如果傳送...
27 基於FPGA的誤碼檢測儀
主要分為以下幾個部分 鎖相環m序列生成模組 資料介面模組 模擬通道模組 本地m序列生成模組 同步模組 誤碼統計模組 鎖相環主要產生系統時鐘訊號和輸出同步時鐘訊號。採用altera自帶的ip模組 m序列生成模組 偽隨機訊號發生器又叫pn序列發生器或者是m序列發生器。m序列是一種線性反饋暫存器序列,m序...