基于FPGA的PWM与定时计数器IP核的设计

上传人:凯和****啦 文档编号:299210132 上传时间:2022-05-27 格式:DOCX 页数:8 大小:19.43KB
返回 下载 相关 举报
基于FPGA的PWM与定时计数器IP核的设计_第1页
第1页 / 共8页
基于FPGA的PWM与定时计数器IP核的设计_第2页
第2页 / 共8页
基于FPGA的PWM与定时计数器IP核的设计_第3页
第3页 / 共8页
基于FPGA的PWM与定时计数器IP核的设计_第4页
第4页 / 共8页
基于FPGA的PWM与定时计数器IP核的设计_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《基于FPGA的PWM与定时计数器IP核的设计》由会员分享,可在线阅读,更多相关《基于FPGA的PWM与定时计数器IP核的设计(8页珍藏版)》请在金锄头文库上搜索。

1、本文格式为Word版,下载可任意编辑基于FPGA的PWM与定时计数器IP核的设计 基于FPGA的PWM与定时计数器IP核的设计 前言 PWM是脉冲宽度调制(Pulse Width Modulation)的简称,在自动操纵系统和计算机技术领域都有分外广泛的应用。在大量硬核式的嵌入式CPU中都有PWM和定时计数器模块的I/O口供用户使用,在交流检测、电机操纵等实际应用系统中,PWM是整个系统的技术核心,在嵌入式操作系统中定时计数器也是不成缺少的片面。而在FPGA中的SOPC中,好多时候并没有供给这种模块供用户使用,因此设计出支持PWM输出的IP核具有很大的实用价值。针对市场上使用的FPGA处境,本

2、文所提出的IP功能实现是基于Altera公司的cyclone II芯片,该功能模块不仅可以作为独立的模块使用,而且可以嵌入到Altera公司供给的NIOS II处理器中,并通过NIOS II对该模块举行操纵。HDL语言是一种通用性很强的语言,因此这个模块具有很高的移植性,不仅可以用于大多数的Altera芯片,而且对于其它公司生产的FPGA芯片同样适用。本设计中给出了模块与主系统的接口电路、功能规律电路以及外部输出端口。 1 芯片功能描述 本设计实现了PWM输出和定时器/计数器两大功能,IP核将根据内部寄放器的状态选择相应的工作模式完成系统的功能。(1)PWM工作模式。当IP工作在PWM模式下时

3、,模块内部计数器将计算上下电平脉冲的时间长度(或者是脉冲个数),模块根据用户自定义的PWM输出脉冲占空比,产生具有占空比可调的二进制信号,结果以脉冲的形式输出。(2)定时器/计数器工作形式。当IP工作在定时器模式下时,芯片内部的32位定时器/计数器模块开头计数时钟周期的个数,当时钟周期数达成内部寄放器的预设的数值,那么产生一个中断信号。该信号可以被主系统识别,并产生相应的中断功能。定时/计数的模式有单一循环和连续循环两种方式,并有内部系统时钟源和外部时钟源供选择,工作方式与时钟源的选择通过置位操纵寄放器相应的位来选择。不管芯片是工作在PWM模式下,还是工作在定时器/计数器模式,它都务必使用内部

4、寄放器。假设内部寄放器的值达成了预设值后不再增加,那么芯片应采取单一循环计数方式;假设内部寄放器的值达成了预设值后便复位,重新开头加1计数,那么芯片应采取连续循环计数方式。上述规律功能是通过AVALON交换布局与主系统端口举行连接。 2 IP布局设计 本设计的总体电路布局包含主系统电路接口、芯片内部寄放器区和数据缓存区、芯片内部组合规律电路模块和时序规律电路模块和独立的外部I/O端口4个主要的功能模块,如图1所示。 图1 芯片总体布局图 2.1 设备接口电路 主系统电路接口使用的是基于AVALON总线标准的SoC(System-on-Chip)电路互连接口模范,可以通过它与其他主系统(如NIO

5、S II处理器)互连,共同组告成能更大的芯片。假设某个主系统设计需要应用本设计,完成PWM输出,或者完成定时、计数功能,那么务必按下图所示的模型通过电路接口举行互连,这种互连布局由Quartus里的SOPC Builder自动完成,用户只需要定义从端口的接口规律。 图2 电路系统的应用模型 AVALON标准的SoC(System-on-Chip)电路互连接口模范定义了两种类型的接口:主设备接口和从设备接口。本设计使用的从设备接口。主设备和从设备按照以下步骤举行互连。(1)主设备利用主接口向本设计芯片发送数据和功能苦求。(2)AVALON总线布局对主系统的数据举行翻译、打包,将其转换为接口标准所

6、能识别的格式。(3)从设备接口交给从设备举行数据独立处理,并不向主系统返回数据。AVALON交换布局能支持任何位宽度的总线(数据总线与地址总线的总和)。但为了能让IP有更好的移植性,使用的是32位的总线宽度。 2.2寄放器描述 寄放器是芯片电路实体区域与AVALON交换布局之间的缓冲区,这些寄放器的值联合起来确定芯片的工作方式和操作类型。本设计使用了4类寄放器: (1) PRTC_CNTR寄放器。PRTC_CNTR寄放器是芯片内部真正的计数寄放器,其存储的数值每经过一个有效的计数/定时时钟周期(由系统时钟或外部时钟端口的输入)后自动加1。为了实现计数、定时,系统还需要根据RPTC_CTRL寄放

