I2C器件接口IP核的CPLD设计

最新更新时间:2013-12-23来源: 互联网关键字:I2C器件  接口IP核  CPLD 手机看文章 扫描二维码
随时随地手机看文章

I2C器件接口IP核的CPLD设计

根据单片机I2C串行扩展的特点,在EDA软件MaxplusII的环境下,利用AHDL语言,建立IP核。此设计利用状态机实现,在给出设计的同时详细说明IP核的建立过程,并下载到芯片通过硬件试验验证。

关键词: 可编程逻辑器件 I2C串行扩展 IP核

  由于CPLD数字设计结构化的趋势,将出现针对CPLD不同层次的IP(Intellectual Property)核。各个IP核可重复利用,可大大提高设计能力和效率。国外各大公司都推出了专门的IP核,我国也迫切需要发展自己的IP核。本文针对I2C的主方式串行扩展通信的特点,详细给出设计过程和结果。

1 IP核简介

  IP核是指:将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器、SDRAM控制器、PCI接口等等设计成可修改参数的模块,让其它用户可以直接调用这些模块,以避免重复劳动。随着CPLD/FPGA的规模越来越大,设计越来越复杂,使用IP核是一个发展趋势。许多公司推荐使用现成的或经过测试的宏功能模块、IP核,用来增强已有的HDL的设计方法。当在进行复杂系统设计的时侯,这些宏功能模块、IP核无疑将大大地减少设计风险及缩短开发周期。使用这些宏功能模块、IP核,就会将更多的时间和精力放在改善及提高系统级的产品方面,而不需要重新开发现成的宏功能模块、IP核。我国IP核库的建设已相当迫切,它是集成电路产业发展的一个重要目标。

2 I2C串行通信特点简介

  Philips公司推出的I2C软、硬件协议十分巧妙,在单主方式的I2C总线系统中,总线上只有一个单片机,其余都是带I2C总线的外围器件。由于总线上只有一个单片机成为主节点,单片系统永远占据了总线,不会出现竞争,主节点不必有自己的节点地址。只要每个外围器件有自己的器件地址,两根I/O口线SCL(时钟线)和SDA(数据线)就可以虚拟I2C总线接口。I2C总线上的数据传送如图 1所示。总线上传送的每一帧数据均为1个字节。启动总线后,要求每传送1个字节后,对方回应一个应答位。在发送时,首先发送最高位。每次传送开始有起始信号,结束时有停止信号。在总线传送完1个字节后,可以通过对时钟线的控制,使传送暂停,这时可在应答信号后使SCL变低电平,控制总线暂停。 当主节点要求总线暂停时亦可采用同样的方法。图1是CPLD向外围I2C器件发送01010011 和01001001这两个数据的情况。

 

3 在MaxplusII环境下I2C串行扩展IP核的建立

  MaxplusII是美国Altera公司用于CPLD的EDA软件,内部有许多常用的宏单元,如计数器、四则运算、各类逻辑门乃至ROM、RAM等。这些宏单元内具体的参数都可以由用户来自行设定,这就是上面提到的IP核形式。它避免了重复劳动,提高了效率。以下将要设计的是下位机的IP核。

  MaxplusII的AHDL(Altera Hard ware Description Language)是Altera公司开发的完全集成于MaxplusII中的一种模块化高级语言,特别适合于描述复杂的组合逻辑、组运算、状态机和真值表。本文利用AHDL,直接生成IP核。

  设计的最终目标是生成如图 2所示的Symbol。通过输入数据来达到控制SDA和SCL的目的,将信号按要求的时序传送给I2C器件。

  设计思路是利用状态机实现时序。主要包括输入数据锁存、起始、数据传输、停止等状态机。通过状态机,在每一状态下确定下一状态SDA和SCL是高电平或者低电平,通过这种方式实现了I2C所需要的每一种时序。由于使用的是AHDL,这种状态机实现起来非常方便,程序简洁明了。由于篇幅限制,仅介绍数据传输的状态机。状态图如图3所示。

  以下程序中,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.

关键字:I2C器件  接口IP核  CPLD 编辑:神话 引用地址:I2C器件接口IP核的CPLD设计

上一篇:控温/恒温烙铁操作方法及使用说明
下一篇:读写24LCxx系列的EEPROM的实例程序

推荐阅读最新更新时间:2023-10-12 20:56

VHDL语言在FPGA/CPLD开发中的应用
1 引 言   EDA(电子设计自动化)关键技术之一是采用硬件描述语言(HDL)描述电路系统,包括电路结构、行为方式、逻辑功能以及接口。就FPGA和CPLD(分别是现场可编程门阵列和复杂可编程逻辑器件的简称)开发来说,比较流行的HDL主要有VHDL、ABEL-HDL、AHDL等,其中,VHDL对系统的行为描述能力最强,已被IEEE确定为标准HDL,并得到目前所有流行EDA软件的支持,进而成为系统设计领域最佳的硬件描述语言。用VHDL设计电路系统,可以把任何复杂的电路系统视为一个模块,对应一个设计实体。在VHDL层次化设计中,它所设计的模块既可以是顶层实体,又可以是较低层实体,但对不同层次模块应选择不同的描述方法(如行为描述或结构描述
[单片机]
VHDL语言在FPGA/<font color='red'>CPLD</font>开发中的应用
基于CPLD的数字滤波抗干扰电路设计
0 引言 红外密集度光电立靶测试系统是一种用于测量低伸弹道武器射击密集度的新型的测试系统,它既可用于金属弹丸的测试,又可测试非金属弹丸,具有反映灵敏、精度高而稳定、操作简单、容易维护等优点,已被许多靶场投入使用。 光电靶的基本原理是:当光幕内的光通量发生足够大的变化时,光电传感器会响应这种变化而产生电信号。这就是说,一些非弹丸物体在穿过光幕时也会使光幕内的光通量发生变化以使光电传感器产生电信号。从原理上讲。这种现象并非异常,而从测试来讲,则属于干扰。在具体靶场测试中,当干扰严重时,可能会导致测试无法进行,从而给测试工作带来困难。因此,如何排除干扰,保证系统的正常运行,是一个必须解决的问题。 红外密集度光电立靶测试系统
[应用]
基于CPLD节省电池能量的系统断电电路设计
现在大多数的CPLD(复杂可编程逻辑器件)都采用可减少功耗的工作模式,但当系统未使用时,应完全切断电源以保存电池能量,从而实现很多设计者的终极节能目标。图1描述了如何在一片CPLD 上增加几只分立元件,实现一个节省电池能量的系统断电电路。在本例中,使用的CPLD是Altera EPM570-T100。使用一只外接P沟道MOSFET Q1和一只国际整流器公司 的IRLML6302(或等效器件),构成IC1 CPLD的一个电源控制开关。CPLD和开关矩阵控制着MOSFET的栅极,当用户按下一个开关时,在Q1上施加开关的偏压。CPLD内带一个嵌入的计时器,用于监控开关和系统的工作。当系统处在一个特定的不工作周期内时,计时器会去掉 MOS
[嵌入式]
基于CPLD的LED显示屏控制系统的设计
  LED大屏幕显示屏以亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定、组态灵活等优点迅速成长为平板显示的主流产品,在信息显示领域得到了广泛的应用。   LED大屏幕显示屏主要由点阵或象素阵列、控制系统和传输接口以及相应的应用软件四部分构成。如图1所示控制系统负责接收、转换和处理各种外部信号以一定的规律和方式将信号传送到显示屏上显示。作为显示屏的核心部分,控制系统直接决定了显示屏的显示效果,也决定了显示屏性能的优劣(见图1)。 图一   1 控制系统的硬件设计   控制系统的实现方案很多,本设计采用单片机+CPLD的方案进行设计(如图2)。 图二   单片机主要实现通信控制,既
[电源管理]
基于<font color='red'>CPLD</font>的LED显示屏控制系统的设计
CPLD在基于PCI总线的功率模块设计中的应用
  引言   在机电一体化控制系统中,直流电机常用于控制系统的执行器,是电机控制的重要部分,能按照处理器指令驱动电机运转实现电机控制。目前直流电机PWM(pulse width modulation,脉宽调制)驱动控制方式应用最为广泛。   2直流电动机的PWM控制原理   直流电动机具有良好的线性调速特性,控制功能简单,效率高及动态特性优异,因此是大多数调速控制电动机的最佳选择。一般直流电机的控制信号包括脉宽调制(PWM)、方向(Dir)和刹车(Brake)信号。而PWM脉宽调制可视为速度信号,通过改变PWM信号的占空比来控制电动机电压,方向信号控制电动机转向,刹车信号控制电动机启停。 由图1看出,PWM调速时,改变占
[嵌入式]
基于DSP芯片和CPLD的刹车控制系统设计
本文在硬件电路设计上采用DSP 芯片和外围电路构成速度捕获电路,电机驱动控制器采用微控制芯片和外围电路构成了电流采样、过流保护、压力调节等电路,利用CPLD实现无刷直流电机的转子位置信号的逻辑换相。在软件设计上,软件以C语言和汇编语言相结合的方法实现了系统的控制。最后提出了模糊控制调节PID参数的控制策略。 1 引言 赛车刹车系统是赛车系统上具有相对独立功能的子系统,其作用是承受赛车的静态重量、动态冲击载荷以及吸收赛车刹车时的动能,实现赛车的制动与控制。其性能的好坏直接影响到赛车的快速反应、安全制动和生存能力,进而影响赛车的整体性能。本文设计了赛车全电防滑刹车控制器的硬件和软件,最后研究了适合于赛车刹车的控制律。 2 系统硬
[嵌入式]
基于DSP芯片和<font color='red'>CPLD</font>的刹车控制系统设计
基于DSP和CPLD的宽带信号源的设计
   1 引言   信号源是雷达系统的重要组成部分。雷达系统常常要求信号源稳定、可靠、易于实现、具有预失真功能,信号的产生及信号参数的改变简单、灵活。本文采用DSP和CPLD来设计信号源的控制部分,一方面能利用DSP软件控制的灵活性,另一方面又能利用CPLD硬件上的高速、高集成度和可编程性。使用这种方法可以充分利用软件支持来生成和加载任意波形数据,并能方便地实现对信号参数的控制和对波形数据的随意修改,同时又能保证信号产生的高速、灵活可控。       2 系统结构   采用波形存储直读法,即通过对存储的波形采样数据进行数模变换,直接生成模拟信号的一种方法。图1为信号源的系统结构。本信号源可工作于联机和脱机两
[应用]
利用可编程逻辑器件实现灵活的电源管理
电源管理一般是指涉及电路板供电方面的相关问题。该相关问题包含: ‧选择各种DC-DC转换器为电路板供电 ‧电源供应排序/追踪 ‧电压监测 ‧上述全部 在本文中,电源管理被简单定义为:对电路板上的所有电源进行管理(包括DC-DC转换器及LDO等)。电源管理功能包含: ‧管理电路板上DC-DC控制器——例如热插拔、缓启动、排序、追踪、裕度和微调。 ‧产生所有电源供应相关状态和控制逻辑讯号——例如重置讯号产生、电源错误指示(监测)和电压管理。图1展示了一个采用CPU或微处理器电路板的典型电源管理功能。 图1:电路板上的典型电源管理功能。 热插拔/缓启动控制功能可用来
[嵌入式]
利用<font color='red'>可编程逻辑器件</font>实现灵活的电源管理
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved