嵌入式软处理器在硅IP开发中的验证加速方法
1、MicroBlaze能够以200Mhz的性能运行,其总线接口OPB/PLB基本能同步运行,8条FSL接口各自运行速度在600Mbps。而一般的待验证IP运行速度在50~80Mhz。因此首先就是要将待验证IP转化为Microblazer能够控制的IP:
(1)将待验证视频IP接口中的全局时钟,Reset信号上加入控制电路,使得Microblazer通过寄存器操作能对待验证IP进行全局复位和时钟速度切换。
(2)将待验证视频IP的输入输出数据格式,转化为MicroBlazer总线系统接口,由于PLB总线速率较低,一般采用OPB总线,为了达到更大吞吐量,需要配置OPB总线的DMA模块,在需要更大实时吞吐量的场合,则采用FSL接口,与Microblazer实现指令级的同步。这样,在软处理器看来,待验证视频IP可以成为软处理器子系统的两个外设设备。
2、利用MicroBlazer资源进行IO资源转换。由于软处理器系统与待验证IP系统在同一个FPGA内运行,我们要保证软处理系统能消除待验证系统的输入输出瓶颈。
(1)配置MicroBlazer的存储器接口为DDR2,64bit,533Mhz,4G容量,Xilinx软件能自动生成内存控制器。利用MicroBlazer的32位寻址能力,它能实现4GBye容量的总数据吞吐量作为缓存。就高清视频解码或者压缩来说接近20秒,其性能是8.5GB/s,已经能充分满足验证需求。
(2)配置MicroBlazer系统与PC通讯的资源,这里我们采用USB接口,能实现热插拔,我们采用成熟方便的Cypress68013接口芯片与系统挂接,其极限数据持续传输率在20MB/s左右。因此,比起通常的PC的IO能力用于验证,软处理器系统能轻易提高400倍的性能。
3、生成软处理器与待验证IP的硬件系统。
Xilinx在转化用户逻辑到FPGA配置过程中,有一个网表生成的过程,其软处理器和周边资源以宏单元方式在网表阶段,与其他IP网表相结合,这样保证了其软处理和相关资源不会被盗用到其他FPGA平台或者用于ASIC设计。因此,我们可以在Xilinx的设计工具EDK里面,按照Wizard生成包含软处理器、总线、内存控制器等子系统,再将修正过接口的USB通讯接口和待验证IP作为设备连接在子系统上。只要相关接口符合规范,EDK软件就自动完成了网表合并,生成FPGA的硬件配置文件。
4、软处理器的软件编程。
(1)软件处理器的软件主要完成3个模块:与PC的通讯模块,实现了内存池与PC的数据交换;待测IP的启动和终止;伺服待验证IP的数据输入输出。前两个模块相对稳定是通用模块,伺服待验证IP的数据输入输出则与待验证IP的特性有关。在待验证IP通过硬件桥接到标准软处理器总线的情况下,软件通用性和移植性就很好保证;若采用简单连接,则用软件来为待测模块提供输入输出特性,灵活性强,但系统运行性能低一些,移植性和通用性也弱一些。Xilinx的EDK工具能使得用户直接采用C语言和C++进行编程,并自动根据硬件配置设置好软件环境。因此调整软件是非常方便的。
(2)软件处理器的软件最好控制软件长度和复杂度,当软处理器软件代码长度能够在FPGA内部放下的时候,能取得最高的性能;其次,就必须映射到外部存储器完成,内存带宽影响到处理器的运行能力;最差就是采用外部的非易失性存储器来存储代码,运行速度最慢。因此建议主要模块在软处理器中完成,但负责调度的工作流程可以不在软件处理器内完成,而由PC软件远程调度。这样能实现更大的灵活性,并节省代码长度。
经验表明,FPGA原型验证方法比PC软件模拟进行IP验证,能提高系统运行速度1000倍以上;而如果采用FPGA进行原型验证,但输入输出结果直接依赖PC,不但效率大大降低,而且对IP的验证覆盖效果也因为待验证IP的IO性能瓶颈大大降低;嵌入式处理器系统的出现,结合了PC的灵活资源与FPGA的性能优势,大大改善了IP设计效果,尤其适合高性能高带宽要求的IP验证。
参考文献
[1] 高等教育出版社出版的《数据信号处理FPGA电路设计》
[2] 电子工业出版社出版的《FPGA嵌入式系统设计》
[3] 清华大学出版社出版的《XilinxFPGA开发实用教程》