当前位置:   article > 正文

Verilog之i2c协议_i2c slave verilog

i2c slave verilog

说明:i2c的作业,有很多东西是参考网上。

时间:2014年5月6日星期二


1.问题描述:

如图所示,已知时钟clk为100k,rst为复位信号,上升沿有效,基于Verilog HDL或者VHDL语言,将A器件内的六个8位数据,按照I2C协议规格送入总线sda,并产生相应的串行时钟scl.

要求(1):写出完整代码;

要求(2):给出仿真波形图。


1.1仿真波形图

在波形图中,黄色波形表示sda,红色波形data是为了方便观察sda所传输的数据而设立的。所要传输的6个数据分别为:8’h98, 8’h01, 8’h41, 8’hf0,8’h60, 8’h90;器件地址是自己定义的7'b1011010(因为I2C器件的地址是7位,作业给出的地址是8位)。


发送数据的放大波形图如下(以发送数据8’h41为例):


1.2完整代码

代码采用Modelsim仿真,编写了Verilog程序和testbench激励文件。

Verilog程序:

modulei2c (scl, sda, clk, rst);
       inout scl;
       inout sda;
       input clk;
       input rst;
 
       reg i;
       reg rscl = 1'bz;
       reg rsda = 1'bz;
       reg[7:0] temp, data;
      
       reg[6:0]          slave_addr_reg= 7'b1011010; //slave addr
       parameter      DATA0 = 8'h98;
       parameter              DATA1 = 8'h01;
       parameter              DATA2 = 8'h41;
       parameter              DATA3 = 8'hF0;
     
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/599726
推荐阅读
相关标签
  

闽ICP备14008679号