i2c有scl,sda這2根線,對這2個訊號的處理如下:
always@(posedge clk or negedge rstn)begin
if(!rstn)begin
rg_scld1<=1』b1;
rg_scld2<=1』b1;
rg_scld3<=1』b1;
rg_scld4<=1』b1;
rg_scld5<=1』b1;
rg_scld6<=1』b1;
rg_scld7<=1』b1;
rg_scld8<=1』b1;
rg_sdad1<=1』b1;
rg_sdad2<=1』b1;
rg_sdad3<=1』b1;
rg_sdad4<=1』b1;
rg_sdad5<=1』b1;
rg_sdad6<=1』b1;
rg_sdad7<=1』b1;
rg_sdad8<=1』b1;
endelse begin
rg_scld1<=xi_scl;
rg_scld2<= rg_scld1;
rg_scld3<= rg_scld2;
rg_scld4<= rg_scld3;
rg_scld5<= wr_scld5_nxt;
rg_scld6<= rg_scld5;
rg_scld7<= rg_scld6;
rg_scld8<= rg_scld7;
rg_sdad1<=xi_sda;
rg_sdad2<= rg_sdad1;
rg_sdad3<= rg_sdad2;
rg_sdad4<= rg_sdad3;
rg_sdad5<= wr_sdad5_nxt;
rg_sdad6<= rg_sdad5;
rg_sdad7<= rg_sdad6;
rg_sdad8<= rg_sdad7;
endend
assign wr_scld5_nxt=(rg_scld2==rg_scld3&& rg_scld3==rg_scld4)? rg_scld4:
rg_scld5;
assignwr_sdad5_nxt=(rg_sdad2==rg_sdad3&&rg_sdad3==rg_sdad4)? rg_sdad4:rg_scld5;
wr_scld5_nxt,wr_scld5_nxt這2個訊號是當連續的三個延遲量相等則對其進行更新,否則不更新
上述**中xi_scl,xi_sda分別是i2c的介面對外的2個訊號
示波器測量i2c訊號例項
將兩個錶筆接觸 scl sda 觸點,確認錶筆都接觸上的標誌是兩個錶筆都是高電平。將trigger menu中的 觸發方式 設定成邊沿觸發,信源 選擇sda錶筆,邊沿型別 設定成下降沿,觸發mode 先變成auto,將觸發點設定到偏向螢幕的左側,以便能看到更多的波形。scl比sda稍微靠上一點,容易...
數字介面(續) I2C 匯流排
了解內部積體電路匯流排 一種基本的低成本互聯方案 的連線和格式。內建積體電路 i2c 匯流排是一種單端 多主控雙線匯流排,適合在半雙工模式下進行高效的內部積體電路通訊。該匯流排使用漏極開路技術,因此通過電阻器連線到 vdd 時就需要兩根訊號線,分別為序列資料 sda 線和序列時鐘線 scl 如圖 1...
低速通訊介面(二)I2C
i2c引腳定義 都是雙向i o線,介面電路為開漏輸出,需通過上拉電阻接電源。當匯流排空閒時,兩根線都是高電平,連到匯流排上的任一器件輸出的低電平,都將使匯流排的訊號變低。起始訊號與終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電...