I2C总线控制器设计.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
I2C总线控制器设计

I2C总线控制器设计   摘要:I2C(Inter-IntegratedCircuit)双向串行总线将主机或者从机的并行数据转换为串行数据,并通过SDA线传输。SCL则是串行时钟线,I2C总线通过SDA和SCL两条串行总线实现设备器件间的通信。   关键词:I2C总线;Verilog HDL;验证   中图分类号:TP3 文献标识码:A 文章编号:1007-3973(2010)10-056-01      1、I2C总线控制器的设计      1.1 I2C总线的特点   I2C双向串行总线将主机或者从机的并行数据转换为串行数据,并通过SDA线传输。SCL则是串行时钟线,I2C总线通过SDA和SCL两条串行总线实现设备器件间的通信。与其它串行总线相比,I2C总线具有一下几方面的特点:   (1)只有两条总线线路:一条串行数据线(sDA):一条串行时钟线(SCL)。   (2)每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机、从机关系软件设定的地址。   (3)串行的8位双向数据传输位速率在标准模式下可以达到100kbit/s,快速模式下可以达到400kbit/s,高速模式下可以达到3.4Mbit/s。   (4)I2C总线并且通过SDA、SCL两条串行线与连接到总线上的器件间传递信息。每个器件都有一个唯一的是地址识别,而且都可以作为一个接收器或者发送器。   (5)在I2C总线中,唯一出现的是被定义为起始(s)和停止(P)条件,一般由主机产生。在SCL线为高电平期间,SDA线由高电平向低电平切换则表示起始条件,若由低电平到高电平切换则表示停止条件。总线在起始条件后被认为处于忙的状态。在停止条件的某段时间后,总线被认为再次处于空闲状态。   (6)发送SDA线上的每个字节必须为8位。每次传输的字节数量不受限制。每个字节后面必须跟一个响应位。从器件要完成一些其他的功能后,才能接受或者发送下一个完整的数据字节,此时可以使时钟线SCL保持低电平迫使主器件进入等待状态。当从器件准备好接受下一个数据字节并释放时钟线SCL后,数据传输继续。   1.2 I2C总线控制器的设计方法   I2C总线控制器连接架构:首先从CPU发出指令来,通过对I2C控制器的操作来进行对EEPROM的读写操作并完成数据的串并转换。   (1)根据I2C总线控制器的功能的不同和端口设置来定义所需的寄存器。   (2)我们根据I2C总线控制器的特点和要求,规划出来相应的设计模块,包括寄存器配置模块,中断产生模块,时钟发生模块和状态机模块。其中状态机的状态包括空闲、开始、写地址、地址响应、读或写数据、数据响应和停止状态。由状态机作为设计的核心来控制数据的读、写和命令的发送接收等。   (3)在划分出各个模块的功能后,利用Verilog HDL语言将各个模块功能描述出来,并在顶层文件中合并各个模块。      2、I2C总线控制器的验证      2.1 验证的目的   验证和仿真可以让我们的设计尽可能的减少错误,完善我们的设计。对于一个设计的测试应当站在与设计不同的角度去思考。作为一名设计者,应当考虑的方面是如何将设计做到简单的同时,成本尽量降到最低,将所有的功能都完善并且尽量避免出现错误,将错误率降到最低。与设计不同的是,测试者应当去思考一些比较特殊的情况,去对一些不容易被思考到的点或者容易被设计者忽略的地方进行测试,尽可能的找出所有的错误。   2.2 测试方法   测试设计需要使用一定的方法。首先建立起一个测试环境,在这个测试环境中输入一些我们需要的激励。这个激励当然应当是越全面越好,其中一些边界的点和一些不容易被想到的点应当着重测试。   我们可以利用task、function等语句,分类对设计进行测试,基本测试点包括;复位操作,读写操作,读写交替操作,读写多个数据的操作等。最终设立读写随机次数和随机数据的重复操作。在测试时,需要使用到一个EEPROM的行为模块来与本设计进行通信。      3、结 语      (1)在整个工作之中,完成了对I2C总线控制器设计规则的学习,模块化划分整理、代码的仿真,最终,完成所要求的I2C总线控制器设计。此设计支持Register总线,FIFO深度为8宽度为8,可以使用软件进行复位,支持FIFO状态查询,中断使能,中断有效电平配置,传输速度模式选择等功能。整个设计中大体分为寄存器配置、状态机、中断发生模块和时钟发生模块等四部分组成,各个模块在上面都有详细描述。   (2)本次设计存在着一些不足的地方:为了简化设计,因此只支持标准模式和快速模式,并没有支持高速模式(3.4Mbit/s)。如果需要达到高速模式(Hsmode),还需根据标准模式和快速

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档