首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | 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总线的设计 | |||||
收集整理:佚名 来源:本站整理 时间: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 startshiftack signal my_states states 下面给出部分进程的源代码以供参考。 2.2.1开始信号的产生 PROCESSclk 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<=MSR6 downto 0&txtag txtag<=‘0’ if COUNT=“1000” then my_states<=ack TACK<=‘1’ ——TACK为应答标志位 else SDA<=MSR7 my_states<=shift TACK<=‘0’ end if end if 一般情况下,I2C总线传输的数据要由外部ROM或其它专门的数据存储区来存储,但在数据相对固定且数据量不是很大的情况下,可以将初始化的数据写在程序中,这样可减少频繁的数据交换,简化操作。AD9883的初始化数据就属于这种情况,可以通过检测应答信号来改变输入的值。程序如下: PROCESSclk ——数据输入 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总线的功能。 |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |