一、摘要

DE2_TV中,有关于寄存器的配置的部分,采用的方法是通过IIC的功能,这里对IIC总线的FPGA实现做个说明。

二、实验平台

软件平台:ModelSim-Altera 6.4a (Quartus II 9.0)

硬件平台:DIY_DE2

三、实验原理

1、IIC总线器件工作原理

在IIC总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号变为低电平,将使SCL线上所有器件开始并保护低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不影响SCL线的状态,这些器件将进入高电平等待的状态。

当所有器件的时钟信号都变为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件决定,而时钟高电平时间由时钟高电平期最短的器件决定。

IIC总线上数据的传输速率在标准模式下可达100kbit/s 在快速模式下可达400kbit/s 在高速模式下可达3.4Mbit/s ,连接到总线的接口数量只由总线电容是400pF 的限制决定。

2、IIC总线的传输协议与数据传送时序

(1)起始和停止条件

在数据传送过程中,必须确认数据传送的开始和结束。在IIC总线技术规范中,开始和结束信号(也称启动和停止信号)的定义如图1所示。

图1起始和停止信号图

开始信号:当时钟总线SCL为高电平时,数据线SDA由高电平向低电平跳变,开始传送数据。

结束信号:当SCL线为高电平时,SDA线从低电平向高电平跳变,结束传送数据。

开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态,其它器件不能再产生开始信号。主器件在结束信号以后退出主器件角色,经过一段时间过,总线被认为是空闲的。

(2)数据格式

IIC总线数据传送采用时钟脉冲逐位串行传送方式,在SCL的低电平期间,SDA线上高、低电平能变化,在高电平期间,SDA上数据必须保护稳定,以便接收器采样接收,时序如图2所示。

图2 数据传送时序图

IIC总线发送器送到SDA线上的每个字节必须为8位长,传送时高位在前,低位在后。与之对应,主器件在SCL线上产生8个脉冲;第9个脉冲低电平期间,发送器释放SDA线,接收器把SDA线拉低,以给出一个接收确认位;第9个脉冲高电平期间,发送器收到这个确认位然后开始下一字节的传送,下一个字节的第一个脉冲低电平期间接收器释放SDA。每个字节需要9个脉冲,每次传送的字节数是不受限制的。

IIC总线的数据传送格式是在IIC总线开始信号后,送出的第一字节数据是用来选择从器件地址的,其中前7位为地址码,第8位为方向位(R/W)。方向位为“0”表示发送,即主器件把信息写到所选择的从器件中;方向位为“1”表示主器件将从从器件读信息。格式如下:

开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即被主器件寻址的器件,其接收信息还是发送信息则由第8位(R/W)决定。发送完第一个字节后再开始发数据信号。

(3)响应

数据传输必须带响应。相关的响应时钟脉冲由主机产生,当主器件发送完一字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,此时钟内主器件释放SDA线,一字节传送结束,而从器件的响应信号将SDA线拉成低电平,使SDA在该时钟的高电平期间为稳定的低电平。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。

通常被寻址的接收器在接收到的每个字节后必须产生一个响应。当从机不能响应从机地址时,从机必须使数据线保持高电平,主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输。如果从机接收器响应了从机地址但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平主机产生一个停止或重复起始条件。完整的数据传送过程如图3所示。

图3 完整的数据传送过程

另外,IIC总线还具有广播呼叫地址用于寻址总线上所有器件的功能。若一个器件不需要广播呼叫寻址中所提供的任何数据,则可以忽咯该地址不作响应。如果该器件需要广播呼叫寻址中按需提供的数据,则应对地址作出响应,其表现为一个接收器。

四、实验过程

根据上述的实验原理,对DE2_TV中的IIC部分进行modelsim仿真。

1、IIC所需时钟的仿真

FPGA作为IIC器件的主机,要产生IIC的工作时钟,下面先对IIC所需的时钟信号进行仿真。

待仿真的时钟信号程序如下:

testbench程序如下:

modelsim仿真的波形如下:

图4 IIC内部时钟仿真图

经过计算,IIC内部所用的时钟频率为40KHz。

2、IIC整体仿真

相关程序在附件中。下面是仿真波形。

图5 IIC整体仿真波形图

结合上述仿真波形图和程序可以看出:

起始位:SCLK为高电平时,SDAT由高到低,指示IIC总线传输数据的开始;

之后,传送一个字节的数据,即4A,为从机的地址,随后,跟了一个高电平,为应答位;

之后,传送一个字节的数据,即01,为从机地址的子地址,随后,跟了一个高电平,为应答位;

之后,传送一个字节的数据,即08,为上面子地址寄存器配置的数据,随后,跟了一个高电平,为应答位;

最后,为停止位,SCLK为高电平时,SDAT由低到高,指示该次IIC总线传输数据的结束。

-END-

更多精彩文章:

  • 技术货:值得珍藏的经典模拟电路

  • 技术货:统治全球的10大算法

  • 技术货:傅立叶分析和小波分析之间的关系?

  • 技术货:教你怎么检查电路原理图

  • 资深工程师带你深入理解LDO

分享技术,帮助更多人!请点击右下角“好看”

