SOPC设计中自定义IP的开发

2011-10-20 02:02防空兵指挥学院张春生张海瑞
河南科技 2011年9期
关键词:外设计数器文件夹

防空兵指挥学院 张春生 宋 磊 张海瑞

SOPC设计中自定义IP的开发

防空兵指挥学院 张春生 宋 磊 张海瑞

近年来,随着微电子工业的飞速发展,作为可编程逻辑器件之一的FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)得到了越来越广泛的应用,其设计性能和性价比已完全能够与ASIC抗衡。SOPC(System On a Programmable Chip,片上可编程系统)技术正是在可编程逻辑器件的基础上发展起来的一种灵活、高效的嵌入式系统解决方案。它将处理器、存储器、I/O口、LVDS和UART等系统设计所需要的部件集成到一片FPGA器件上,各个部件一般都以IP核的形式构成一个可编程的片上系统,它所具有的灵活性、低成本等特点让系统设计者获益匪浅。

一、SOPC技术与IP核

1.IP核。SOPC的主要思想是提供1个IP库,用户从IP库中选择IP核来组装系统,因此IP核是SOPC设计的关键技术之一。虽然IP核一词在众多场合中已被多次使用,但它并没有一个统一的定义。IP核从概念上可以理解为将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器、SDRAM控制器、UART控制器等设计成可修改参数的模块,让其他用户可以直接调用这些模块的组件,这样就可以大大减轻工程师的负担,避免了人员的重复劳动,也缩短了系统的开发时间。

2.SOPC技术与IP核。IP核设计一般可以有3种方法,即EDA厂商提供、用户自己定义和第3方提供。一般来说,EDA厂商及第3方提供的IP核在功能上都是通用的,但是在进行SOC设计时,用户经常有特殊需求,这时必须通过自定义逻辑来实现所需要的功能。所以在进行SOC设计时,如何灵活地加入用户自定义逻辑就显得尤为重要。

二、基于EDK的SOPC开发技术

1.常用的SOPC开发。在进行SOPC系统开发时,首先要做的是选择FPGA平台、处理器方案以及开发软件,目前常用的是由世界上2大主要的FPGA器件生产厂商所提供SOPC方案及相关开发套件:一是Altera公司的FPGA产品,采用Nios处理器软核或硬核ARM,开发工具由QuartusⅡ和SOPC Builder组成。二是Xilinx公司的FPGA产品,基于Microblaze软核或Powerpc405硬核,开发工具由ISE和EDK组成。

2.基于EDK的SOPC开发过程。下面就以Xilinx公司的软件EDK为例介绍SOPC系统的开发过程。EDK有一个友好的图形用户界面,通过这个界面,用户可以从Xilinx提供的IP库中选取一些组件,比如处理器、SDRAM、Flash、各种I/O等,并可通过选择配置相应的参数。EDK有一个十分重要的功能就是在进行SOPC设计时,如果用户有特殊功能需求,但IP库中没有,用户可以加入自定义的逻辑来实现,SOPC的开发流程如图1所示。

图1 SOPC开发流程

三、自定义IP开发实例

1.系统开发设计要求。这里以1个在控制系统中常用的脉冲宽度调制电路(PWM)为实例,设计1个PWM用户逻辑并利用EDK将它集成到SOPC系统中。我们事先假定FPGA中已经存在1个基于Microblaze的嵌入式系统中,在此前提下将PWM外设集成到OPB总线上,并进行功能验证。PWM的具体设计要求如下:要求信号周期可调,脉冲的宽度可调,可以控制PWM的输出使能,PWM直接通过1个FPGA管脚输出。按照以上设计要求,我们设定PWM外设共有3个寄存器,分别为Clock_Divisor寄存器、Duty_Cycle寄存器和Control寄存器。

2.模块功能设计。PWM外设的核心是1个计数器,由Clock_Divisor寄存器来控制计数周期,当计数器的计数值大于Clock_Divisor寄存器的设定值时,计数器清零;否则,在时钟信号触发下,输出使能控制位为1时计数器进行加1计数。PWM模块的输出是计数器的计数值与Duty_Cycle比较的结果,当输出使能有效并且计数值大于Duty_Cycle寄存器的值时,输出为1。

3.模块集成。在XPS集成开发环境中,集成了一个creat/ import peripheral向导工具,利用该向导工具就能轻松地创建或导入一个用户自定义的外设。在向导中,我们只需确定与总线的接口是3个32位的寄存器即可,向导完成设计后,工程目录(project)中会自动生成drivers和pcores这2个文件夹,这2个文件夹中包含了自定义外设的相关信息,drivers文件夹里以应用程序接口函数API的形式提供了自定义外设的驱动程序,从而完成了对外设的读写和测试,用户在开发包含自定义外设的高层应用软件时就可以直接调用这些接口函数。

4.外线与总线的接口描述。在pcores文件夹目录下有3个文件比较重要,即user_logic、MPD和PAO文件。user_logic文件是集成工具生成的用户模板文件,该文件中给出了OPB总线的接口信号,用户只需根据接口信号的驱动要求,在用户模板中就能完成模块的功能设计。PWM外设与总线的接口描述如下所示:

5.功能验证。在自定义外设集成到系统中后,通过调用仿真模型生成器(SimGen),生成仿真文件,然后利用Modelsim仿真软件对系统进行仿真,通过仿真我们就能够快速验证自定义逻辑的功能是否正确,PWM外设仿真波形如图2所示。

在图2中,pwm_out是PWM的输出信号,opb_abus、opb_dbus和opb_select分别是OPB总线的地址总线、数据总线和片选信号。我们在应用程序中对PWM的3个寄存器进行3次配置:第一次把占空比设置成1:1;第二次设置成2:1;最后将输出使能关闭。

猜你喜欢
外设计数器文件夹
采用虚拟计数器的电子式膜式燃气表
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
挂在墙上的文件夹
计数器竞争冒险及其处理的仿真分析
不容忽视的空文件夹
任意N进制计数器的设计方法
Microchip推出具备双ADC外设的全新器件,扩展其低成本8位PIC®单片机产品线
基于单片机的仰卧起坐计数器
外设天地行情