论文部分内容阅读
摘 要 随着半导体制造技术的不断发展,相应的设计规模和复杂度飞速增长,传统的软件仿真工具已难以完全解决功能验证的问题。而且一些需要处理大量实时数据的应用(视频)也越来越多,因此我们要求能够在接近实时的条件下进行功能验证。基于仿真平台的测试已成为DSP设计流程中重要一个环节。基于仿真平台的测试可以用来改进RTL级设计代码,验证功能的正确和完整性,大大提高DSP的流片成功率。
关键词 DSP HPI 硬件仿真
中图分类号:TP3 文献标识码:A
1平台结构
整个平台按照PC-USB-FPGA-HPI的结构搭建,如图1,通过HPI接口与DSP进行通信。平台主要的器件有:Xilinx的Spartan 3S1200E FPGA、Xilinx的Platform Flash PROM XCF04s、Cypress公司FX2系列产品CY7C68013。
图1 HPI仿真平台系统框架图
PC机下发的请求通过USB控制器的GPIF产生访问波形,可以称为USB接口协议,USB接口协议完全由USB控制器处理。FPGA主要起到接口转换的作用,实现16位数据与32位数据之间的转化,工作时钟输入由CY7C68013提供。由于FPGA属于掉电易失性器件,每次断电重启后必须重新加载硬件代码才可正常工作,因此又为其配置了PROM器件(Xilinx XCF04S),FPGA从PROM中自动导入预先下载的设计文件即可正常工作,可以大大减少下载次数提高工作效率。仿真器硬件构架图如图2所示。
图2 HPI仿真器硬件构架图
在为HPI的仿真平台准备好所有的硬件资源之后,接下来的主要工作就是对协议转变器(FPGA)与仿真协同软件进行设计,并最终实现协同的仿真功能。图3体现的是仿真平台的软硬件构建。
图3 仿真平台的软硬件构建
2 FPGA协议转变器
协议转变器在整个仿真平台中可以简单的看做是一个连接两个主要接口的中间地带,其主要的控制通路与数据通路方向如图4所示。
图4 控制通路与数据通路主体构图
PC机与协议转变器(FPGA)的连接实际指的是USB接口芯片FX2的GPIF接口与FPGA之间的连接,其中16位双向数据总线FD到协议变换器内部,经过FPGA的IOBUF的端口处理,拆分成两个单向信号FD_out(输出信号)与FD_in(输入信号)。RDY0的信号值由协议转变器中产生。具体的信号连接如图5所示。
在设计中,FPGA一共被分为4个单元,如图6协议转变器FPGA框架图所示。其中译码单元(PC_Decoder)单元对PC机的操作要求进行译码,主要包括区分单字访问、自增访问,确定访问的对象、确定读/写操作以及对FX2的控制输入信号的采样。数据拆分和拼接单元(PC_Single)主要针对输入和输出的16位与32位的接口差异进行数据的拆分和拼接。批量数据处理单元(PC_Bulk_Data)设计有3个单元,及HPIC_access、HPIA_access、HPID_access。PC机的指令经过译码单元译码后,对HPIC_access、HPIA_access、HPID_access进行访问操作。RAM单元用来暂存发往DSP和返回上位机的数据。
图5 PC机与FPGA的接口连接
图6 协议转变器FPGA框架图
3 协同软件
在本设计中,协同软件主要包括固件设计、驱动程序设计和主机端口应用程序设计。如图2仿真平台的软硬件构建所示。
(1)固件设计
CYPRESS公司的EZ-USB FX2开发套件提供给用户一个固件函数库(Ezusb.lib)和固件框架(Frame work),两者均是基于KEIL C51开发的。固件函数库提供了一系列的函数来加速USB 固件程序的开发,使用时只需在程序中包含fx2.h 和fx2regs.h 两个头文件,并在项目中链接Ezusb.lib 就可以直接使用固件库中的各个函数了。在使用固件框架来进行特定的固件开发时,固件框架已经实现了初始化、重枚举、电源管理等功能。对我们而言,只需要在固件架构的预留位置处添加代码,就可以完成特定的功能。
GPIF能够装载4个控制波形,分别是单个数据读、单个数据写、连续数据读、连续数据写。“读”是指FX2从外部接口读入数据,“写”是指FX2向外部接口写出数据。所谓“连续数据读写”是指读入的数据存放在FX2的内部FIFO,或者写出的数据来自FX2的内部FIFO。图7为GPIF批量写波形。
图7 GPIF批量写波形图
(2)驱动程序设计
驱动程序是指一系列硬件设备的函数,它为连接到计算机的硬件提供了软件接口。用户应用程序可以通过驱动程序接口访问各种硬件,而不必考虑如何具体实现不同硬件的控制。Cypress公司的开发套件提供给用户一个通用USB驱动,在该设计中,不需要对程序加以修改,经过DDK编译后直接使用。
(3)主机端口应用程序设计
为有效完成HPI口的相关操作,我们一共设置了9个设备请求:
HPIC_WRITE:写HPIC寄存器;
HPIC_READ:读HPIC寄存器;
HPIA_WRITE:写HPIA寄存器;
HPIA_READ:读HPIA寄存器;
HPID_WRITE:写HPID寄存器;
HPID_READ:读HPID寄存器;
HPID_ADDR_ADD_WRITE:地址自增写HPID寄存器;
HPID_ADDR_ADD__READ:地址自增读HPID寄存器;
RESET_DSP:DSP复位。
以上几个设备请求均是通过控制传输实现的,另外,为实现大规模数据传输,我们采用批量传输的方式定义了两个函数:
①WriteBULKDataToDSPRAM( );
②ReadBULKDataFromDSPRAM( );
参考文献
[1] 杜慧敏,李宥谋,赵全良.基于Verilog的FPGA设计基础[J].西安:西安电子科技大学出版社,2006.
[2] Prakash Rashinkar, Peter Paterson,Leena Singh著,孙海平,丁健 译.系统芯片(SOC)验证方法与技术[M].电子工业出版社,2005.1.
[3] 高阁.高性能定点DSP(XDSP)UTOPIA接口的研究与设计[D].湖南:国防科技大学,2010.
关键词 DSP HPI 硬件仿真
中图分类号:TP3 文献标识码:A
1平台结构
整个平台按照PC-USB-FPGA-HPI的结构搭建,如图1,通过HPI接口与DSP进行通信。平台主要的器件有:Xilinx的Spartan 3S1200E FPGA、Xilinx的Platform Flash PROM XCF04s、Cypress公司FX2系列产品CY7C68013。
图1 HPI仿真平台系统框架图
PC机下发的请求通过USB控制器的GPIF产生访问波形,可以称为USB接口协议,USB接口协议完全由USB控制器处理。FPGA主要起到接口转换的作用,实现16位数据与32位数据之间的转化,工作时钟输入由CY7C68013提供。由于FPGA属于掉电易失性器件,每次断电重启后必须重新加载硬件代码才可正常工作,因此又为其配置了PROM器件(Xilinx XCF04S),FPGA从PROM中自动导入预先下载的设计文件即可正常工作,可以大大减少下载次数提高工作效率。仿真器硬件构架图如图2所示。
图2 HPI仿真器硬件构架图
在为HPI的仿真平台准备好所有的硬件资源之后,接下来的主要工作就是对协议转变器(FPGA)与仿真协同软件进行设计,并最终实现协同的仿真功能。图3体现的是仿真平台的软硬件构建。
图3 仿真平台的软硬件构建
2 FPGA协议转变器
协议转变器在整个仿真平台中可以简单的看做是一个连接两个主要接口的中间地带,其主要的控制通路与数据通路方向如图4所示。
图4 控制通路与数据通路主体构图
PC机与协议转变器(FPGA)的连接实际指的是USB接口芯片FX2的GPIF接口与FPGA之间的连接,其中16位双向数据总线FD到协议变换器内部,经过FPGA的IOBUF的端口处理,拆分成两个单向信号FD_out(输出信号)与FD_in(输入信号)。RDY0的信号值由协议转变器中产生。具体的信号连接如图5所示。
在设计中,FPGA一共被分为4个单元,如图6协议转变器FPGA框架图所示。其中译码单元(PC_Decoder)单元对PC机的操作要求进行译码,主要包括区分单字访问、自增访问,确定访问的对象、确定读/写操作以及对FX2的控制输入信号的采样。数据拆分和拼接单元(PC_Single)主要针对输入和输出的16位与32位的接口差异进行数据的拆分和拼接。批量数据处理单元(PC_Bulk_Data)设计有3个单元,及HPIC_access、HPIA_access、HPID_access。PC机的指令经过译码单元译码后,对HPIC_access、HPIA_access、HPID_access进行访问操作。RAM单元用来暂存发往DSP和返回上位机的数据。
图5 PC机与FPGA的接口连接
图6 协议转变器FPGA框架图
3 协同软件
在本设计中,协同软件主要包括固件设计、驱动程序设计和主机端口应用程序设计。如图2仿真平台的软硬件构建所示。
(1)固件设计
CYPRESS公司的EZ-USB FX2开发套件提供给用户一个固件函数库(Ezusb.lib)和固件框架(Frame work),两者均是基于KEIL C51开发的。固件函数库提供了一系列的函数来加速USB 固件程序的开发,使用时只需在程序中包含fx2.h 和fx2regs.h 两个头文件,并在项目中链接Ezusb.lib 就可以直接使用固件库中的各个函数了。在使用固件框架来进行特定的固件开发时,固件框架已经实现了初始化、重枚举、电源管理等功能。对我们而言,只需要在固件架构的预留位置处添加代码,就可以完成特定的功能。
GPIF能够装载4个控制波形,分别是单个数据读、单个数据写、连续数据读、连续数据写。“读”是指FX2从外部接口读入数据,“写”是指FX2向外部接口写出数据。所谓“连续数据读写”是指读入的数据存放在FX2的内部FIFO,或者写出的数据来自FX2的内部FIFO。图7为GPIF批量写波形。
图7 GPIF批量写波形图
(2)驱动程序设计
驱动程序是指一系列硬件设备的函数,它为连接到计算机的硬件提供了软件接口。用户应用程序可以通过驱动程序接口访问各种硬件,而不必考虑如何具体实现不同硬件的控制。Cypress公司的开发套件提供给用户一个通用USB驱动,在该设计中,不需要对程序加以修改,经过DDK编译后直接使用。
(3)主机端口应用程序设计
为有效完成HPI口的相关操作,我们一共设置了9个设备请求:
HPIC_WRITE:写HPIC寄存器;
HPIC_READ:读HPIC寄存器;
HPIA_WRITE:写HPIA寄存器;
HPIA_READ:读HPIA寄存器;
HPID_WRITE:写HPID寄存器;
HPID_READ:读HPID寄存器;
HPID_ADDR_ADD_WRITE:地址自增写HPID寄存器;
HPID_ADDR_ADD__READ:地址自增读HPID寄存器;
RESET_DSP:DSP复位。
以上几个设备请求均是通过控制传输实现的,另外,为实现大规模数据传输,我们采用批量传输的方式定义了两个函数:
①WriteBULKDataToDSPRAM( );
②ReadBULKDataFromDSPRAM( );
参考文献
[1] 杜慧敏,李宥谋,赵全良.基于Verilog的FPGA设计基础[J].西安:西安电子科技大学出版社,2006.
[2] Prakash Rashinkar, Peter Paterson,Leena Singh著,孙海平,丁健 译.系统芯片(SOC)验证方法与技术[M].电子工业出版社,2005.1.
[3] 高阁.高性能定点DSP(XDSP)UTOPIA接口的研究与设计[D].湖南:国防科技大学,2010.