随着硅片集成技术的高速发展,片上系统SoC(system-on-a-Chip)已经成为现代数字系统设计的必然趋势。SoC和一般数字系统最主要的区别是前者在单一硅片内集成了独立的嵌入式CPU,必要的存储器控制器也要求集成到SoC芯片内,所以对SoC系统的软硬件协同实时验证便成为SoC设计的难点。基于IP的可重用设计方法已经成为数字系统设计工程师普遍采用的系统设计方法。于是,设计者采用第三方IP或自行设计的软核或两者的组合来搭建符合要求的系统。对于一个SoC系统,嵌入式CPU的选择至关重要。第三方提供CPU的方式有软核和固核,如果在设计过程中仅被授权采用第三方优化的固核(版图级),则前端FPGA实时验证问题自然凸现出来。解决的办法是选择相应CPU的验证开发板或者采用其他处理器。本文介绍一种利用嵌入Blackfin处理器的ADSP-BF537作为处理器进行SoC的FPGA实时验证的方案及其总线接口转换模块的设计。
SoC系统验证平台结构框图如图1所示。
1 ADSP简介
ADSP是ADI(Analog Device Inc.)公司推出的一系列高性能低功耗DSP芯片,而基于Blackfin处理器的ADSP-BF533一经推出便被很多国家的设计人员立即采用,后续系列产品ADSP-BF5xx也被更多的系统设计厂家应用到各自的产品中。正是因为ADSP-BF5xx系列芯片是以功能强大性能卓越的Blackfin处理器为内核而推出的高效DSP芯片,使得人们可以采用ADSP-BF5xx系列芯片作为处理器进行视频SoC的FPGA实时验证。Blackfin处理器集成了一个由ADI公司和Intel公司联合开发的基于MSA(Micro Signal Architecture)的16/32位嵌入式处理器,支持32位RISC指令集,采用10级流水线,集成了两个16位乘法加速器,内核主频最高可以达到600MHz[1]。
2 ADSP外部Momory总线介绍
ADSP外部Memory总线可以进行同步或异步操作,前者是通过时钟输出端CLKOUT进行同步的。本文所采用的ADSP-BF537 Ez-kit Lite开发套件的外部Memory总线的可用地址仅为19位(ADDR[19:1]),并且采用AMS[3:0]选中相应的外部区域。ADSP-BF537的四个选通信号线对应的外部Memory地址范围如表1所示[2]。可以看出,直接利用ADSP外部Memory总线操作的地址空间只有4MB容量,显然不能满足SoC的选址需求,必须进行接口总线的转换来提高寻址范围。
ADSP-BF537外部Memory读写时序波形如图2所示,其中的ARDY信号是由外设产生的。ADSP通过设置EBIU_AMBCTLx寄存器,允许传输过程中使用ARDY握手信号,用来增强系统运行的准确度。ARDY信号的有效电平是可以设置的。
EBIU_AMBCTLx寄存器还可以改变ADSP对外读写操作的时序,包括数据建立时间、读写通路时间以及数据保持时间。例如,图2所示的写操作建立时间、通路时间和保持时间分别是2个周期、2个周期和1个周期。如果使能ARDY信号,并设置为高电平有效,则在设定的读写时间内,ARDY为低电平表示外设不能写入或者读出数据,需要ADSP继续保持相应的读写等待状态,直到ARDY信号被拉为高电平;只有当ADSP检测到ARDY为高电平时,才能将DATA数据作为有效数据。上述过程如图2中的读操作,ARDY信号被拉低了一个周期。
ADSP-BF537的外部Memory地址总线位宽是ADDR[19:1],这样可以使ADSP灵活地对16/32位数据进行地址选址。例如,如果对连续地址进行16位数据的读写操作,ADDR[19:1]只需依次加1,而ADSP软件开发工具中相应的内部变量数据类型定义为short即可[3];类似地,如果要读写的数据类型为int(32位)数据,则每次访问外部地址时,ADSP会连续产生两次读写操作,并且地址总线ADDR[19:1]是连续的。
3 AHB总线介绍
AHB(Advanced High-peRFormance Bus)是AMBA总线中用途最为广泛的一种高速总线,因其协议简单、可综合性强、支持主频高、功耗低,已经被很多SoC芯片作为内部高速系统总线。大多数第三方IP厂商提供的功能模块的接口都支持AMBA总线协议。AHB基本传输时序如图3所示[4]。
4消除信号的亚稳态现象
在本次视频SoC的FPGA验证方案中,采用ADSP的外部Memory总线,FPGA既可以利用同步时钟输出CLKOUT进行同步设计,也可以采用异步总线读写。如果不使用CLKOUT而采用异步设计,则在总线转换接口模块设计中,首先需要保证消除读写信号亚稳态现象。ADSP内核主频可以达到600MHz,外部Memory总线的采样时钟(CLKOUT)动态调整范围也很大,因此对异步输入信号可以采用增加同步触发器进行锁存延时的方法来消除亚稳态[5]。具体实现方法是在异步输入信号的前端加2-3级同步触发器。FPGA验证证明:当CLKOUT频率为50MHz,FPGA系统主频为25MHz时,3级同步锁存完全可以消除亚稳态,从而保证ADSP在外部Memory总线上正确进行数据传输。 |