新闻中心

EEPW首页 > 模拟技术 > 设计应用 > SOPC设计中自定义IP的开发

SOPC设计中自定义IP的开发

—— Developing Self-definition IP in SOPC Design
作者:张春生 宋磊 薛雷 防空兵指挥学院(郑州 450052)时间:2011-02-18来源:电子产品世界收藏
3  自定义IP开发实例
这里以一个在控制系统中常用的脉冲宽度调制电路(PWM)为实例,设计一个PWM用户逻辑并利用EDK将它集成系统中。我们事先假定FPGA中已经存在一个基于Microblaze的嵌入式系统,在此前提下将PWM外设集成到OPB总线上,并进行功能验证。
假设PWM的具体设计要求如下:
◇ 要求信号周期可调。
◇ 脉冲的宽度可调。
◇ 可以控制PWM的输出使能。
◇ PWM直接通过一个FPGA管脚输出。
按照以上设计要求,我们设定PWM外设共有3个寄存器,分别为:
(1) Clock_Divisor 决定信号周期的32位寄存器
(2) Duty_Cycle 控制信号占空比的32位寄存器
(3) Control 控制寄存器,使能输出,32位,只有最低位有效
3.1  模块功能设计
PWM外设的核心是一个计数器,由Clock_Divisor控制计数周期,当计数器的计数值大于Clock_Divisor寄存器的值时,计数器清零,否则在时钟信号触发下,输出使能控制位为1时计数器加1计数;PWM模块的输出是计数器的计数值与Duty_Cycle比较的结果,当输出使能有效并且计数值大于Duty_Cycle寄存器的值时,输出为1,否则输出为零。
3.2  模块集成
在XPS集成开发环境中,集成了一个creat/import peripheral wizard 工具,利用该向导工具就能轻松地创建或导入一个用户自定义的外设。在向导中我们只需选择与总线的接口是3个32位的寄存器即可,向导完成后,工程目录(project)中会自动生成drivers和pcores两个文件夹,两个文件夹中包含了自定义外设的相关信息,drivers文件夹里以应用程序接口函数(API)的形式提供了自定义外设的驱动程序,以完成对外设的读写和测试, 用户在开发包含自定义外设的高层应用软件时就可以直接调用这些接口函数。
在pcores文件夹底下有三个文件比较重要:user_logic、MPD和PAO文件,user_logic文件是集成工具生成的用户模板文件,该文件中给出了自定义逻辑与OPB总线的接口信号,用户只需根据接口信号的驱动要求,在用户模板中就能完成模块的功能设计。PWM外设与总线的接口描述如下:
entity user_logic is
generic
(   总线协议参数设置,不允许用户修改
C_AWIDTH : integer := 32;
C_DWIDTH : integer := 32;
C_NUM_CS : integer := 1;
C_NUM_CE : integer := 3
);
port
(
pwm_out    : out std_logic;    --这是PWM模块的输出端口
-- 以下是总线接口信号,不允许用户修改或删除,否则模块集成时将会出错
Bus2IP_Clk : in     std_logic;
Bus2IP_Reset : in     std_logic;
Bus2IP_Addr : in     std_logic_vector(0 to C_AWIDTH-1);
Bus2IP_Data : in     std_logic_vector(0 to C_DWIDTH-1);
Bus2IP_BE : in     std_logic_vector(0 to C_DWIDTH/8-1);
Bus2IP_CS : in     std_logic_vector(0 to C_NUM_CS-1);
Bus2IP_RdCE : in     std_logic_vector(0 to C_NUM_CE-1);
Bus2IP_WrCE : in     std_logic_vector(0 to C_NUM_CE-1);
IP2Bus_Data : out     std_logic_vector(0 to C_DWIDTH-1);
IP2Bus_Ack : out     std_logic;
IP2Bus_Retry : out     std_logic;
IP2Bus_Error : out     std_logic;
IP2Bus_ToutSup     : out std_logic
);
end entity user_logic;
其中Bus2IP_WrCE是处理器用来对外设的寄存器进行编址的信号,该信号与寄存器地址映射关系如表1所示。

本文引用地址:http://www.eepw.com.cn/article/116965.htm
其中C_BASEADDR是系统给外设分配的基地址,通过该地址,处理器就能访问外设的寄存器,在本例中系统分配给PWM外设的地址为0x7da00000。
MPD和PAO分别是处理器外设描述文件和外设分析文件,通过这两个文件集成开发工具XPS就能找到外设的各组成模块并正确识别它们。完成这两个文件的修改后,再次启动向导,并把MPD和PAO文件作为向导工具的输入,就能将PWM这一自定义逻辑集成到总线上去,其修改方法是:
(1)在MPD文件中例化PWM的端口,格式如下:
PORT pwm_out = "", DIR = O
(2)在PAO文件中声明已经完成PWM功能描述的用户模板,格式如下:
lib pwm_v1_00_a user_logic vhdl


关键词: SOPC IP核

评论


相关推荐

技术专区

关闭