您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

可复用SPI模块IP核的设计与验证

时间:2007-1-20栏目:电子通信论文

理其它事务。

2.1 SPI模块的接口信号及时序要求

(1)内部总线接口

AMBA规范是由ARM公司制定的片上总线规范,为SoC的设计提供了以下优点

:较好的可移植和可复用设计、低功耗设计、讥生能和结构可移植的系统设计以及较好的可测性设计。SPI是APB总线上的Slave模块。APB总线时序比较简单,有兴趣的读者可以查阅ARM公司的《AMBA Specificetion》(Rev 2.0)。因此此SPI模块支持3种DMA操作,所以除标准APB信号线外,还有3根与DMA模块连接的请求信号线。

图3和图4

    (2)SPI总线接口及时序

SPI总线包括1根串行同步时钟信号线以及2根数据线。

SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI接口时序如图3、图4所示。

2.2 SPI模块功能设计

根据功能定义及SPI的工作原理,将整个IP分为8个子模块:APB接口模块、时钟分频模块、发送数据FIFO模块、接收数据FIFO模块、状态机模块、发送数据逻辑模块、接收数据逻辑模块以及中断形式模块。

深入分析SPI的四种传输协议可以发现,根据一种协议,只要对串行同步时钟进行转换,就能得到其余的三种协议。为了简化设计规定,如果要连续传输多个数据,在两个数据传输之间插入一个串行时钟的空闲等待,这样状态机只需两种状态(空闲和工作)就能正确工作。相比其它设计,在基本不降低性能的前提下,思路比较精炼、清晰。

此SPI模块有两种工作方式:查询方式和DMA方式。查询方式通过处理器核监视SPI的状态寄存器来获其所处的状态,从而决定下一步动作。DMA方式由DMA模块控制数据在内存和SPI间的交换,而不需要处理器核的参考,有效提高了总线利用率。
可复用SPI模块IP核的设计与验证
3 EMA软件仿真与FPGA验证

为了保证设计的鲁棒性,运用多种方法对此IP的功能进行全面的仿真和验证。

首先进行EDA软件仿真验证。这种仿真包括RTL级和门级仿真验证。RTL级仿真只是将代码文件调入硬件描述语言的仿真软件进行功能仿真,检查逻辑功能是否正确。门级仿真包括布局布线前和布局布线后仿真。布局布线后仿真,可以获得比较精确的时延参数,能够比较真实地反映芯片制造完成后,模块在实际工作中的行为与性能,所以通过了此类仿真应认为模块设计成功,可以进行流片。将RTL级代码转换成门级网表,使用的是Synopsys公司的综合工具DC(Design Compiler)以及台湾集成电路制造公司(TSMC)的0.25μm标准单元库。

在传统的设计流程中进行功能验证,首先需要通过写测试矢量的方式给需要进行功能测试的模块加激励,然后通过观察模块的输出结果,判断模块的功能是否正确。但是在写测试矢量时,测试工程师是在自己对模块功能理解的基础上进行的。这样就存在一个问题,测试矢量对模块的激励有可能是不完备的,还有可能是错误的,但测试矢量的激励并没有使错误体现出来;也有可能模块的功能是正确的,误报错误使难证过程变得非常低效。为避免以上问题,在模块的功能验证中,采用系统级验证环境。该环境由IP总线、驱动器、监视器、外部模块和协调它们工作的脚本组成。组成系统的各模块可以按需要加入环境。每次验证过程就是相应的激励作用于环境的过程。验证结果由环境产生、检验和输出。该验证环境在SOLARIS5.8操作系统下,仿真器采用Synopsys公司的VCS,支持C/C++、Verilog和VHDL协同仿真,可以直接SPI模块挂在验证环境中,通过Verilog的$readmemh任务读入软件激励进行验证。

上一页  [1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页