一种基于ARM内核SoC的FPGA 验证环境设计方法

图6 预充电、自刷新
从图6 中tr 线处的时序看出,上电后满足预充电命令的要求,紧接着是8 个自刷新命令,最后是模式寄存器的设置,命令字为020H( 00100000B) ,即CASLatency 设置为2 个时钟周期, Addressing Mode 为Sequential 模式, Burst Length 为1 个数据访问模式,模式设置命令通过地址线a02a9 发出,如图7 所示。

图7 模式设置
将该SDRAM的地址映射成为从30000000 的地址空间开始的地址,利用SDRAM驱动程序(协同调试时,应通过实时操作系统进行SDRAM 的读写) , 向以30000000 开始的地址空间连续写入300 个从数据0 递增到299 的数,截取中间一段波形如图8 所示。图6~图8 中各信号如下:clk 为同步时钟,图中是10 MHz ;cse 为EMI 的8 个片选信号之一,即SDRAM的片选信号cs;ras 和cas 为SDRAM 的控制信号;we 为SDRAM 的读写控制信号;bank021 为SDRAM 的4 个bank 选择控制信号;sd10 为既是SDRAM 的控制信号又是地址信号a10;a0211 为不包括a10 的地址信号;dqm021 为字节选择信号;d027 为低位数据线。

图8 写时序
写命令应当满足的时序要求是:在时钟周期的上升沿处RAS 高,WE、CS、CAS 低;第一个要写的数据必须与写命令同时发出。从图8 可以看出,确实能够成功执行写操作访问。注意: 在写之前,必须将该bank激活,只有激活的bank 才能进行读写,图中的激活命令没有显示出来,同时,由于该访问总共300 个地址完全在一个行内,不用对其进行行预充电和再激活(在一个已经激活的bank 内,读写不同的行就要求对该bank进行预充电和再激活) 。
通过图6~图8 ,还可以看出各种操作命令的建立时间Tsetup和保持时间Thold都设置得比较紧,几乎刚好满足。这种IP 核没有给用户留出足够的余量,一旦用户对PCB 的制作稍有不慎,在PCB 板级违反建立时间和保持时间极有可能,造成SDRAM 的不正确访问,所以需要进行检查和修改。经过前端人员的仿真验证,代码中确实存在忽略建立时间和保持时间的问题,修改后重新在该平台进行验证,以上两个时间都能很好地满足,且有足够的余量。另外,从图中可以看出,数据线上有一些毛刺,这是由于FPGA 的I/ O 端口引脚对逻辑分析仪的接口没有很好地分配造成的,重新分配FPGA 的I/ O 端口,绝大部分毛刺都能很好地消除。
通过以上实验,说明该验证平台确实能够达到验证SOC IP 核的目的。要注意的是,当要验证各个IP模块(包括INT 中断控制器、DMA 控制器、LCD 控制器和AC97 控制器等) 之间协同工作时,烧入的代码较多,占用FPGA 资源较多,再加上需要实时运行,例如,播放PM3 实时解码过程中,时钟至少要求60 MHz ,需要工作的IP 核有总线、DMA 控制器、INT 中断控制器、AC97 控制器等,在这种情况下,最好使用Multi PointSynthesis 的综合流程和Timing driven 的综合与优化策略,使用Logic-lock 约束技术和人工干预布局布线,才能达到预期目的。
使用该平台对我们开发的SoC 的各个模块进行了验证,并在10 MHz~70 MHz 条件下与代码前(后) 仿真结果和SoC 实测结果进行了比较,结果见图9。可以看出,该FPGA 验证平台在多模块、高速情况下,性能有所下降,需进一步提高综合和布局布线技术。

图9 代码仿真、FPG平台验证及SoC芯片实测结果比较
结束语
本文提出了一种常用的基于ARM内核SoC 的FPGA 验证环境的设计方法,并给出了电路结构框图和相应的外围电路设计。根据该设计, 在FPGA 内实现AMBA 总线、存储器接口和中断控制器,加上外面的ARM处理器核,构成了ARM SoC 的最小系统,根据具体目标系统的需要,可以增加LCD 控制器、AC97 控制器、USB 控制器等模块,构成一个非常实用的验证平台。在IP 核烧入后,可以使用ARM ADS(ARM Developer Suite) 软件开发工具,在线对设计的硬件电路、硬件驱动软件、操作系统和高层应用软件进行调试,从而大大缩短了基于SoC 芯片的应用系统的开发时间。随着FPGA 的飞速发展,用户可以选用更加先进和方便使用的FPGA ,还可选用内嵌ARM 核的FPGA 芯片来构建验证平台。同时,该系统在电压设计、模块选用甚至处理器核的选用方面都考虑了升级扩展技术,可供其他SoC 的验证借鉴。
评论