- 相關(guān)推薦
用Verilog HDL實(shí)現(xiàn)I2C總線功能
摘要:簡(jiǎn)述了I2C總線的特點(diǎn);介紹了開(kāi)發(fā)FPGA時(shí)I2C總線模塊的設(shè)計(jì)思想;給出并解釋了用Verilog HDL實(shí)現(xiàn)部分I2C總線功能的程序,以及I2C總線主從模式下的仿真時(shí)序圖。開(kāi)發(fā)FPGA時(shí),利用EDA工具設(shè)計(jì)芯片實(shí)現(xiàn)系統(tǒng)功能已經(jīng)成為支撐電子設(shè)計(jì)的通用平臺(tái),并逐步向支持系統(tǒng)級(jí)的設(shè)計(jì)方向發(fā)展。在軟件設(shè)計(jì)過(guò)程中,越來(lái)越強(qiáng)調(diào)模塊化設(shè)計(jì)。I2C總線是Philips公司推出的雙向兩線串行通訊標(biāo)準(zhǔn),具有接口線少、通訊效率高等特點(diǎn)。把I2C總線設(shè)計(jì)成相應(yīng)的模塊,有利于相關(guān)FPCA的開(kāi)發(fā)。 目前有一些介紹相關(guān)開(kāi)發(fā)的資料,但都是利用VHDL語(yǔ)言或AHDL語(yǔ)言實(shí)現(xiàn)的。本文給出利用Verilog HDL語(yǔ)言設(shè)計(jì)的I2C總線模塊。
1 I2C總線概述
I2C總線系統(tǒng)由兩根總線即SCL(串行時(shí)鐘)線和SDA(串行數(shù)據(jù))線構(gòu)成。這種總線可以設(shè)計(jì)成很多種通訊配置,但本文只討論主從系統(tǒng)的應(yīng)用。主器件控制總線通訊,開(kāi)始/結(jié)束傳送、發(fā)送信息并產(chǎn)生I2C系統(tǒng)時(shí)鐘。在寫(xiě)操作過(guò)程中,從器件一旦被主控器件尋址,就執(zhí)行特定的相應(yīng)功能。在讀操作過(guò)程中,主控器件從從器件那里獲得數(shù)據(jù)。在整個(gè)主從傳送過(guò)程中,所有的事件都通過(guò)主控器件的SCL時(shí)鐘線達(dá)到同步。連到總線上的器件的接口形式必須是漏極開(kāi)路或集電極開(kāi)路輸出狀態(tài)。通過(guò)上拉電阻,使得兩根總線在空閑的狀態(tài)下都為高電平狀態(tài)。因此I2C總線上具有線與功能,即總線上的所有器件都達(dá)到高電子狀態(tài)時(shí),I2C總線才能達(dá)到高電平狀態(tài),從而使總線上的高速器件和慢速器件工作同步。
在I2C協(xié)議中,從器件地址是一個(gè)唯一的7位地址。接下來(lái)是一個(gè)讀寫(xiě)方向標(biāo)志位,讀狀態(tài)是高電平、寫(xiě)狀態(tài)是低電子。
2 I2C模塊的設(shè)計(jì)與實(shí)現(xiàn)
根據(jù)I2C協(xié)議中傳輸過(guò)程的特點(diǎn),I2C模塊可以劃分為字節(jié)發(fā)送模塊、字節(jié)接收模塊、開(kāi)始條件模塊、停止條件模塊。其中,字節(jié)發(fā)送模塊、字節(jié)接收模塊和停止條件模塊為基本模塊。在開(kāi)始條件模塊中,因?yàn)樾枰l(fā)送從器件地址,所以要調(diào)用字節(jié)發(fā)送模塊。
下面給出用Verilog HDL語(yǔ)言實(shí)現(xiàn)字節(jié)發(fā)送模塊的關(guān)鍵程序。相關(guān)變量的聲明在此略去。程序在Max PlusII環(huán)境下編譯、調(diào)試、仿真。
assign en_sdao=tempen_sdao;//設(shè)置SDA三態(tài)輸出使能
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實(shí)現(xiàn)I2C總線功能】相關(guān)文章:
基于Verilog HDL設(shè)計(jì)的自動(dòng)數(shù)據(jù)采集系統(tǒng)03-21
基于Verilog-HDL的軸承振動(dòng)噪聲電壓峰值檢測(cè)03-20
基于VHDL的I2C總線控制核設(shè)計(jì)03-18
基于CPLD的系統(tǒng)中I2C總線的設(shè)計(jì)03-18
MPC8272總線與DSP HPI總線接口的FPGA實(shí)現(xiàn)03-07
混合基FFT處理器的設(shè)計(jì)與Verilog實(shí)現(xiàn)03-07
談DSP HPI總線與MPC8272總線接口的FPGA實(shí)現(xiàn)03-08
AR模型LPC系數(shù)的DSP提取與Lattice結(jié)構(gòu)的Verilog實(shí)現(xiàn)03-07