
今天給大俠帶來在FPAG技術交流群里平時討論的問題答疑合集(十八),以后還會多推出本系列,話不多說,上貨。
FPGA技術交流群目前已有十多個群,QQ和微信均覆蓋,人數達數萬人,有需要的大俠可以進群,一起交流學習,共同進步。
歡迎加入FPGA技術微信交流群14群!
交流問題(一)

Q:通信原理 數字基帶中定時分量是什么?
A:在通信原理的數字基帶中,定時分量是一種用于同步接收端和發送端時鐘的特殊信號分量。
一、作用
1. 時鐘同步:確保接收端能夠準確地確定每個碼元的起始和結束位置,從而正確地恢復出原始的數字信號。沒有準確的定時,接收端可能會錯誤地解讀碼元,導致誤碼率增加。
2. 提高系統性能:通過提供穩定的定時信息,可以提高數字通信系統的可靠性和效率。例如,在高速數據傳輸中,精確的定時對于正確接收和解碼數據至關重要。
二、產生方式
1. 編碼過程中引入:某些數字基帶編碼方式可以自然地產生定時分量。例如,曼徹斯特編碼在每個碼元的中間都有一個電平跳變,這個跳變可以作為定時信號。
2. 專門的同步信號:可以在數字基帶信號中插入專門的同步信號,這些信號具有特定的波形和特征,接收端可以通過檢測這些信號來獲取定時信息。
三、提取方法
1. 鎖相環技術:接收端可以使用鎖相環(PLL)來從接收到的數字基帶信號中提取定時分量。PLL 可以跟蹤輸入信號的頻率和相位變化,從而產生與發送端時鐘同步的本地時鐘信號。
2. 濾波和檢測:通過對數字基帶信號進行濾波和檢測,可以提取出定時分量。例如,可以使用窄帶濾波器來選擇特定頻率的信號分量,然后通過檢測峰值或過零點來確定定時信息。
交流問題(二)

Q:有個問題請教下大家,51單片機與fpga用spi通信,不在一個板子上,這個需要用隔離芯片嗎?
A:51 單片機與 FPGA 用 SPI 通信且不在一個板子上時,是否需要隔離芯片可以從以下幾個方面考慮,僅供參考:
一、電氣隔離的必要性
1. 不同電源域:如果兩個板子的電源來自不同的電源系統,且存在較大的電位差,那么使用隔離芯片可以防止不同電源之間的干擾和潛在的損壞。例如,一個板子使用 3.3V 電源,另一個板子使用 5V 電源,可能會在通信線路上產生電流回流等問題。
2. 噪聲和干擾:如果通信環境中存在較大的噪聲源,如電機、高頻開關電源等,隔離芯片可以減少噪聲對通信信號的影響,提高通信的可靠性。例如,在工業控制環境中,電磁干擾可能會導致通信錯誤。
3. 安全考慮:在一些對安全性要求較高的應用中,如醫療設備、工業自動化系統等,隔離可以防止故障從一個系統傳播到另一個系統,提高系統的安全性。
二、不使用隔離芯片的情況
1. 相同電源域且低噪聲環境:如果兩個板子使用相同的電源,并且通信環境中噪聲較小,那么可以不使用隔離芯片。例如,在實驗室環境中,兩個板子由同一個穩定的電源供電,且周圍沒有強干擾源。
2. 成本和復雜性考慮:使用隔離芯片會增加系統的成本和設計復雜性。如果在特定應用中,對通信可靠性的要求不是特別高,且可以通過其他方式(如良好的布線、屏蔽等)減少干擾,那么可以不使用隔離芯片。
總之,是否需要使用隔離芯片取決于具體的應用場景和需求。如果存在電源差異、噪聲干擾較大或對安全性有較高要求,那么使用隔離芯片可能是一個較好的選擇。如果通信環境較為簡單且可靠性要求不高,可以考慮不使用隔離芯片以降低成本和設計復雜性。

交流問題(三)

Q:兩個8bit數相減,兩個都是補碼形式的,如何判斷差是否溢出?
A:判斷兩個 8bit 補碼形式的數相減是否溢出,可以依據以下方法,僅供參考:
一、基本原理
對于 8 位有符號數,其取值范圍是 -128 到 127。當運算結果超出這個范圍時,就發生了溢出。
二、具體判斷方法
1. 若兩個正數相減得到負數結果,或者兩個負數相減得到正數結果,則發生溢出。
? 例如,兩個 8 位補碼數 64(01000000)和 32(00100000)相減,結果為 32(00100000),正常。但如果是 64(01000000)和 64(01000000)相減,結果為 0(00000000),實際應該為-64(11000000),發生了溢出。
? 又如,兩個負數 -64(11000000)和 -32(11100000)相減,結果為-32(11100000),正常。但如果是 -64(11000000)和 -80(10110000)相減,結果為 16(00010000),實際應該為-16(11110000),發生了溢出。
2. 從最高位進位和次高位進位的情況判斷:
? 當兩數相減時,若最高位進位和次高位進位不同,則發生溢出。
? 例如,計算 120(01111000)減去 40(00101000),最高位進位為 0(因為正數相減不會產生向更高位的進位),次高位進位也為 0(因為次高位沒有進位情況發生),結果為 80(01010000),沒有溢出。
? 再計算 64(01000000)減去 80(01010000),最高位進位為 1(借位相當于向更高位進 1),次高位進位為 0(因為次高位沒有進位情況發生),結果為-16(11110000),正常。但如果是 64(01000000)減去 32(00100000),最高位進位為 0,次高位進位為 1(因為次高位有進位情況發生),結果為 32(00100000),發生了溢出。

今天先整理三個問題答疑,后續還會持續推出本系列。
END
往期精選?
?
?

FPGA技術江湖廣發江湖帖
無廣告純凈模式,給技術交流一片凈土,從初學小白到行業精英業界大佬等,從軍工領域到民用企業等,從通信、圖像處理到人工智能等各個方向應有盡有,QQ微信雙選,FPGA技術江湖打造最純凈最專業的技術交流學習平臺。
FPGA技術江湖微信交流群

加群主微信,備注姓名+公司/學校+崗位/專業進群
FPGA技術江湖QQ交流群

備注姓名+公司/學校+崗位/專業進群
