基于GAL的I2C总线时序模拟
D1的数据将锁存在SDA和SCL上,而在下一个对相同外设地址的外设写周期到来之前是不变的。这就使得I2C总线的时序可以在D0和D1两根数据线上通过间隔输出数据的方式获得。
通过分析图1给出的数据传输格式,可以把传送的数据流划分为三种传送状态,即传送起始信号、传送终止信号和传送一个字节(后面带一个应答位)。不同的数据过程只是写入的数据字节数目不同。只要模拟软件能实现上述三种传送状态,就可以模拟出任何的主控器写操作过程。因此可以用下列子程序分别实现上述三种传送状态。
(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的功能与灵活性对于一般的数字电路系统是非常合适的,它不但能有效地提高系统的可靠性和保密性,而且可以降低成本,提高系统的灵活性。
- 智能手表为何能引领新时尚?N个理由(02-26)
- 虚拟现实碰撞医疗健康,创造新健康管理模式(02-04)
- Galaxy S4的AMOLED屏幕技术详解(05-19)
- 通用阵列逻辑GAL器件优缺点分析(09-12)
- 简单PLD有哪些?(09-12)
- 揭秘简单PLD芯片的破解方法(09-12)