<cite id="d9bzp"></cite>
<cite id="d9bzp"><span id="d9bzp"></span></cite>
<cite id="d9bzp"><video id="d9bzp"></video></cite><var id="d9bzp"></var>
<var id="d9bzp"><video id="d9bzp"><thead id="d9bzp"></thead></video></var>
<menuitem id="d9bzp"><video id="d9bzp"></video></menuitem>
<var id="d9bzp"></var><cite id="d9bzp"><video id="d9bzp"></video></cite>
<cite id="d9bzp"></cite>
<var id="d9bzp"></var>
<var id="d9bzp"></var>
<var id="d9bzp"><video id="d9bzp"><thead id="d9bzp"></thead></video></var>

用Verilog HDL实现I2C总线功能

时间:2018-01-20 理工毕业论文 我要投稿
摘要:简述了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?榭梢曰治纸诜⑺湍?、字节接收?、开始条件?、停止条件?。其中,字节发送?、字节接收?楹屯V固跫?槲灸?。在开始条件?橹,因为需要发送从器件地址,所以要调用字节发送?。

下面给出用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总线功能相关推荐
云南快乐十分哪个好_北京pK怎么玩-湖北快3怎么玩 吴昕| 163| 西游记| 林允儿| 军嫂怒怼张馨予| 知网| 欧阳娜娜| 西游记| 建设银行| 欧阳娜娜|