I2C器件接口IP核的CPLD设计
[11-20 16:13:28] 来源:http://www.88dzw.com FPGA 阅读:8268次
文章摘要:以下程序中,Cmd_reg2为发送允许暂存位;Sh_reg[]为数据锁存,通过左移,最高位数据Sh_reg7为当前将发送数据,存入SDA_tmp 。通过图 3对照程序,可以看到发送一个利用状态机数据位的详细过程。程序清单如下:IF Cmd_reg2 THEN --若"发送允许",则将Sh_reg7作为当前发送位SDA_tmp = Sh_reg7;ELSESDA_tmp = VCC;END IF;St.clk = SysClk;St.ena = BaudGen;CASE St IS --控制传输8位数据的状态机WHEN t0 =>IF Cmd_reg2 OR Cmd_r
I2C器件接口IP核的CPLD设计,标签:fpga是什么,fpga教程,http://www.88dzw.com以下程序中,Cmd_reg2为发送允许暂存位;Sh_reg[]为数据锁存,通过左移,最高位数据Sh_reg7为当前将发送数据,存入SDA_tmp 。通过图 3对照程序,可以看到发送一个利用状态机数据位的详细过程。程序清单如下:
IF Cmd_reg2 THEN --若"发送允许",则将Sh_reg7作为当前发送位
SDA_tmp = Sh_reg7;
ELSE
SDA_tmp = VCC;
END IF;
St.clk = SysClk;
St.ena = BaudGen;
CASE St IS --控制传输8位数据的状态机
WHEN t0 =>
IF Cmd_reg2 OR Cmd_reg3 THEN
SDA = SDA_tmp; --开始传送数据
SCL = GND;
St = t1;
ELSE
St = t0;
END IF;
WHEN t1 =>
SCL = VCC;
SDA = SDA_tmp;
St = t1a;
WHEN t1a =>
SCL = VCC;
SDA = SDA_tmp;
St = t2;
WHEN t2 =>
Sh_reg[7..1] = Sh_reg[6..0]; --数据左移,取高位
Sh_reg[0] = GND;
Sh_reg[].ena = EXU;
SCL = GND;
SDA = SDA_tmp;
IF Bit[] == 7 THEN --若8位传完,则发应答位;否则继续
St = t3;
ELSE
St = t0;
END IF;
WHEN t3 => --发应答位
SDA =GND;
St = t4;
WHEN t4 =>
SDA = GND;
SCL = VCC;
St = t4a;
WHEN t4a =>
SDA = GND;
SCL = VCC;
St = t5;
WHEN t5 =>
SCL = GND;
St = t6;
WHEN t6 =>
SDA = GND;
FINISHED = VCC;
St = t0;
END CASE;
Bit[] = Bit[] + 1; ――--传输完一位,已传输位数加一
图 4为仿真结果。起始信号给出以后,传输2个8位数据:每个数据后跟一个应答位,在输送完第一个数据要求的情况下,暂停一段时间,再输送第二个数据;2个数据输完以后,主机发出停止输送要求,即给出停止信号。这些信号,在SDA和SCL上完全符合I2C的时序要求。要使总线传输速率达到改进后的规范,即400 kb/s,因为根据以上叙述,每发送1位数据需要4个时钟周期,所以所给的时钟为1600 kHz。图4中Execute为执行信号,即它为高电平时,输入数据DIN[7..0]有效;EXU为发送使能信号,只有当它为高电平时,方可输送串行数据到外围器件;Start为开始控制信号,用于发生起始信号;STOP用于告知总线数据传输结束,发生停止信号。
仿真以后,通过编程电缆将生成的pof文件用ISP(在系统编程)方式下载到FPGA板EPM7128SLC84-6,I/O口SDA和SCL挂上拉电阻,外接两片I2C器件SAA1064(LED显示I2C串入并出芯片)进行测试,结果CPLD利用该I2C的IP核,工作正常,可以按照要求显示。
参考文献
1 Altera. ALTERA DIGITAL LIBRARY 2000
2 何立民. 单片机高级教程. 北京:北京航空航天大学出版社, 2000
3 赵曙光. 可编程逻辑器件原理、开发与应用. 西安电子科技大学出版社, 2000
4 SAA1064 Product Specification Philps.
- 上一篇:基于SRAM的可重配置电路
《I2C器件接口IP核的CPLD设计》相关文章
- › TI 推出三款可配置的I2C器件
- › I2C器件接口IP核的CPLD设计
- 在百度中搜索相关文章:I2C器件接口IP核的CPLD设计
- 在谷歌中搜索相关文章:I2C器件接口IP核的CPLD设计
- 在soso中搜索相关文章:I2C器件接口IP核的CPLD设计
- 在搜狗中搜索相关文章:I2C器件接口IP核的CPLD设计