赞
踩
说明: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;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。