首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心理工论文电子通信
   基于CPLD的系统中I2C总线的设计      ★★★ 【字体: 】  
基于CPLD的系统中I2C总线的设计
收集整理:佚名    来源:本站整理  时间:2009-01-10 22:48:40   点击数:[]    

55#接电源,则SLAW=“10011001”;Base Address=“00000001”,Data0~Data18是依据实际需要写入的初始化数据。

2.2 IP核程序的编写

整个程序用VHDL语言编制,SCL输出时钟的设计是基于CLK输入时钟的64分频的。程序由三个状态组成:开始(START)、转换(SHIFT)和应答(ACK)。状态定义如下:

type states is startshiftack

signal my_states states

下面给出部分进程的源代码以供参考。

2.2.1开始信号的产生

PROCESSclk

if clk’event and clk=‘1’ then

TWCR<=DATAIN

SCL<=‘1’

else

TWCR<=others=>‘0’

end if

if TWCR=“10000000” then ——比较寄存器TWCR的开始

值设置(由用户决定)

STRB<=‘1’

end if

if STRB=‘1’ then ——开始条件

INT<=INT+“000001” ——INT为时钟脉冲计数

if INT<=“011000” then ——产生SDA的下降沿

SDA<=‘1’

else

SDA<=‘0’

end if

if INT>=“011110” then ——STRB归0,保证只产生

一次开始信号

STRB <=‘0’

INT<=“000000”

end if

end if

等所有的初始化数据传输完毕后即产生停止信号,过程与上面相类似,在此省略。

2.2.2 数据转换过程

数据转换过程采用移位传输,传输8位之后即进入应答状态。

when shift=>

if cnt=“010000” then ——cnt为clk脉冲计数,由

实际的时钟频率决定cnt的值

COUNT<=COUNT+“0001” ——COUNT为数据移位个

数计数MSR为移位寄存器

MSR<=MSR6 downto 0&txtag

txtag<=‘0’

if COUNT=“1000” then

my_states<=ack

TACK<=‘1’ ——TACK为应答标志位

else

SDA<=MSR7

my_states<=shift

TACK<=‘0’

end if

end if

图4 数据传输仿真波形 图5 SDA非应答时的仿真波形

    2.2.3 数据输入

一般情况下,I2C总线传输的数据要由外部ROM或其它专门的数据存储区来存储,但在数据相对固定且数据量不是很大的情况下,可以将初始化的数据写在程序中,这样可减少频繁的数据交换,简化操作。AD9883的初始化数据就属于这种情况,可以通过检测应答信号来改变输入的值。程序如下:

PROCESSclk ——数据输入

if clk’event and clk=‘1’ then

CASE ackint IS ——ackint为应答计数,每应答

一次,输入改变一次

when “00000”=> DATAIN<=“10000000”

when “00001”=> DATAIN<=“01010010”

when “00010”=> DATAIN<=“11010000”

……

when “10010”=> DATAIN<=“00000000”

when “10011”=> DATAIN<=“00000000”

when others=> DATAIN<=“ZZZZZZZZ”

END CASE

end if

2.3 仿真结果

把自主开发的IP核置于MAX+PLUS II 10.0开发环境下,选用EPM3128ATC100-10器件,经过编译、调试与仿真,证明该程序符合设计要求。图4是模拟产生开始信号并传输两组二进制数据“10011001”和“10101010”(十进制表示为153和170)的仿真波形。图5是传输数据“10011001”后没有应答时的仿真结果,此时总线处于暂停状态。

仿真完成后,通过编程电缆将pof文件下载到实际电路的EPM3128ATC100-10中,然后对AD9883进行初始化,结果工作正常,这进一步验证了采用该自主开发的IP核完全可满足I2C总线的时序要求,能实现I2C总线的功能。



上一页  [1] [2] 


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:数字视频信号的长线传输

  • 下一篇文章:基于FPGA/CPLD和USB技术的无损图像采集卡
  • 返回上一页】【打 印】【关闭窗口
    中查找“基于CPLD的系统中I2C总线的设计”更多相关内容 5VAR论文频道
    中查找“基于CPLD的系统中I2C总线的设计”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››嵌入式系统的通信规约管理平台设计...
  • ››一种基于七号信令的局间话单采集系...
  • ››对于变频器的制动技术分析
  • ››电子文件管理元数据宏观结构多维分...
  • ››浅论卫星电视接收机的常见故障的检...
  • ››信息时代网络用户信息检索焦虑的心...
  • ››论GIS在高校房产管理中的实际应用
  • ››关于电力通信发展战略的思考 金李莎...
  • ››2G、3G切换精细化优化分析思路探讨...
  • ››光纤自动化生产的需求与时机
  • ››基于CPLD的高压电力线FSKMODEM设计...
  • ››基于CPLD的三相多波形函数发生器设...
  • ››基于CPLD的系统中I2C总线的设计
  • ››基于CPLD/FPGA的出租车计费器
  • ››基于CPLD/FPGA的半整数分频器的设计...
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .