- 相關推薦
用Verilog HDL實現I2C總線功能
摘要:簡述了I2C總線的特點;介紹了開發FPGA時I2C總線模塊的設計思想;給出并解釋了用Verilog HDL實現部分I2C總線功能的程序,以及I2C總線主從模式下的仿真時序圖。開發FPGA時,利用EDA工具設計芯片實現系統功能已經成為支撐電子設計的通用平臺,并逐步向支持系統級的設計方向發展。在軟件設計過程中,越來越強調模塊化設計。I2C總線是Philips公司推出的雙向兩線串行通訊標準,具有接口線少、通訊效率高等特點。把I2C總線設計成相應的模塊,有利于相關FPCA的開發。 目前有一些介紹相關開發的資料,但都是利用VHDL語言或AHDL語言實現的。本文給出利用Verilog HDL語言設計的I2C總線模塊。
1 I2C總線概述
I2C總線系統由兩根總線即SCL(串行時鐘)線和SDA(串行數據)線構成。這種總線可以設計成很多種通訊配置,但本文只討論主從系統的應用。主器件控制總線通訊,開始/結束傳送、發送信息并產生I2C系統時鐘。在寫操作過程中,從器件一旦被主控器件尋址,就執行特定的相應功能。在讀操作過程中,主控器件從從器件那里獲得數據。在整個主從傳送過程中,所有的事件都通過主控器件的SCL時鐘線達到同步。連到總線上的器件的接口形式必須是漏極開路或集電極開路輸出狀態。通過上拉電阻,使得兩根總線在空閑的狀態下都為高電平狀態。因此I2C總線上具有線與功能,即總線上的所有器件都達到高電子狀態時,I2C總線才能達到高電平狀態,從而使總線上的高速器件和慢速器件工作同步。
在I2C協議中,從器件地址是一個唯一的7位地址。接下來是一個讀寫方向標志位,讀狀態是高電平、寫狀態是低電子。
2 I2C模塊的設計與實現
根據I2C協議中傳輸過程的特點,I2C模塊可以劃分為字節發送模塊、字節接收模塊、開始條件模塊、停止條件模塊。其中,字節發送模塊、字節接收模塊和停止條件模塊為基本模塊。在開始條件模塊中,因為需要發送從器件地址,所以要調用字節發送模塊。
下面給出用Verilog HDL語言實現字節發送模塊的關鍵程序。相關變量的聲明在此略去。程序在Max PlusII環境下編譯、調試、仿真。
assign en_sdao=tempen_sdao;//設置SDA三態輸出使能
assign send_byte_over=tempsend_byte_over;
assign NO_ACK=tempNO_ACK;
assign sdao=tempsda;
assign sclo=tempscl;
always@(posedge send_byte_clk)
begin
case(send_byte_zt)
sendbit 1:
begin
if(send_byte_num==0)
begin
shiftdata[7:0]=indata[7:0];
end
shiftdata=shiftdata
【用Verilog HDL實現I2C總線功能】相關文章:
基于Verilog-HDL的軸承振動噪聲電壓峰值檢測03-20
基于VHDL的I2C總線控制核設計03-18
基于CPLD的系統中I2C總線的設計03-18
MPC8272總線與DSP HPI總線接口的FPGA實現03-07
談DSP HPI總線與MPC8272總線接口的FPGA實現03-08
AR模型LPC系數的DSP提取與Lattice結構的Verilog實現03-07
基于PCI總線的CAN卡的設計與實現03-18
基于總線的多功能信息系統的研究03-07