7、器其他操纵位的值来实现。RPTC_CNTR寄放器是32位宽度的计数寄放器,若复位清零,那么它重新从0开头向上加1计数。 (2)PRTC_HRC寄放器。PRTC_HRC寄放器是芯片内部引用寄放器(信号缓存器)的其次级输出,它具备以下两个功能:若寄放器用作引用寄放器,那么它可以用于输出芯片PWM波形的高32位片面,也可以用于产生中断输出。若寄放器用作信号缓存器(也称为信号抓获寄放器),那么它在PTC_CAPT信号为高电平期间抓获并缓存RPTC_CNTR寄放器的值。RPTC_CNTR寄放器是32位宽度的引用寄放器(信号缓存器),若芯片复位清零,那么它的值复位为0。 (3)PRTC_LRC寄放器。PR

8、TC_LRC寄放器是芯片内部引用寄放器(信号缓存器)的第一级输出,它具备以下两个功能:若寄放器用作引用寄放器,那么它可以用于输出芯片PWM波形的低32位片面,也可以用于产生中断输出。若寄放器用作信号缓存器(也称为信号抓获寄放器),那么它在PTC_CAPT信号为低电平期间抓获并缓存RPTC_CNTR寄放器的值。RPTC_CNTR寄放器也是32位宽度的引用寄放器(信号缓存器),若芯片复位清零,那么它的值复位为0。 (4)PRTC_CTRL寄放器。RPTC_CTRL寄放器是芯片内部的操纵寄放器,它包含9bit操纵位,通过写这些操纵位执行不同的规律功能。 2.3 IP内部规律设计 芯片内部的电路模块包

9、含了时钟分频模块、PWM输出与技术/定时器的引用对比模块以及中断发生器模块。利用这些电路模块,芯片供给了PWM输出和定时器/计数器这两种工作模式,可以根据操纵寄放器PRTC_CTRL的值来选取工作模式。其它的规律功能如对计数器里的数值的捕获举行缓存,定时计数器时钟的选择都是由操纵寄放器的相应的位的设置来举行。(1)PWM输出模块。芯片复位信号不能输出脉冲波形。PWM模块由寄放器RPTC_HRC和RPTC_LRC、对比器以及RS触发器构成。寄放器RPTC_HRC存放的是输出脉冲高电平持续的时钟周期数,寄放器RPTC_LRC存放的是输出脉冲低电平持续的时钟周期数。(2)定时器/计数器模块。定时器/

10、计数器模块由寄放器PRTC_LRC、寄放器RPTC_CNTR和寄放器抓获模块构成。通过设置PRTC_LRC里的参数确定定时/计数时间,输出结果由PRTC_LRC与RPTC_CNTR对比的结果来确定。 2.4 规律功能仿真 对模块的规律功能的仿真使用的是Quartus7.2版里自带的仿真工具,在编写好测试向量的波形文件后即可对输出功能是否复合设计要求举行验证。验证的结果是复合设计要求的,仿真图如图3所示。 3 驱动程序设计 要实现对IP硬件规律电路举行操作,也就是对参数举行在线操作或者是主设备对IP举行操纵,那么要编写规律电路的驱动程序。Nios II IDE为用户供给了设备驱动程序,也就是硬件

11、抽象层(HAL)系统库,HAL应用程序接口(API)与ANSI C标准库综合在一起就形成了上层应用程序与下层硬件电路接口平台。 设备驱动程序可以概括一组描述设备的数据布局和操纵设备行为的函数集合,函数就是用来实现设备的访问。驱动程序执行过程如图4所示: 图4 设备驱动框图 对IP模块举行驱动程序开发的过程如下: (1) 创造一个设备头文件,用于描述设备的寄放器和访问方法。在这个头文件中,要用明显易懂的宏符号描述出设备的四个寄放器,并给出访问方法。头文件的文件名遵循“pwm_timer_regs.h” 的格式;用“IORD_”的形式定义寄放器的读访问方式;用“IOWR_”的形式定义寄放器的写访问

12、方式;用“_MSK”的形式定义寄放器位的掩码;用“_OFST”的形式定义寄放器位的偏移位置。 (2) 定义并实现设备驱动的功能。IDE中的各种设备都是一个抽象的布局体,在SOPC中订制这个设备,只有在驱动中实例化,才能在内存空间中开发一块内存空间,而对内存的操纵的通过地址来实现的,通过这个地址和偏移地址就可以对IP模块的寄放器举行读写操纵。设备实例化就可以按用户意图编写多种功能函数,这些函数在用户的应用程序中可以便当的调用。 (3) 将设备驱动集成到HAL中。驱动程序开发完毕后,要把源程序文件放到商定的目次下,并为模块编写一个操纵IDE软件编译连接Makefile文件,这样驱动程序才能编译到H

13、AL系统库中。文件格式如下: C_LIB_SRCS += pwm_timer_regs.c ASM_LIB_SRCS += INCLUDE_PATH += 上面程序中,C_LIB_SRCS是放置欲编译的C文件,ASM_LIB_SRCS是欲编译的汇编文件,INCLUDE_PATH是要文件包含路径。完成以上步骤后,在SPOC Builder中添加该模块并定制到NIOS II处理器中,即可以在理应程序中对脉冲模块举行操作了。 4 结语 本文提出了一种基于FPGA的PWM/定时计数器的数字芯片设计思路,设计的规律电路用VHDL语言实现,设计的代码在Altera的Quartus II软件通过了综合、仿真、布线,并定制到NIOS II软核式CPU中,可以通过主设备对改模块举行操纵。由于HDL语言与编写驱动的C语言具有很好的通用性,该模块电路只需要做很少量的修改便可以在不同的FPGA芯片上实现,具有很好的移植性,用户也可以根据需要对该模块的设计思想举行修改,以复合实际需要,所以本设计具有很好的实用意义。 8

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号