基于GAL的I2C总线时序模拟

发布者:国宝集团最新更新时间:2012-09-08 来源: autooo关键字:GAL  I2C总线  时序模拟 手机看文章 扫描二维码
随时随地手机看文章

FI1200 MK2系列电视信号前端处理器是飞利浦公司专为计算机多媒体环境下的射频应用而设计的。FI1256 MK2是该系列中的一个型号,它体积小,结构紧凑,性能稳定,可直接从射频信号解调出视频信号和音频信号,且只需单一5V电源,因而可在图文电视接收、有线电视信号自动监测等许多场合得到广泛的应用。笔者曾用它开发出图文电视接收卡、电视信号检测系统等多种设备。

FI1256 MK2可通过I2C串行总线接口进行编程控制。当使用单片机进行编程控制时,带有I2C接口的单片机可以与FI1256 MK2直接连接,没有I2C接口的单片机可以用I/O口线模拟I2C总线的时序。但是FI1256 MK2在计算机扩展卡中使用时,为了节省成本,通过计算机的总线直接对其进行编程控制时,就需要用计算机的总线模拟出I2C总线的时序。本文给出了用可编程逻辑器件GAL配合ISA总线模拟I2C总线时序来对FI1256 MK2进行控制的方法。该方法与PCI总线进行模拟的方法相类似。

1 I2C总线操作方式

I2C总线是被广泛应用的串行多主控器总线,它可以让多个有控制总线能力的器件连接到总线上。I2C总线通过串行数据(SDA)和串行时钟(SCL)两条线使连接在该总线上的器件进行数据传输,每个器件的识别由一特定地址确定。除了作为发送器和接收器外,该器件还可以被设定为主控器和被控器。主控器用于启动总线上的数据发送,并产生数据传输所需的时钟信号,其他被寻址的器件均认为是被控器。SDA线和SCL线都是双向传输线,它们各通过一个上拉电阻连接到正电源。当总线处于空闲状态时,两条线均处于高电平。连接到总线的器件输出级必须是集电极开路或漏极开路,以用来产生“线与”功能便于多个器件的接入。在标准方式下,I2C总线上的数据传输速率可达100kbps,在快速方式下则可达到400kbps。连接到总线上的器件数量只受400pF的总线电容的限制。进行数据传输时,SDA线上的数据在SCL为高电平期间必须是稳定的,只有在SCL线上的时钟信号为低时,数据线上的状态才可以改变。当SCL线保持高电平时,通常把SDA线上由高到低和由低到高的电平变化分别定义为开始条件和停止条件。主控器启动数据传输时,总是先给出开始条件,然后传输若干字节的数据,最后给出停止条件以结束一次数据传输过程。图1是带有开始和停止条件的只传输一个字节的总线时序。


2 模拟I2C总线时序

可编程逻辑器件是近二十年发展起来的专用集成电路的一个分支,是设计新型数字系统的理想器件。它不仅速度快,集成度高,而且具有用户可定义的逻辑功能,有的还可以加密,并可以重复编程,因此,它不仅能适应各种应用需要,而且可以大大简化硬件系统,降低成本,提高系统的灵活性、可靠性和保密性,所以,近年来得到了迅速的发展。在各种可编程逻辑器件中,以CPLD功能最为强大,但价格较高,使用也较为复杂。而GAL不但有相当强的功能和足够的灵活性,而且编程控制容易(可使用普通的编程器),价格很低,接近通用集成电路,故在数字逻辑不是非常复杂的系统中使用GAL是非常合适的。

用计算机的ISA总线对FI1256 MK2进行编程控制时,可以将FI1256 MK2作为一个外设,然后用两根数据线模拟SCL和SDA。需要注意的是:由于计算机速度高,总线周期短,达不到I2C总线的定时要求,因此要在总线周期过后进行延时,这样总线上出现的高阻状态或与其它设备的通信数据就会破坏I2C的时序,所以应将SDA和SCL的状态锁存,以满足I2C总线的定时要求。图2是用GAL实现ISA与I2C接口电路的设计方案。由于对FI1256 MK2的操作一般只是写入编程控制字节,因此,为简单起见,该电路只用来实现将计算机作为主控器的写操作时序。

图2中,拨码开关K用以设定作为计算机外设的FI1256 MK2的地址,U1用于计算机访问外设时地址的译码,U2则用于实现用ISA总线的两条数据线模拟I2C总线时序。下面给出两片GAL的逻辑方程(以FAST-MAP格式书写),并对照方程简要说明电路所实现的功能。

通过以上方程可使U1完成地址的译码功能。当ISA总线上出现的外设地址与拨码开关设定的地址相匹配时,在其地址有效输出端ADDR上将得到高电平。由于GAL最多只能有8个或项,所以方程中使用了ADD1和ADD2两个中间运算结果,他们被当作反馈信号在GAL内部重新引到输入端。使用AEN信号是为了在DMA周期内屏蔽总线上出现的地址。

