通用型I2C总线的IP设计与验证

点赞:4953 浏览:16425 近期更新时间:2024-03-28 作者:网友分享原创网站原创

摘 要 :集成电路设计已经步入SoC时代,而IP设计和IP复用技术是SoC设计的重要支持.本文以通用型I2C总线为例,介绍了典型的数字IP的设计与功能验证实现.这里采用HDL-Verilog语言进行自顶向下的设计,通过搭建验证平台、提取功能验证点完成软核的功能验证,并且运用Perl开发了脚本程序以提高验证效率.

关 键 词 :I2C,IP,设计,验证

THE IP DESIGN AND VERIFICATION OF GENERAL I2C BUS

(The Embedded System Engineering Department

Of Dalian Neusoft Information Institute , Dalian LiaoningPost 116023)

Abstract: Integrated circuits design has entered the age of SoC , both IP design and IP reuse are great supports for SoC design nowadays .This paper takes general used I2C bus as an example to introduce the implementation of typical digital IP designing and soft IP’s functional verification .Top-down design method by using HDL-verilog is adopted here, function verification of soft IP is pleted via constructing testbench as well as extracting function testcases.Perl language scripts programs are also developed in order to improvethe efficiency of function verification.

Keywords: I2C, IP , design, verification

1引言

SoC(片上系统)设计复杂性的增加促使IP(知识产权核)设计和复用技术不断发展,如何提高基于复用的IP设计和验证技术也成为SoC设计中的一大瓶颈问题.丰富的总线技术是SoC设计的一大特征,本文抛开OCB(片上总线)技术的先进性,选取I2C总线的通用功能进行设计和验证研究.这里采用Top-down (自顶向下)的设计方法完成软核的RTL(寄存器传输级)设计和基于BFM (总线功能模型)的验证平台设计,通过提取核的功能验证点、运用Perl编写验证脚本程序,顺利完成软核的验证,值得参考与交流.

2基于复用的IP设计

2.1 I2C总线简介

I2C总线利用两条线SCL(串行时钟线)和SDA(串行数据线)实现连接在总线上的设备间的数据传输,较新的规范是2000年的2.1v,当今使用的I2C大都与Philips公司制定的规范兼容.它支持串行的8位双向数据传输,传输速度在标准模式下可达到100 kbit/s,在快速模式下可达到400 kbit/s,高速模式下可以达到3.4 Mbits/s,高速模式不支持主机仲裁和时钟同步功能.除了发送器和接收器之分,有I2C接口的外器件在执行数据传输时也可以被看作是主机或从机.主机器件首先对总线的数据传输初始化,并产生允许传输的时钟信号,任何被寻址的器件都被认为是从机.该总线有以下四种模式下工作:主机发送模式、主机接收模式、从机接收模式、从机发送模式.

完整的I2C规范定义了7位和10位两种从机地址的数据传输格式,从机对接收到本机地址时做ACK(应答)或NACK(不应答)以通知发送方继续或停止发送数据.Start之后的第一个字节是7位从机地址加方向位RWB,定义如表1[1].

I2C规范的byte (字节)传输格式:各字节有8位,MSB(最高位)先传输,在总线上传输完毕后为应答位.Bit(位)传输规定为总线时钟SCL高电平时SDA有效,SCL为低电平时SDA改变合法.位传输是同SCL同步,当SCL为高时,SDA由高到低的变换意味着报文开始的条件Start,当SCL为高时,SDA由低到高的变换意味着报文结束的条件Stop.Start和Stop总由主设备产生,Start产生后,总线就视为忙状态,当Stop发生后总线再次进入空闲状态.I2C总线上的数据传输格式如图1所示[1].

标准速度和快速模式下的主机仲裁与时钟同步:仲裁是多个主机同时尝试控制总线,但只允许其中一个控制总线并使报文不被破坏的过程,同步是两个或多个器件同步时钟信号的过程,如图2和图3.

2.2 Top-down 的IP设计

这里IP核的设计完全可逻辑综合,具备标准速度和快速两种工作方式,具备上述所有传输模式和仲裁、同步、中断及字节自行处理功能,留有7位/10位地址传输格式配置位以供功能扩展.可复用IP核支持即插即用,如图4所示,下侧为地址、数据、外部控制输入及中断输出信号,总线的宽度能以参数化的形式进行配置.