模拟iic和硬件iic区别_技术货:IIC总线的FPGA实现相关推荐

  1. 不同型号的二极管模块并联_技术货:二极管发光原理与LED灯带

    [本文为面包板社区 "CationLiu"原创文章] 二极管就是把一个N型半导体和P型半导体叠放一起,N型P型是向半导体中掺入了不同的杂质,由于N型.P型半导体的导电特性,在二极管 ...

  2. 数字电路技术可能出现的简答题_技术货:模拟电路和数字电路PCB设计的区别

    本文就旁路电容.电源.地线设计.电压误差和由PCB布线引起的电磁干扰(EMI)等几个方面,讨论模拟和数字布线的基本相似之处及差别. 工程领域中的数字设计人员和数字电路板设计专家在不断增加,这反映了行业 ...

  3. 多元回归和简单回归的区别_技术多元化的关键比您想象的要简单

    多元回归和简单回归的区别 我参加了今年的万物公开会议(2014年10月22日至23日,在北卡罗来纳州罗利),而我最喜欢的会议之一(除了鲍勃·杨(Bob Young)在商务会议上的智慧)是关于女性参与开 ...

  4. mysql55和57的区别_技术分享 | MySQL:count(*)、count(字段) 实现上区别

    我们继续来讨论一下 count(*).count(字段)实现上的区别.注意我们这里都使用 Innodb 做为存储引擎,不讨论其他引擎.因为了有了前面的讨论,更容易看出它们的区别,这里我们有如下注意点: ...

  5. 怎么设置ep4ce6e22b8n引脚_技术货:教你怎么检查电路原理图

    最近一直在做嵌入式系统,画原理图.最后,为了保证原理图准确无误,检查原理图花费我近两周的时间,在此,把我在检查原理图方面的心得体会总结在此,供大家参考,说得不对的地方欢迎大家指出.往往我们画完电路原理 ...

  6. 低通滤波器计算截止评率_技术货:滤波器带宽及对应RC的计算

    1.中心频率对应的时间常数 转折频率相同的高.低通滤波器合成带通电路,高低通的转折频率都在同一点,该频率的信号幅度在传输过程被高低通虽然衰减3+3dB,但是在uo输出幅度最大,也是中心频率点(如下红点 ...

  7. sm总线控制器找不到驱动程序_技术 | 基于CAN总线的伺服电机通信控制

    1.引言 CAN(ControllerArea Network)总线是一种有效支持分布式控制或实时控制的串行通信局域网络,由于其高性能.高可靠性.实时性好以及独特的设计,已广泛应用于控制系统中的各检测 ...

  8. 模拟IIC与硬件IIC的区别!

    模拟IIC与硬件IIC的区别! 一:模拟IIC与硬件IIC定义? 模拟I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形. 硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所 ...

  9. STM32 驱动 GY-302 光照传感器 BH1750 模块(软件IIC与硬件IIC驱动)

    1.特别说明 ​ 要是不想看原理和过程,直接下拉找代码吧,都是测试过的,很稳定,有硬件I2C驱动的,也有软件模拟I2C驱动的,基于STM32F103系列和STM32F4系列实现,基于标准库实现,条理清 ...

  10. 计算机仿真与虚拟现实的区别,模拟、虚拟、仿真及模拟仿真与虚拟现实的区别...

    鬻 模拟.虚拟.仿真及模拟仿真与虚拟现实的区别 曹爽王峰赵峰臣 l 3 01 l 7) (装甲兵技术学院 摘要 吉林 长春 本文主要针对人们对模拟.虚拟.仿真概念界定不清等情况.详细介绍模拟.虚拟.仿 ...

最新文章

  1. qt发布后 mysql数据库_qt发布后 mysql数据库
  2. linux下远程控制继电器,更智能的电脑远程开关机-基于继电器
  3. 几乎所有的成功都是厚积薄发
  4. 基于Xml 的IOC 容器-载入<bean>元素
  5. IBM HTTP Server Websphere Plugin
  6. HH SaaS电商系统的销售订单归档服务
  7. 华云数据升级发布“信创云基座“ 用“全芯全栈”支持“信创强国”
  8. 白居易最动人的10句诗
  9. Intent 隐示意图
  10. Redis基本数据类型、应用场景、操作指令
  11. 【模型转换】最少点的覆盖区间
  12. linux htdocs目录下,ubuntu解决htdocs目录的权限问题
  13. ubuntu 安装postgresql 客户端 psql 以及运行相关命令
  14. stm32毕业设计 单片机智能温控风扇
  15. java基础之Web全套知识点梳理
  16. ORBSLAM论文翻译
  17. 从表征到行动---意向性的自然主义进路(续四)
  18. 七夕情人节表白网页制作【雪花爱心】
  19. AJAX 后端处理程序
  20. 音频知识点(5)- VAD/CNG/DTX

热门文章

  1. mysql 忘记密码解决方法(有用)
  2. 过滤DataTable中的指定字段重复的行
  3. 转帖-win2003各版本的区别
  4. 网络请求statusCode(状态码) 200、300、400、500序列
  5. JSON Editor for Mac(JSON编辑器)
  6. win10+Linux双系统安装
  7. 【10-2】复杂业务状态的处理(从状态者模式到FSM)
  8. Linux多线程同步之相互排斥量和条件变量
  9. jqgrid学习(二)
  10. 学习廖雪峰的Python教程之Python基础