U2的时钟信号是由地址ADDR和外设写信号IOW的引入是为了消除总线上出现访问内存的信号,同时利用其上升沿锁存数据。SCL和SDA可分别用数据线D0和D1模拟。当一个外设写周期过后,D0和D1的数据将锁存在SDA和SCL上,而在下一个对相同外设地址的外设写周期到来之前是不变的。这就使得I2C总线的时序可以在D0和D1两根数据线上通过间隔输出数据的方式获得。

节通过分析图1给出的数据传输格式,可以把传送的数据流划分为三种传送状态,即传送起始信号、传送终止信号和传送一个字节(后面带一个应答位)。不同的数据过程只是写入的数据字节数目不同。只要模拟软件能实现上述三种传送状态,就可以模拟出任何的主控器写操作过程。因此可以用下列子程序分别实现上述三种传送状态。 [page]

(1)字节传送子程序

由于SCL和SDA是用D1和D0模拟的,所以,只要往设定的I/O地址传送相应的数据就可以模拟传送不同的数据字节。为了保证数据的可靠传输,I2C总线规范对总线上的时序作了严格的规定。实验证明,ISA总线上信号的上升沿和下降沿都在10ns以内,完全可以满足I2C总线对上升沿与下降沿的要求,所以不需考虑信号的上升与下降时间,而只需考虑信号的建立和保持所需的时间即可。

根据对I2C的定时要求,可以在SCL低电平的中点将信号进行分割,并把一个字节数据分为8个比特来分别进行传送(传送0和1分别用两个子程序实现),从而使SDA线上的数据变化总是处在SCL低电平的中点。图3所示是传送一比特数据的定时时序图。

由于在对FI1256 MK2的操作过程对实时性要求不是太高,所以可以使传送一比特数据的三个状态都持续5.0μs,这样,就可以满足所有的定时要求。把图3中的两个定时图进行组合即可传送任意的数据字节。在每个数据字节的8比特数据后,都会在SCL上送出一个时钟周期而让SDA保持高电平,以使FI1256 MK2送出应答信号。应答信号定时图与图3(a)相同。


(2)起始信号和终止信号模拟子程序

起始信号和终止信号实际上是SCL为高电平期间在SDA上出现一个由高到低或由低到高的变化。起始信号和终止信号的定时图如图4所示。操作时,往D1和D0送相应的数据即可模拟此定时图,从而实现I2C总线传输的起始和终止。

3 FI1256 MK2的功能与控制

FI1256 MK2在输入75Ω射频信号时可以直接解调出峰-峰值为1V的视频信号和声音信号(同时给出第二伴音中频信号)。输入射频信号可从49.75MHz无缝覆盖至863.25MHz,其中包括所有增补频道。其调谐和波段切换均可通过内置的I2C总线接口进行。由于内建了直流-直流变换器,故只需单一5V电源即可,由此可见,FI1256 MK2是真正的5V器件,简化了外围电路的设计。

对FI1256 MK2的控制有读和写两种模式。写模式可将调谐信息通过I2C总线写入,而读模式则可以读出内部锁定状态。一般只使用写模式,写模式时需写入5个字节,可用于设置地址、锁相环、调谐速度、调谐步长、工作模式、波段和编程频率。写模式下的编程方式有以下四种:

其中,前两种用于在所有频道间调谐,后两种用于在同波段内的频道间调谐。各种编程方式的不同点在于写入字节数的区别,只要按照I2C时序的要求将给定的字节依次写入即可实现编程控制。

可编程逻辑器件的应用是数字电路的设计方向。实际应用证明,GAL的功能与灵活性对于一般的数字电路系统是非常合适的,它不但能有效地提高系统的可靠性和保密性,而且可以降低成本,提高系统的灵活性。

关键字:GAL  I2C总线  时序模拟 引用地址:基于GAL的I2C总线时序模拟

上一篇:基于USB总线和Aduc831单片机的数据采集系统的设计
下一篇:基于I2C总线接口的AD芯片PCF8591设计

推荐阅读最新更新时间:2024-05-02 22:18

