关键字 |
I2C协议,数据监控,FPGA, VHDL SDA, SCL, OV7620 |
介绍 |
I2C总线是两线,低到中速通信总线,降低了电子产品的制造成本。它提供了低成本但强大的芯片之间的性能将在复杂的电磁环境下,由于不适当的音频/视频监控,首先提出了I2C协议实现的技术描述。对被监视区域的持续监控是通过拍摄该地点的视频来完成的。视频是使用CMOS传感器以帧的形式捕获的。这些帧被存储和比较,并计算任何两帧之间的变化。当没有入侵时,变化为零。当检测到任何移动时,将计算移动物体的大小,如果物体的大小超过特定的值,在这种情况下,威胁级别将很高。这将使安全系统在检测到入侵之前不需要人力。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1256-g001.gif) |
设备接口的不同阶段 |
通过I2C协议接口,设备有四个基本级,在这四个条件下,设备必须配置到MASTER或FPGA板。 |
•I2C总线事件:START和STOP条件 |
•I2C总线事件:向接收器发送一个字节 |
•I2C总线事件:从接收到的接收到确认 |
•I2C总线事件:从Receive接收一个字节 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1256-g002.gif) |
2.1.I2C总线事件:START和STOP条件-在总线上进行任何事务之前,需要在总线上发出一个START条件。启动条件作为一个信号,所有连接的IC即将在总线上传输一些东西。因此,所有连接的芯片都会关注总线。消息完成后,发送一个STOP条件。这是总线上所有设备的信号,表明总线再次可用(空闲)。如果一个芯片在上一个事务期间被访问并接收了数据,它现在将处理该信息(如果在接收消息期间尚未处理)。 |
发出启动条件的芯片首先将SDA(数据)线拉低,然后将SCL(时钟)线拉低。stop -总线主首先释放SCL,然后是SDA线路。一条消息可以包含多个Start条件。这种所谓的“重复启动”在I2C中很常见。停止条件总是表示传输的结束。即使它是在事务中间或字节中间发出的。对于芯片来说,在这种情况下,它忽略发送的信息并恢复“监听状态”,等待新的启动条件,这是“良好的行为”。 |
2.2 I2C总线事件:发送一个字节到一个接收器——一旦开始条件已经发送,一个字节可以由MASTER发送到接收器。开始条件后的第一个字节将在总线上识别接收器(地址)并选择操作模式。以下所有字节的含义取决于接收方。一些地址已预留作特殊用途。其中一个地址是为“扩展寻址模式”保留的。随着I2C总线的普及,人们很快发现可用地址的数量太少了。因此,已将其中一个保留地址分配给新任务切换到10位地址模式。如果一个标准接收器(不能解析扩展寻址)接收到这个地址,它不会做任何事情(因为这不是它的地址)。如果总线上有接收器可以在扩展的10位寻址模式下操作,它们将全部响应主机发出的ACK周期。由主机传输的第二个字节将被接收,并根据它们的地址进行计算。即使在10位扩展寻址模式下,Start条件后第一个字节的第0位也决定了接收方的访问模式('1' =读/ '0' =写)。 |
2.3 I2C总线事件:从接收接收到确认-当一个地址或数据字节已经传输到总线上时,必须由接收端确认。对于地址:如果该地址与它自己的地址匹配,那么该接收器(且只有该接收器)将用ACK响应该地址。在字节的情况下,传输到一个已经寻址的接收端,那么该接收端也将响应一个ACK。即将发出ACK的接收端在接收到传输的第8位后立即将SDA线拉低,或者,对于地址字节,在计算其地址后立即拉低。在实际应用中,这是不明显的。这意味着只要主机将SCL拉低,就可以完成位的传输。 |
•SDA将被接收器拉低 |
master现在在SCL线上发出一个时钟脉冲 |
•接收机将在此时钟脉冲完成后释放SDA线 |
总线现在再次可用,以便主服务器继续发送数据或生成停止条件。 |
在数据被写入接收器的情况下,这个循环必须在停止条件生成之前完成。接收机将阻塞总线(SDA由接收机保持低),直到主控系统在SCL线上产生一个时钟脉冲 |
2.4 I2C总线事件:从接收端接收一个字节——一旦接收端被寻址并且接收端已经确认,如果地址中的R/W位被设置为REID(设置为'1'),就可以从接收端接收一个字节。该协议的语法与向接收端发送字节相同,只是现在不允许主服务器接触SDA行。在SCL线上发送一个字节所需的8个时钟脉冲之前,主机释放SDA线。现在由接球员控制这条线。如果它想发送一个“1”,这条线就会变高;如果接收方想发送一个“0”,这条线就会保持低。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1256-g003.gif) |
主机所要做的就是在SCL线(2)上生成上升边,在SDA线(3)上读取电平,在SCL线(4)上生成下降边。在SCL高的时候,接收器不会改变数据。(否则可能会无意中生成Start或Stop。)在(1)和(5)期间,接收方可以改变SDA线路的状态。总的来说,这个序列必须执行8次才能完成数据字节。字节总是先通过MSB传输。读取的所有字节的含义取决于接收方。没有所谓的“普遍地位登记册”。您需要查阅被寻址的接收机的数据表,以了解所传输的任何字节中每一位的含义。 |
工作相关理论 |
I2C协议为级别敏感协议。当SCL较高时,数据必须稳定。除两种情况外,只有SCL较低时SDA线路的状态才会发生变化。例外有特殊的意义。从1到0的转换表示传输的开始,被称为开始条件。0到1的转换表示传输的结束,称为停止条件。数据以字节为单位传输,最重要的位先发送。字节传输需要9个时钟脉冲。一个字节的位的传输需要8个脉冲,第9个用于确认。在启动和停止条件之间,可以传输不受限制的字节数。 The communication in between the devices is very simple but before interfacing Master as well as Slave checks some condition of follows the condition only the device is being interface. The interfacing need several condition like SATRT1,ACK2,Device Id3,Register location address4, Register data5 and finally the STOP6. After a start condition, the byte containing the slave address (or part of the address, when 8-bit addressing is used) and a data direction bit is always sent first. A start condition can be repeated without first generating a stop condition. This is used to change transfer direction or to address another slave. If there is no acknowledgment from the addressed slave (because it is not connected or performs some internal operation), the master can abort the transfer. Next, i f the slave is being written to, it must acknowledge each byte received. Lack of acknowledgment indicates that it cannot accept data. While reading from the slave, the master is also obliged to acknowledge each byte, except the last byte. The master can communicate with the slave according to several scenarios called transfer formats. |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1256-g004.gif) |
从SDA线开始,SDA线的位置首先从高到低表示1到0,在一些Pico之后,SCL线的位置从高到低表示1到0。它是指FPGA向slave发送启动信号,表明主(FPGA)已准备好进行进一步通信。 |
ACK-当主设备或从设备发送的每一个字节都可以被其他设备发送一个ACK信号后,ACK信号意味着无论该设备正在发送什么,其他设备都可以正常接收到。 |
设备Id-设备Id是固定的,用于FPGA上可以接口的每个设备。多个系统的Id不能匹配。Id是8位长,可以一个接一个地串行传输。Id是8位长意味着总共256个设备将被接口。对于添加超过256个设备,位将增加。 |
寄存器地址-寄存器地址是8位长,它表示一个寄存器总共有256个位置可以被控制。每个单独的寄存器通过I2C协议正确地连接。 |
寄存器数据-寄存器数据也是8位长,这是帮助我们控制要控制的参数的值。 |
停止后Id、寄存器地址、寄存器数据FPGA正在发送停止信号。它表示完成了一个转换周期 |
3.1 Ist阶段过渡-过渡从clk线开始,大约100ps的时钟将提供给系统,通过强制值将按钮的位置设置为1,external_rst的位置将为1,过渡正在开始,但它是空白过渡。只有当external_rst的值被强制为0时才开始正确的转换,而强制该值时SDA行突然从High到Low意味着1到0,几分钟后SCL行也从High到Low意味着1到0。表示FPGA开始向所有接口slave发送start信号。当这个开始信号被slave收集时,开始发送ACK信号。FPGA接收ACK信号后,开始实际传输。通信采用串行通信技术,可对SCL线的每一个上升边进行数值变换。 |
FPGA接收到的ACK,一个Slave start发送设备Id,即40H[0100 0000],设备Id的每一位都依次交换,并且每个上升边的状态都会发生变化,如[Low-High-Low-Low-Low-Low-Low-Low - low - low]。在设备Id由slave发送并由FPGA接收器接收后发送ACK信号,在接收到ACK信号后,寄存器的地址已准备好发送,即3A[0011 1010]设备Id的每一位依次交换,并且每个上升边的状态将发生变化,如[Low- Low- High- High- High-Low - High-Low]。当寄存器正确地建立到FPGA时,接收机在这个从机开始发送数据后再次发送ACK信号,即16[00001]设备Id交换的每一位串行地一个接一个地交换数据,并且每个上升边的状态将发生变化,如[Low- Low-Low- High-Low- High- High-Low]。寄存器中的数据决定了要控制的参数,但设备Id和寄存器的地址是固定的。 |
公式为: |
PS_gain=1+ (PS<7:0> - [80])/[100];范围(0.5x ~ 1.5x)。 |
PS<7> -符号位。若“1”,PS信道增益增加;“0”增益减少。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1256-g005.gif) |
RTL描述 |
- I2C的RTL图如图所示,在ModelSim上验证了结果,实现了有效的高速通信链路并进行了验证。输入值可以强制输出3A16(0011,1010,0001,0110),5004(0101,0000,0000,0100),0E80(0000,1110,1000,0000),设备的Id是固定的,即40(0100,0000)十六进制。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1256-g006.gif) |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1256-t001.gif) |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1256-g007.gif) |
4.4 -与I2C通信的优势- fpga特别适合满足许多数据处理应用的要求。fpga具有以下特点,使其非常吸引人 |
高性能:一个FPGA就能实现高清处理。 |
灵活性:fpga提供了快速升级架构以满足不断变化的需求的能力,而可伸缩性允许在低成本和高性能系统中使用fpga。 |
低开发成本:数据开发套件最低为1095美元,包括使用fpga开发数据系统所需的软件工具。过时证明:多年来,fpga在船舶产品上拥有非常大的客户基础。此外,FPGA设计很容易从一个流程节点迁移到下一个。 |
计划降低生产成本:提供几种方法来帮助计划产品从较低的单位产量到更高的产量 |
结论 |
理想的I2C监控体系结构将具有以下特征:高性能、灵活性、易升级性、低开发成本,以及随着应用程序的成熟和容量的增加而向更低成本迁移的路径。与功能丰富的数据和图像处理套件、IP数据参考设计以及合作伙伴的压缩解决方案相结合,为数据系统设计人员提供了生产此类系统所需的所有关键构建模块。 |
参考文献 |
- I2C总线规范2.1版,2000年1月,飞利浦半导体。
- 弗雷德·伊迪,《微控制器的网络和互联网络》,Elsevier, 2004。
- J.巴斯克,VHDL合成入门,BS出版物第二版,2003年,第132页。
- TMS470R1x集成电路(I2C)参考指南,德州仪器(SPNU223)。
- Design Ware Inter-IC (I2C) VIP数据手册,版本1.10a, 2005年2月18日,简介。图6。设备流程概述
- P.Venkateswaran, A. Saynal, S. Das, S.K Saynal和R. Nandi,“基于FPGA的高效接口模型,基于I2C协议的无标度计算机网络”第15 .intl“会议计算,CIC 2006,计算科学研究:特殊问题-计算机科学与工程进展。, ISSN 1870 - 406,墨西哥国立理工学院,Vol.23, pp 191 -198,2006年11月21-24日
- Xavier Righetti“基于i2c的模块化可穿戴架构的主张”IEEE-2010
- Jan O. Borchers, Wolfgang Samminger, Max M¨uhlh¨auser“个人乐团:指挥音频/视频音乐录音”IEEE-2002。
- A.R.M. Khan, a.p.a thakare, S.M.Gulhane,基于fpga的Altera DE2板编解码器声音提取控制器设计,《国际科学与工程研究杂志》,
- A.K. Oudjida, M.L. Berrandjia, R. Tiar, a . Liacha, K. Tahraoui“I2C和SPI协议的FPGA实现”比较研究”IEEE 2009
- J.M. irazabel和S. Blozis,飞利浦半导体,“I2CManual, Application Note, ref. AN10216-0”2003年3月24日。
- F. Leens,“I2C和SPI协议介绍”,IEEE仪器与测量杂志,第8-13页,2009年2月。
- L. Bacciarelli等人,“AMBA总线上软件可编程I2C/SPI IP的设计、测试和原型设计”,博士学位会议
|