• verilogcase > 用Verilog HDL 实现 I2C 总线功能
  • 用Verilog HDL 实现 I2C 总线功能

    免费下载 下载该文档 文档格式:PDF   更新时间:2008-06-07   下载次数:0   点击次数:5
    文档基本属性
    文档语言:
    文档格式:pdf
    文档作者:王长花
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    用 Verilog HDL 实现 I2C 总线功能
    文章作者:天津科技大学电子信息与自动化学院 路永坤
    文章出处:电子技术应用
    摘要:简述了 I2C 总线的特点;介绍了开发 FPGA 时 I2C 总线模块的设计思想;给出并解释了用 Verilog HDL 实现部分 I2C 总线功能的程序,以及 I2C 总线主从模式下的仿真时序图. 关键词:I2C 总线 FPGA Verilog HDL 时序
    开发 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<=2)
    begin
    send_byte_zt=sendbit2;
    delay_counter=0;
    end
    else
    begin
    delay_counter=delay_counter+1;
    send_byte_zt=send_byte_zt;
    end
    end
    sendbit2:
    begin
    tempsc1=0; //SCL 置零
    send_byte_zt=delay_2;
    end

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • verilogcase  verilog中case语句  verilog  veriloghdl  systemverilog  verilog语言  verilog教程  异步fifoverilog  全加器verilog  veriloggenerate