STM32中I2C总线上数据的读、写。
/** * @brief 从I2C1总线上的某一器件的某一起始地址中读取一定字节的数据到数组中 * @param driver_Addr:I2C器件地址 * @param start_Addr:起始字节地址 * @param number_Bytes:要读取的字节数量(小于一页) * @param read_Buffer:存放读取数据的数组指针 * @retval 是否读取成功 */ u8 I2C1_Read_NBytes(u8 driver_Addr, u8 start_Addr, u8 number_Bytes, u8 *read_Buffer) { uint8_t read_Num; u8 I2C_Tim
[单片机]
I2C总线浅谈之(四)--STM8的IIC驱动文件示例
本示例提供STM8S103F核心板的IIC驱动文件源代码,亲测没有任何问题,博主使用来驱动AT24C256和电子罗盘MMC5883MA,IIC通信速率100kHz,可以调整时序延时时间。 直接贴源码: IIC.h #ifndef _IIC_H #define _IIC_H #include iostm8s103F3.h #include type_def.h #define IIC_SCL PC_ODR_ODR5 //设置SCL为GPIO--PC5 #define IIC_SDA PC_ODR_ODR6 //设置SDA为GPIO--PC6 #define READ_SDA
[单片机]
I2C总线协议的一些理解
1、无论读与写,都是在时钟线为低时把数据送到数据总线上,在高时采样数据,把数据锁存到内部,所以读之前先把时钟线拉低,做好准备(数据线为高表示释放数据线),为接下来读数据做好准备。也就是时钟信号为低时,数据线上的高低电平才允许变化,时钟信号为高时,数据总线上的数据必须保持稳定。 2、起始信号产生后,总线为被占用状态(SDA拉低);终止信号产生后,总线为空闲状态(SCL被释放了)。 3、接收器件收到一个完整的数据字节后有可能需要完成一些其它工作,如处理中断,可能无法立刻接收下一字节,这时从机将SCL拉成低电平,从而使主机处于等待状态。直到从机准备好接收下一字节,再释放SCL线使之为高,从而数据传送可继续进行。数据线上的数据是在
[单片机]
I2C总线在单片机上的实现
    摘要: 本文介绍了I2C总线的性能、特点以及数据传输和结构,并详细分析了它的应用示例,给出了它在单片机上的具体实现和相应的汇编程序。     关键词: I2C总线 单片机 随着大规模集成电路技术的发展,把CPU和一个单独工作系统所必需的ROM、RAM、I/O端口、A/D、D/A等外围电路集成在一个单片内而制成的单片机或微控制器愈来愈方便。目前,世界上许多公司生产单片机,品种很多。其中包括各种字长的CPU,各种容量的ROM、RAM以及功能各异的I/O接口电路等等,但是,单片机的品种规格仍然有限,所以只能选用某种单片机来进行扩展。扩展的方法有两种:一种是并行总线,另一种是串行总线。由于串行总线的连线少,结
[应用]
MAX517与51单片机的I2C总线数据通信
1 I2C总线的特点及基本通信协议 I2C总线是Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线?串行数据线和串行时钟线?即可使连接于总线上的器件之间实现信息传送,同时可通过对器件进行软件寻址,而不是对硬件进行片选寻址的方式来节约通信线数目,从而减少了硬件所占空间。因为总线已集成在片内,所以大大缩短了设计时间,此外,在从系统中移去或增加集成电路芯片时,对总线上的其它集成芯片没有影响。 1.1 I2C总线的主要特点 I2C总线通常由两根线构成:串行数据线(SDA)和串行时钟线(SCL);总线上所有的器件都可以通过软件寻址,并保持简单的主从关系,其中主器件既可以作为发送器,又可以作为接收器;
[单片机]
MAX517与51单片机的<font color='red'>I2C总线</font>数据通信
I2C总线中上拉电阻、电源电压、总线电容三者之间的函数关
在我们的实际设计中,需要清楚I2C的总线的两个特征: 1、串行数据SDA和串行时钟SCL线都是双向线路,通过一个电流源或上拉电阻Rp 连接到正的电源电压+VDD,当总线空闲时这两条线路都是高电平。连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。I2C 总线上数据的传输位速率,在标准模式下可达100kbit/s,快速模式(F/S)下可达400kbit/s,高速模式(Hs)下可达3.4Mbit /s。 2、连接到相同总线的IC数量只受到总线的最大电容400pF限制。如果总线线路的负载电容升高,位速率将逐渐下降。 总线规定使用非标准电源电压,不遵从I2C 总线系统电平规定的器件,必须将输入电平连接到有上拉电阻Rp
[嵌入式]
虚拟I2C总线串行显示电路介绍
本文主要介绍了虚拟I2C总线串行显示电路,其中包括SAA1064引脚功能介绍、硬件电路设计、片内可编程功能以及程序举例。    1.SAA1064引脚功能   ① VDD、VEE:电源、接地端。电源4.5~15V;   ② P1~P16:段驱动输出端。分为两个8位口:   P1~P8;P9~P16。P8、P16为高位。口锁存器具有反相功能,置1时,端口输出0。   ③ MX1、MX2:位码驱动端。静态显示驱动时,一片SAA1064可驱动二位LED数码管;动态显示驱动时,按图9-10连接方式,一片SAA1064可驱动四位LED数码管;   ④ SDA、SCL:I2C总线数据端、时钟端;   ⑤ CEXT:时钟振荡器外接
[模拟电子]
虚拟<font color='red'>I2C总线</font>串行显示电路介绍
I2C总线实现TMS320VC5509A引导装载设计
1 引言 DSP芯片的Bootloader程序用于上电时将用户程序从外部非易失性、慢速存储器或外部控制器中装载到片内高速RAM中,保证用户程序在DSP内部高速运行,TI公司的C55x系列DSP芯片提供多种装载模式,主要包括HPI引导装载、串行E2ROM引导装载、并行引导装载、串行口引导装载、I2C总线E2ROM引导装载等,通常使用的是并行引导装载模式,该方式引导速度快实现简单,但是体积和功耗也较大,随着串行接口存储设备容量的提高,串行引导方式体积小、功耗低的优势便显现出来了,所以使用ARM的串行接口对DSP进行引导装载,不仅能省去存储芯片,而且利用ARM的ISP功能,可以根据需要改变用户程序,有利于系统的维护和升级。
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved