当前位置:首页 > 电源 > 数字电源
[导读]根据单片机I2C串行扩展的特点,在EDA软件MaxplusII的环境下,利用AHDL语言,建立IP核。

    摘要:根据单片机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核库的建设已相当迫切,它是集成电路产业发展的一个重要目标。

图1 I2C传输原理图

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用于告知总线数据传输结束,发生停止信号。

图4 仿真结果

  仿真以后,通过编程电缆将生成的pof文件用ISP(在系统编程)方式下载到FPGA板EPM7128SLC84-6,I/O口SDA和SCL挂上拉电阻,外接两片I2C器件SAA1064(LED显示I2C串入并出芯片)进行测试,结果CPLD利用该I2CIP核,工作正常,可以按照要求显示。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发中,SPI和I2C作为最常用的同步串行通信协议,其驱动实现直接影响硬件交互的稳定性。本文以STM32 HAL库为基础,阐述从协议栈架构设计到错误处理的完整开发流程,实现微秒级时序控制与毫秒级错误恢复。

关键字: 驱动开发 SPI I2C

在FPGA开发中,IP核复用是提升开发效率、降低设计风险的核心技术。AXI总线作为ARM与Xilinx联合推出的高性能片上总线标准,已成为IP核互连的首选接口。本文以Xilinx Vitis环境为例,解析AXI总线配置与...

关键字: FPGA开发 IP核 AXI总线

在单片机系统开发中,外设扩展是提升功能多样性的关键环节。I2C(Inter-Integrated Circuit)通信协议凭借其简洁的硬件设计、高效的传输机制和广泛的设备支持,成为连接传感器、存储器、显示器等外设的首选方...

关键字: I2C 单片机

直流开关电源作为电子设备的 “能量心脏”,其内部器件在高频开关、电压转换过程中面临过流、过压、过热等多重风险。为保障电源稳定运行与设备安全,行业形成了一套覆盖核心器件的多元保护体系,通过精准的检测、快速的响应和可靠的执行...

关键字: 开关电源 器件 保护机制

上海2025年11月11日 /美通社/ -- 11月5日~10日,第八届中国国际进口博览会在国家会展中心(上海)如期盛大举办,住友电工集团第五次亮相进博会,带来为实现高质量发展的创新解决方案。 今年是住友电工集团中期经...

关键字: 数据中心 光纤熔接机 器件 VI

运算放大器(简称 “运放”)作为模拟电路的核心器件,广泛应用于信号放大、滤波、比较、运算等场景。其性能优劣直接决定整个电路的稳定性与精度,但在实际使用中,即使选用高性能运放,若忽视细节设计,仍可能导致电路功能失效或性能大...

关键字: 运算放大器 模拟电路 器件

在嵌入式系统开发中,GPIO、I2C与SPI接口如同三把钥匙,分别解锁了简单控制、多设备协同与高速传输的场景。从机械臂的精密运动到OLED显示屏的实时渲染,这些接口的协同工作构成了智能硬件的核心脉络。本文将通过机械臂、传...

关键字: GPIO I2C SPI

在现代电子系统中,信号隔离技术的重要性不言而喻,高速光耦作为该领域的核心器件,正凭借其独特的技术优势,为各行业的系统赋能带来革命性的变化。

关键字: 高速光耦 隔离技术 器件

在电子元件的测量中,电阻测量是一项关键技术。它涉及到对电子元件内部电阻的准确测量,以确保元件的性能和质量。而低阻测量,则是针对低阻值电子元件的特殊测量方法,其重要性不言而喻。

关键字: 器件 阻值

在电子系统中,电源如同人体的心脏,为各个元器件提供持续稳定的能量。而电源系统电流的合理分配,更是决定了整个系统能否稳定、高效运行的关键因素。不合理的电流分配,可能导致某些元器件供电不足,无法正常工作;也可能使部分器件电流...

关键字: 电源系统 器件 电流
关闭