摘要:介绍采用ALTERA公司的可编程器件,实现I2C总线的通信接口的基本原理;给出部分VHDL语言描述。该通信接口号专用的接口芯片相比,具有使用灵活,系统配置方便的特点。
关键词:I2C总线 CPLD VHDL
I2C总线是PHILIPS公司开发的一种简单、双向二线制同步串行总线。它只需要两根线(串行时钟线和串行数据线)即可在连接于总线上的器件之间传送信息。该总线是具备多主机系统所需要的包括裁决和高低速设备同步等功能的高性能串行总线,应用极为广泛。
目前,虽然市场上有专用I2C总线接口芯片,但是地址可选范围小,性能指标固定,功能单一,而且使用不方便。针对I2C总线的电气特性及其通信协议,采用ALTERA公司的FLEX10K系列ISP器件EPF10K10LC84-3,可以方便地实现I2C总线的通信接口,且具有高速、易调试、可以灵活地实现在线配置等优点,同时大大减少了系统的开发周期。
1 I2C总线的数据传输规范
I2C总线主从机之间的一次数据传送称为一帧,由启动信号、地址码、若干数据字节、应答位以停止信号组成。通信启动时,主机发送一个启动信号(当SCL线上是高电平时,SDA线产生一个下降沿)、从机的地址码和读写信号及8位读写数据;通信停止时,主机发送一个停止信号(当SCL线上为高电平时,SDA线上产生一个上升沿)。在数据传送过程中,当SCL线上为高电平时,必须保证SDA线上的数据稳定;传送一个字节的数据,必须由接收机发一个应答信号。总线的传输码速率为100Kb/s(标准)~400Kb/s(高速)。采用+5V电源时,输入电平规定为VILmax=1.5V,VIHmin=3V;采用宽电源电压时,电闰规定为VILmax=1.5VDD,VIHmin=3VDD。
I2C总线的通信过程如图1所示。
2 ISP的逻辑实现
基于上述传输规范,为完成I2C总线的数据发送与接收,ISP芯片应完成的逻辑功能如图2所示。可控时钟通过频选,控制获得100kHz、200kHz、300kHz、400kHz的时钟频率;同时在器件退出总线竞争后,将时钟线置高电平。
(1)通信的启动与停止
在主机方式下接收数据时,器件必须通过启动信号生成器送出一个启动信号,然后,发送从机的地址信号和读写信号,才能开始在总线上发送数据。该过程由控制寄存器启动。VHDL描述为:
PPROCEE(WR,CS)
——WR IS CPU WRITE SIGNAL
——CS IS THIS CHIP's SELECT SIGNAL
ADDRS:='0'
IF(Ctrreg(0)='1'AND Ctrreg(3)='1'AND SCL1='1' THEN
——Ctrreg为控制寄存器
CLK1COUNT:='0';
ADA1:='1';
IF(CLK1'EVENT AND CLK='0'THEN
IF (CLK1COUNT='3'THEN
SDA1:='0';
ADDRS:='1';
Ctrreg(3):='0';
CSTA='1';
ELSE
CLK1COUNT:=CLK1COUNT+1;
END IF;
END IF;
END IF;
IF(ADDRS='1'AND SCL1'EVENT AND SCL1='1')
THEN
·
·
·——将数据寄存器中的数据及WR信号移位发出(略)
·
·
·
END IF;
END PROCESS;
当一次通信结束时,主机要发送停止信号。读过程同样由控制寄存器控制。当控制字的第二位为“1”时,芯片产生停止信号。VHDL描述与启动类似。
(2)发送数据
主机方式下完成启动和地址信号发送后即开始发送数据。发送数据时并串转换器在SCL的下降沿移位,保证了SCL高电平时SDA上的数据稳定。发送的进程由WR信号和从机的应答信号启动。
当该芯片在总线竞争失败的情况下,由处理器将芯片转为从机的工作方式时,处理器向地址检测电路发送该芯片在系统中的地址。只有在接收到的地址信息与该芯片所设的地址相同时才发出应答信号开始通信。每发送一个字节即将SDA拉高,等待接收机的应答信号,准备下一个数据。
在主机方式下完成通信启动和地址信号发送后,开始准备接收数据。在每接收一个字节后要发出应答信号,每接收一个字节就产生一个负脉冲作为中断请求信号输出给处理器。若此时系统忙,则拉低SCL电平迫使发送机进入等待状态。从机方式下的接收与主机的一样。
VHDL描述为:
PROCESS(SDA1)
SACK:='0';
FULL1:='0';
STP:='0';
INTQ:='1';
IF(CSTA='1'AND ADDOK='1')
THEN
IF(SCL1'EVENT AND SCL1='0')
THEN
······——接收数据,串入并出移位(略)
FULL1:='1';
END IF;
END IF;
IF(FULL1='1')THEN
IF(RD'EVENT AND RD='1'AND SCL1'EVENT AND SCL1='0'AND BUSY='0')THEN
SDA1:='0';
FULL1:='0';
INTQ:='0';
ELSE
SDA1:='1';
IF(CLK1'EVENT AND CLK='0'AND FULL1='0')THEN
IF(CLK1CONT='20')THEN
INTQ:='1';
CLK1COUNT:='0';
ELSE
CLK1COUNT:=CLK1COUNT+1;
END IF;
END IF;
IF(SLAVE='1'AND SCL='1'AND SDA'EVENT AND SDA'1')THEN
STP:='1';
CSTA:='0';
END IF;
END IF;
END PROCESS;
(4)总线仲裁
在通信过程中,芯处在发送的同时接收总线上的数据,将该数据与已发送的数据进行比较。若不相同,则给状态发生器的SLAVE置位,表示该主机退出竞争。通过处理器给控制寄存器发送控制字可以让芯片转入从机工作方式。这时启动地址检测,禁止SCL的发送。当一次通信结束后,再将状态生成器的END置位。此时处理器可以再次将芯片设置为主机方式。
(5)控制寄存器与状态生成器
控制寄存器主要是定义芯片的工作状态,其各位的定义为:
BUSY | CLKEN | CLKS2 | CLKS1 | STA | STP | M/S |
BUSY:若该位为“1”,主机在作为接收机时,不发应答信号。
STA:启动信号位。
STP:停止信号位。
M/S:主从机位,用于选择芯片工作状态(主机还是从机)。
CLKS1、CLKS2:频选控制位。
CLKEN:SCL使能位,该位为1时SCL置高电平。
状态生成器可以生成工作状态信号(中断、I2C总线竞争情况、从机方式时通信开始与结束)供处理器查询处理。
3 参数配置
该芯片可以配置为从100Kb/s(标准)~400Kb/s(高速)的任何传送速度,以满足不同的需要。只需在VHDL描述的构造体中的指明配置的参数即可,非常方便。
结束语
本设计中只使用了一片可编程芯片即完成了I2C总线接口的芯片功能。由于采用VHDL-93语言进行设计,具有良好的可移动植性,可用于其它ISP厂家的产品中。通过ByteBlast下载线可以在线改变其功能,体现了ISP器件的优越性。
上一篇:新型移频信号发送系统设计方案
下一篇:一种基于反馈的信元交换控制系统
- 欧洲三大芯片巨头,重新审视供应链
- 一场IC设计业盛宴!10场论坛 200位演讲嘉宾,300+展商亮相2万平米专业展会!
- 富昌电子于杭州举办技术日活动,聚焦新能源“芯”机遇
- 消息称铠侠最快明天获上市批准,市值有望达 7500 亿日元
- 美国政府敲定对格芯 15 亿美元《CHIPS》法案补贴,支持后者提升在美产能
- SK 海力士宣布量产全球最高的 321 层 1Tb TLC 4D NAND 闪存,计划 2025 上半年对外出货
- 三星电子 NRD-K 半导体研发综合体进机,将导入 ASML High NA EUV 光刻设备
- 芯片大混战将启:高通、联发科涉足笔记本,AMD 被曝入局手机
- Exynos 2600 芯片成关键,消息称三星将打响 2nm 芯片反击战
- ADI & 世健 新基建系列第三期——5G 仪器仪表和测试 答题赢好礼!
- 看视频,了解泰克高性价比频谱分析仪,填卷赢好礼!
- 【社区大讲堂】顶嵌与你一起:动手做嵌入式产品
- 有奖直播|ADI 惯性MEMS应用那些事
- 是德科技“印象测试”微视频征集令
- 有奖直播:基于GaN 的高频(1.2MHz)高效率 1.6kW 高密度临界模式 (CrM) 图腾柱功率因数校正 (PFC)转换器的应用介绍
- 国产FPGA有奖直播:安路全新FPSoC产品SF1系列(FPGA+MCU),Demo板介绍和案例解析
- 有奖直播:借助Maxim的模拟技术优化设计
- 有奖直播:远近皆宜的无线连接方案 3月25日(周四)上午10:00 邀您观看!