好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

5页
  • 卖家[上传人]:ss****gk
  • 文档编号:206246321
  • 上传时间:2021-10-30
  • 文档格式:DOC
  • 文档大小:133.50KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 基于FPGA的PWM与定时计数器IP核的设计刖nPWM是脉冲宽度调制(Pulse Width Modulation)的简称,在自动控制系统和计算机技术领 域都有非常广泛的应用在许多硬核式的嵌入式CPU中都有PWM和定时计数器模块的I/O 口供用户使用,在交流检测、电机控制等实际应用系统中,PWM是整个系统的技术核心, 在嵌入式操作系统中定时计数器也是不可缺少的部分而在FPGA中的SOPC中,很多时 候并没有提供这种模块供用户使用,因此设计出支持PWM输出的IP核具有很大的实用价 值针对市场上使用的FPGA情况,本文所提出的IP功能实现是基于Altera公司的cyclone II芯片,该功能模块不仅可以作为独立的模块使用,而且可以嵌入到Altera公司提供的NIOS II处理器中,并通过NIOS II对该模块进行控制HDL语言是一种通用性很强的语言,因此 这个模块具有很高的移植性,不仅可以用于大多数的Altera芯片,而且对于其它公司生产的 FPGA芯片同样适用本设计中给出了模块与主系统的接I」电路、功能逻辑电路以及外部输 出端曰1芯片功能描述木设计实现了 PWM输出和定时器/计数器两大功能,IP核将根据内部寄存器的状态选择相 应的工作模式完成系统的功能。

      l)PWM工作模式当IP工作在PWM模式下时,模块内 部计数器将计算高低电平脉冲的时间长度(或者是脉冲个数),模块根据用户日定义的PWM 输出脉冲占空比,产生具有占空比可调的二进制信号,最后以脉冲的形式输出2)定时器 /计数器工作形式当IP工作在定时器模式下时,芯片内部的32位定时器/计数器模块开始 计数时钟周期的个数,当时钟周期数达到内部寄存器的预设的数值,则产生一个中断信号 该信号可以被主系统识别,并产生相应的中断功能定时/计数的模式有单一循环和连续循 环两种方式,并有内部系统时钟源和外部时钟源供选择,工作方式与时钟源的选择通过置位 控制寄存器相应的位来选择不论芯片是工作在PWM模式下,还是工作在定时器/计数器 模式,它都必须使用内部寄存器如果内部寄存器的值达到了预设值后不再增加,那么芯片 应采取单一循环计数方式;如果内部寄存器的值达到了预设值后便复位,重新开始加1计数, 那么芯片应采取连续循环计数方式上述逻辑功能是通过AVALON交换结构与主系统端口 进行连接2 IP结构设计木设计的总体电路结构包含主系统电路接曰、芯片内部寄存器区和数据缓存区、芯片内部组 合逻辑电路模块和时序逻辑电路模块和独立的外部I/O端口 4个主要的功能模块,如图1所 示。

      PWM/Timer/Counter图1芯片总体结构图2.1设备接口电路主系统电路接曰使用的是基于AVALON总线标准的SoC (System-on-Chip)电路互连接口规 范,可以通过它与其他主系统(如NIOS II处理器)互连,共同组成功能更大的芯片假设 某个主系统设计需要应用木设计,完成PWM输出,或者完成定时、计数功能,那么必须按 下图所示的模型通过电路接口进行互连,这种互连结构由Quartus里的SOPC Builder日动完 成,用户只需要定义从端口的接口逻辑图2电路系统的应用模型AVALON标准的SoC (System-on-Chip)电路互连接口规范定义了两种类型的接口:主设备 接口和从设备接口本设计使用的从设备接口主设备和从设备按照下列步骤进行互连1) 主设备利用主接口向木设计芯片发送数据和功能请求2) AVALON总线结构对主系统的 数据进行翻译、打包,将其转换为接曰标准所能识别的格式3)从设备接曰交给从设备进 行数据独立处理,并不|何主系统返I口I数据AVALON交换结构能支持任何位宽度的总线(数 据总线与地址总线的总和)但为了能让IP有更好的移植性,使用的是32位的总线宽度。

      2.2寄存器描述寄存器是芯片电路实体区域与AVALON交换结构之间的缓冲区,这些寄存器的值联合起来 确定芯片的工作方式和操作类型木设计使用了 4类寄存器:(1) PRTC_CNTR寄存器PRTC.CNTR寄存器是芯片内部真正的计数寄存器,其存储的 数值每经过一个有效的计数/定时时钟周期(由系统时钟或外部时钟端口的输入)后自动加1 为了实现计数、定时,系统还需要根据RPTC_CTRL寄存器其他控制位的值来实现 RPTC_CNTR寄存器是32位宽度的计数寄存器,若复位清零,则它重新从开始向上加1 计数2) PRTC_HRC寄存器PRTC_HRC寄存器是芯片内部引用寄存器(信号缓存器)的第二 级输出,它具备以下两个功能:①若寄存器用作引用寄存器,贝U它可以用于输出芯片PWM 波形的高32位部分,也可以用于产生中断输出②若寄存溶用作信号缓存器(也称为信号 捕捉寄存器),则它在PTC_CAPT信号为高电平期间捕捉并缓存RPTC_CNTR寄存器的值 RPTC_CNTR寄存器是32位宽度的引用寄存器(信号缓存器),若芯片复位清零,则它的值 复位为Oo(3) PRTC_LRC寄存器PRTC_LRC寄存器是芯片内部引用寄存器(信号缓存器)的第一 级输出,它具备以下两个功能:①若寄存器用作引用寄存器,贝U它可以用于输出芯片PWM 波形的低32位部分,也可以用于产生中断输出。

      ②若寄存器用作信号缓存器(也称为信号 捕捉寄存器),则它在PTC.CAPT信号为低电平期间捕捉并缓存RPTC_CNTR寄存器的值 RPTC.CNTR寄存器也是32位宽度的引用寄存器(信号缓存器),若芯片复位清零,则它的 值复位为04) PRTC_CTRL寄存器RPTC_CTRL寄存器是芯片内部的控制寄存溶,它包含9bit控 制位,通过写这些控制位执行不同的逻辑功能2.3 IP内部逻辑设计芯片内部的电路模块包含了时钟分频模块、PWM输出与技术/定时器的引用比较模块以及中 断发生器模块利用这些电路模块,芯片提供了 PWM输出和定时器/计数器这两种工作模 式,可以根据控制寄存器PRTC.CTRL的值来选取工作模式其它的逻辑功能如对计数器里 的数值的捕获进行缓存,定时计数器时钟的选择都是由控制寄存器的相应的位的设置来进 行1) PWM输出模块芯片复位信号不能输出脉冲波形PWM模块由寄存器RPTC_HRC 和RPTC_LRC、比较器以及RS触发器构成寄存器RPTC_HRC存放的是输出脉冲高电平 持续的时钟周期数,寄存器RPTC_LRC存放的是输出脉冲低电平持续的时钟周期数2) 定时器/计数器模块。

      定时器/计数器模块由寄存器PRTC_LRC、寄存器RPTC_CNTR和寄存 器捕捉模块构成通过设置PRTC.LRC里的参数确定定时/计数时间,输出结果由PRTC.LRC 与RPTC_CNTR比较的结果来确定2.4逻辑功能仿真对模块的逻辑功能的仿真使用的是Quartus7.2版里自带的仿真工具,在编写好测试向量的波 形文件后即可对输出功能是否复合设计要求进行验证验证的结果是复合设计要求的,仿真 图如图3所示10. 0 ns 20. 0 ns 30. 0 ns 40. 0 ns 50. 0 ns 60. 0 ne28 . 7 nsJ□ wb_&dr_i0000 X 000C X 0004X 0008 X0000wb.clk_i 1 1 1 11 1 1 1—wb_cyc_i[] wb_d角t_iOOOOOOOF )(00000009 X 00000031J 00000029wb_rst_iS wb_sel_iz-Fwb-Stb_iwb_wE_iS wb_dat_o00000000 遍000丁唳访)0003醐伽侦点00X0000%叫成■歌骸好 以蜘wb_err_ooen_padoen_opwm_pad_owb_ack_oS rptc_cntr00000000X OOOOOOOF * 0000000EX 0000000X X 000000X9S rptc_ctrl厂ooo X021Ftl rptc_hrc厂00000000 :00000031S rptc^lrc厂00000000_J 000000293驱动程序设计要实现对IP硬件逻辑电路进行操作,也就是对参数进行操作或者是主设备对IP进行控 制,则要编写逻辑电路的驭动程序。

      NiosIIIDE为用户提供了设备驰:动程序,也就是硬件抽 象层(HAL)系统库,HAL应用程序接曰(API)与ANSI C标准库综合在一起就形成了上 层应用程序与下层硬件电路接曰平台设备驱动程序可以概括一组描述设备的数据结构和控制设备行为的函数集合,函数就是用来 实现设备的访问驱动程序执行过程如图4所示:图4设备驱动框图 对IP模块进行驱动程序开发的过程如下:(1) 创建一个设备头文件,用于描述设备的寄存器和访问方法在这个头文件中,要用清晰 易懂的宏符号描述出设备的四个寄存器,并给出访问方法头文件的文件名遵循 “pwm_timer_regs.h”的格式;用“IORD_v设备名>_v寄存器名〉”的形式定义寄存器的读访问方式;用“IOWR_v设备名>_v寄存器名〉”的形式定义寄存器的写访问方式;用“V设 备名>_v寄存器名>_v位域>_MSK”的形式定义寄存器位的掩码;用“V设备名>_v寄存器 名>_v位域>_OFST”的形式定义寄存器位的偏移位置2) 定义并实现设备驱动的功能IDE中的各种设备都是一个抽象的结构体,在SOPC+订 制这个设备,只有在驱动中实例化,才能在内存空间中开辟一块内存空间,而对内存的控制 的通过地址来实现的,通过这个地址和偏移地址就可以对IP模块的寄存器进行读写控制。

      设备实例化就可以按用广意图编写多种功能函数,这些函数在用户的应用程序中可以方便的 调用⑶ 将设备驱动集成到HAL中驱动程序开发完毕后,要把源程序文件放到约定的目录下, 并为模块编写一个控制IDE软件编译连接Makefile文件,这样驱动程序才能编译到HAL系 统库中文件格式如下:C_LIB_SRCS+=pwm_timer_regs.cASM_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芯 片上实现,具有很好的移植性,用户也可以根据需要对该模块的设计思想进行修改,以复合 实际需要,所以木设计具有很好的实用意义。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.