通常要根据项目需求及总线规范,经过高层次建模和系统级仿真确定功能寄存器单元,以实现IP核的RTL设计并在使用时配置IP核的功能.这里直接给出各功能寄存器单元的种类及位定义的一种方案:控制寄存器IICCR,包括核的使能位、中断使能位、主/从模式选择位、收/发功能选择位、应答/不应答控制位、重复开始控制位、7/10位地址传输选择位、广播模式控制位等,状态寄存器IICSR,包括数据传输标志位、从机标示位、总线忙标志位、仲裁丧失标志位、广播寻址状态位、从机读/写标志位、中断状态标志位、接收的应答状态位等,数据寄存器IICDR的低8位有效,7-1位组成sle设备地址,最低位显示传输的方向,地址寄存器IICADR存放核的响应地址,由7位从机地址和读写位RWB组成,频分寄存器IICFDR配置采样率和时钟比以配置标准速度和快速模式波特率.每一位的操作及可读/可写性不加以赘述,各功能寄存器地址偏移量和数据位数可以以参数化形式进行配置以支持核的即插即用.

进行RTL级设计时的模块划分如图5所示,其中寄存器接口子模块Inf连接处理器和核功能寄存器的接口,起始控制逻辑StaCtrl发出Start使核工作于主模式下,停止控制逻辑StpCtrl发出Stop使核停止当前传输,传输控制逻辑TransCtrl传输数据时控制数据传输和响应信号时的时序,使其能符合总线的传输协议,频分控制模块Div根据频分控制寄存器设置产生特定频率的采样时钟和SCL输出时钟,总线检测模块BusDet判断总线状态.输入滤波模块Filt滤掉线与产生的毛刺,状态机模块控制核工作在不同模式下的状态转换,并且根据不同的状态设置状态寄存器.主机和从机的通用状态机如图6-7 ,设计时把这两个状态图合并放在模块里面进行状态细化和状态编码[2].数据控制模块Shift控制SDA的输出,时钟控制模块ClkCtrl控制SCL的输出.

3软核的功能验证

设计复杂性的增加使验证在SoC/IP设计中的难度越来越大,上市时间和一次性流片成功的压力使验证语言和验证方法学不断变革,较成功的有VMM(SystemVerilog验证方法学),SystemVerilog(SV)语言的验证功能也不断增强,这些都有助于灵活且强大验证平台的建立[3].搭建这样复杂的验证平台对与复杂的验证来说,性价比高,但需要花费较长的时间,这里仍然使用基于BFM架构的定向测试验证平台完成软核的功能验证.验证平台架构如图8所示,平台的I2C总线上有多个主设备与从设备的行为模型Sub,而每个Sub都例化了待验证的 IP核及模拟本地处理器的激励模块R_Stim.另外还有全局激励模块Stim及全局时钟激励模块ClkGen, 监测模块Monitor实现功能和时序的检查与报错.

通用型I2C总线的IP设计与验证参考属性评定
有关论文范文主题研究: 关于嵌入式的论文范文检索 大学生适用: 硕士学位论文、学院学士论文
相关参考文献下载数量: 14 写作解决问题: 如何写
毕业论文开题报告: 论文提纲、论文前言 职称论文适用: 职称评定、职称评副高
所属大学生专业类别: 如何写 论文题目推荐度: 优质选题

Sim从数据文件sim.txt读激励数据:复位信号NRST、 总线时钟信号SCL、总线数据信号SDA以驱动I2C总线,Monitor实时监测总线上的数据传输状态(监视状态机如图9示)、并根据得到的总线状态与期望的总线状态进行比较,如果接收到的信号与期望值不一致就生成报告文件diff.txt.期望值数据放在文件cmp.txt中,内容举例如下:36003A60 ,表示在仿真运行的3600个时钟周期应探测到总线处于数据传输状态,数据传输值为A6,应答信号为0.

Sub模块在系统中模拟加上了I2C核、支持I2C总线协议的设备,结构如图10所示,R_Stim从数据文件rstim.txt读取数据写入到核的工作寄存器中.数据文件rstim.txt每行由几种指令(读操作、写操作、等待中断、等待时钟周期、数值比较)编码和操作数构成,举例如下:02ADCCF1 .表示将数据(值为F1)写入(指令编码为02)寄存器(地址为ADCC)中.

根据IP核的设计功能,明确了有标准/快速模式2情况下,可做以下功能验证点的提取,见表2.通过编写各个测试用例的激励及响应比较文件,利用定向测试平台进行功能仿真与验证.

为实现验证流程的自动化、提高验证的效率,运用Perl编写验证脚本程序进行仿真环境配置、EDA工具的调用、仿真结果的分析和成功测试用例的统计.使用Mentor公司的QuestaSim或Synopsys 公司的VCS进行仿真,波形图示例如图11、图12.

4结论与展望

该设计遵循I2C规范v2.1、支持即插即用,且具备标准和快速两种速度模式下的基本功能,验证过程中使用Perl脚本程序提高了验证效率.随着SoC/IP设计和验证复杂度的增加,迫切需要我们学习和使用新的设计语言进行设计、运用新的验证方法(例如VMM)和验证技术(例如SV 断言)进行验证.