NiosⅡ系统Avalon总线PWM设计

发布者:BlissfulSpirit最新更新时间:2012-09-15 来源: 自动化在线关键字:NiosⅡ系统  Avalon总线  PWM 手机看文章 扫描二维码
随时随地手机看文章

在NiosⅡ系统的构建过程中,SoPCBuilder开发环境集成了许多常用类型的设备模型,供开发者调用。在日新月异的嵌入式系统设计中开发环境所集成的接口设备是非常有限的,有时无法满足开发者的需要,SoPCBuilder开发工具允许用户依据规则扩展自己的所需设备,完成系统的设计和开发,开发者按照Avalon总线规范将设备驱动程序集成到SoPCBuilder的硬件抽象层(HAL)中,在SoPCBuilder环境下加载使用,方便了用户开发一个自定制的片上系统。本文通过在NiosⅡ嵌入式系统内部集成了基于Avalon总线的脉冲宽度调制(PWM)从外设,介绍了自定制Avalon设备的过程。将其应用在嵌入式智能小车监控系统,为采用NiosII处理器的开发者提供了一些方法和建议。

1定制基于Avalon总线的用户外设介绍

NiosⅡ的Avalon总线不同于其他微处理器的固定外设,NiosⅡ的外设是可以任意定制的,这使得用户可以根据具体的应用需求而定制。所有的NiosⅡ系统外设都是通过Avalon总线与NiosⅡ软核相连,从而进行数据交换。因此对于用户定义的外设必须遵从该总线协议才可与NiosⅡ之间建立联系。

Avalon信号接口定义了一组信号类型片选、读使能、写使能、地址、数据等,用于描述主从外设上基于地址的读写接口。外设使用准确的信号与其内核逻辑进行接口,并删除会增加不必要开销的信号。

在NiosⅡ系统中一个自定义设备由如下几部分组成:

(1)硬件文件:用HDL语言编写的描述自定义设备元件逻辑的硬件描述文件。

(2)软件文件:用C语言编写的设备寄存器文件以及设备的驱动程序文件。

(3)设备描述文件(Ptf):本文件描述了设备的结构,包含SoPCBuilder配置以及将其集成到系统中时所需要的信息。本文件由SoPCBuilder根据硬件文件以及软件文件自动生成。

2基于NiosⅡ系统的PWM设计

PWM是利用数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于从测量、通信到功率控制与变换的许多领域中。实际上PWM是一种对模拟信号电平进行数字编码的方法,通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电或者完全有,或者完全无。电压或电流源是以一种通或断的重复脉冲序列被加到模拟负载上。通即是直流供电被加到负载上,断即是供电被断开。只要带宽足够,任何模拟值都可以使用PWM进行编码。

2.1硬件设计

硬件文件指的是HDL文件,由以下几个模块组成:

逻辑模块:描述设备的逻辑功能;

寄存器映射模块:为内部逻辑模块和Avalon总线提供了通信接口;

Avalon总线接口模块:使Avalon总线访问寄存器从而完成相应的逻辑功能。

2.1.1逻辑结构

对于自定义的PWM也是由以上几部分模块组成。PWM按照以下要求设计:

(1)任务逻辑按一个简单时钟进行同步操作。
(2)任务逻辑使用32位计数器为PWM提供一个一定范围的周期和占空比,最大周期可设为232个clk。
(3)可以使用微控制器来设置PWM的周期和占空比的值,因此要提供一个可对寄存器进行读写的接口和控制逻辑。
(4)定义寄存器来存储PWM周期和占空比的值。
(5)微控制器可以通过控制寄存器的禁止位关闭PWM输出。

PWM任务逻辑的结构图如图1所示。

PWM任务逻辑由输入时钟(clock)、输出信号端口(pwm_out)、使能位、32位计数器以及一个32位比较电路组成。clk作为32位计数器的时钟信号,32路比较电路比较32位计数器的当前值与占空比设定寄存器(DutyCycleValueRegister)中的值来决定pwm_out的输出为高或低。当当前计数器中的值小于或等于占空比寄存器中的值时,pwm_out输出低电平,否则输出高电平。PWM周期设定寄存器(Modulo_nValueRegister)用来设置pwm_out的信号周期,当当前计数器的值等于周期设定寄存器中的设定时,产生一个复位信号来清除计数器中的值。使能控制寄存器(EnableControlRegister)能使时钟信号有效或无效,即控制计数器是否计数,从而保持pwm_out输出保持当前不变。

PWM内部包括使能控制寄存器(EnableControlRegister)、周期设定寄存器(Modulo_nValueRegister)以及占空比设定寄存器(DutyCycleValueRegister),如图1所示。设计中将各寄存器映射成Avalon从端口地址空间内一个单独的偏移地址。每个寄存器都能进行读/写访问,软件可以读回寄存器中的当前值。表1是PWM寄存器以及偏移地址列表。

PWM的Avalon接口需要一个简单的从端口,该端口使用Avalon总线信号完成寄存器的读/写传输。PWM与Avalon总线接口所需的信号如表2所示。


2.1.2硬件设计文件与仿真

PWM硬件设计文件包含表3所示的三个Verilog编写的HDL文件。

pwm_tasK_logic.v完成PWM的逻辑功能,图2是此文件在QuartusⅡ环境下的仿真波形。

图2中:clock_divide信号设定PWM输出周期的时钟数,dutv_cycle信号设定一个周期内PWM输出低电平的时钟个数,两个信号设定值决定PWM信号的占空比和周期。 [page]

2.2软件设计

如果要使Nios软核能够访问自定义的设备,就必须根据先前的硬件设计按照硬件提取层的文件结构编写设备驱动程序。以PWM为例说明HAL的文件结构,如表4所示。


2.3将PWM设计封装为SoPCBuilder元件

当硬件文件和软件文件都已建立好后,便可以通过SoPCBuilder中带有的设备编辑器将自定义设备封装到开发环境内部,在构建NiosⅡ系统时可以对其直接调用。在SoPCBuilder中单击CreatNewComponent,创建新元件向导添加HDL文件、设置信号和接口添加软件,最终生成包含描述文件、用户存放硬件描述文件的文件夹以及用来包含HAL软件文件的HAL文件夹。

2.4构建Nios系统

构建好的内核文件在QuartusⅡ中编译,生成pof配置文件下载到E2PROM芯片中,接下来就可以使用NiosIDE开发环境编辑用户程序,以及通过JTAGBlaster或者USBBlaster在目标板上对应用程序进行调试。

3自定制外设PWM在嵌入式智能小车监控系统中的应用

智能小车监控系统设计应用周立功公司SmartSoPC核心板,FPGA为Altera公司的EPlC12,NiosⅡ处理器作为嵌入式CPU,机器人车电机共有两个,左轮电机和右轮电机。该部分包括电机驱动电路和电机控制电路,即左电机的驱动与控制以及右电机的驱动与控制。驱动电路采用CTMicroelectronics公司的大功率直流电机驱动芯片L289,调速控制采用PWM来控制汽车的前进速度,由FPGA写入控制字,可得到不同占空比的PWM驱动信号,此PWM信号送人电机驱动芯片的控制端来调节速度。调用电机驱动程序,改变PWM占空比,输出PWM波,实现电机的速度控制。用PWM信号控制直流电动机速度,频率较低时,电动机不会稳定运转,频率较高时,PWM信号的驱动效率降低。经过多次实际电路的测试,调试结果显示当频率在500~1000Hz时,效果较好。部分C语言控制代码如下:


4结语

NiosⅡ嵌入式处理器是用户可配制的通用RISC嵌入式处理器,是一个非常灵活和强大的处理器。基于此种技术的嵌入式系统设计可以方便地将一般设备和自定义设备模块集成到系统中,丰富了接口资源,从而能使用户快速地开发一个自定制片上系统,提高了效率,缩短了开发周期。本文通过自定制PWM外围设备的方法,并通过硬件测试证明了方案的可行性和正确性,希望能够为采用NiosⅡ处理器的开发人员提供一些方法和建议。

关键字:NiosⅡ系统  Avalon总线  PWM 引用地址:NiosⅡ系统Avalon总线PWM设计

上一篇:基于MODBUS现场总线的大型设备监测监控系统的研究
下一篇:CAN总线镍氢电池管理解决方案

推荐阅读最新更新时间:2024-05-02 22:19

PWM逻辑电路及输出电路
图1中,V8为振荡电路产生的振荡脉冲,其占空比为50%,由该脉冲决定开关器件的工作频率。V1为原边电流采样电阻上的压降,V2为输出电压的反馈值,V3是用于驱动开关管的信号。V2经过PI调节器进行误差放大后输入到比较器的反向端,与输入到比较器同向端的经过误差放大后的V1值进行比较,从而决定V3的脉宽大小。逻辑电路产生的信号经过输出级后用来驱动MOSFET的开通和关断,该信号(V3)的占空比与输出电压的反馈值V2成反比,实现电压反馈式的控制环,同时,该信号的占空比还与输入的直流电压值成反比,以实现电路的前馈控制。V3信号由经过放大后的原边电流的采样电阻上的电压值和经过PI调节器的输出电压的反馈值共同来控制。图2为各个反馈信号的误差放大值
[电源管理]
<font color='red'>PWM</font>逻辑电路及输出电路
stm32103R8C6 捕捉2路pwm 串口打印捕捉数据
第一路使用定时器2的通道1,先捕捉一个上升沿,清楚所有数据开始捕捉下降沿,捕捉到下降沿后再捕捉一个上升沿。 第二路使用定时器4的通道4,使用其他通道的时候要注意,定时器的中断时CC4,设置上升沿和下降沿的时候也要改为通道4。 //定时器2通道1输入捕获配置 TIM_ICInitTypeDef TIM2_ICInitStructure; void TIM2_Cap_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef
[单片机]
stm32103R8C6 捕捉2路<font color='red'>pwm</font> 串口打印捕捉数据
增强定时计数器和PWM输出功能
1.1 引言 随着计算机技术和电力电子技术的发展,变频驱动技术凭借其优异的性能,在当今交流调速领域的应用越来越广。 变频驱动主要使用的驱动波形主要有SPWM和SVPWM两种。SPWM原理简单、实现容易,是现在使用最广的一种变频驱动波形。但其有一个致命的弱点是其电源利用率不高(只有86%)、谐波成分大。因此,在新近开发的产品中其应用逐渐被性能优异的SVPWM所取代。 SVPWM是一种电压利用率、低谐波成分的变频驱动波形,还有开关次数少、功率管功耗小等特点。同时,SVPWM还能很好的结合矢量控制算法、以最大限度的发挥设备的性能。因此被越来越多的变频设备所采用。 1.2 芯片简介 SPMC75系列MCU是凌阳
[单片机]
增强定时计数器和<font color='red'>PWM</font>输出功能
ATMEGA128 PWM输出系列例程
1、定时器0,快速PWM模式 快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定PWM的频率,而比较匹配寄存器的值决定了占空比的大小。PWM频率的计算公式为: PWM频率 = 系统时钟频率/(分频系数*(1+计数器上限值)) 快速PWM模式适合要求输出PWM频率较高,但频率固定,占空比调节精度要求不高的应用。 #include #include #define uint unsigned int #define uchar unsigned char volatile uchar num; void pwm0_init(void) { DDRB=0X
[单片机]
Maxim推出新型4串、HB LED驱动器MAX16814
  日前,Maxim推出高度集成的4串HB (高亮度) LED驱动器MAX16814,每通道可输出高达150mA电流。器件集成了构建LCD TV、监视器和汽车显示器中高性能背光驱动器所需的所有功能。通过这种集成架构,MAX16814能够为设计者提供高性价比方案,在保持高性能的同时大大简化了照明设计。   MAX16814集成了开关DC-DC控制器,用于产生驱动多串LED所需的电压。器件还具有4个带有片内功率MOSFET的线性电流吸收电路,为每串LED提供最高150mA的可编程电流。自适应输出电压控制架构优化了效率,极大地降低了LED电流吸收通路的功耗。这种架构省去了多个外部元件,简化了空间受限
[电源管理]
PWM控制技术在逆变电路中的应用
1 引言 在电力电子技术发展史上,逆变电路占据非常重要的一环,而PWM控制技术在逆变电路又处于核心地位,如何将PWM控制技术应用到逆变电路当中是摆在广大科技工作者面前一大难题。针对这个问题,本文首先阐述了PWM控制技术的基本原理,然后详细地研究了单极性SPWM和双极性SPWM实现方法,最后将PWM控制技术和单相桥式逆变电路结合起来分析并应用,并通过仿真实验验证了PWM控制技术在逆变电路的成功应用。 2 PWM控制技术的基本原理及实现方法 2.1 PWM控制技术的基本原理介绍 根据信号与系统知识可知,冲量相同而形状不一样的窄脉冲加在惯性环节上时,其输出作用相同。如图1(a)、(b)和(c)所示的三个波形分别为矩形波脉冲、三
[嵌入式]
AVRmega16通过一个定时器实现多路IO口输出多路可调的PWM
本人在做舞蹈机器人时,想到了通过一个定时器实现多路IO口输出多路可调的PWM,用于控制舞蹈机器人各部分的舵机。这个方法比较简洁而且实现自己的要求,且易于理解。 /*角度值:15度500us(10)——215度2500us(50) 端口A0——A5 B0——B5 C0——C5 */ #include iom16v.h #include macros.h #define uint unsigned int #define uchar unsigned char #define dt 70 #define sp 18 #pragma interrupt_handler timer0:10 #pragma interru
[单片机]
PWM DC/DC转换器功率开关器件的对偶
  半导体开关器件是有极性的,因此在用开通与关断互为对偶这一基本原则,以决定开关管或开关二极管的对偶器件时,要注意它们的极性。当然,二极管的对偶器件还是二极管,开关管的对偶器件也仍然是开关管。   如图1(a)是一个串联晶体管原电路,如图1(b)为它的对偶电路。其中开关管V与V‘对偶,电压源与电流源对偶,电阻R与电导G对偶。电路中各支路的正方向是给定的,称为有向支路。由有向支路组成的有向图,可以画出任一电路的有向主电路图。在画对偶有向图时,对偶有向支路必须与原有向图中相应支路成 90°,并了解对偶图的正方向规则。      如图1晶体管开关电路   规则1:原电路中取顺时针方向为网孔电流正方向,则对偶电路中独立节点(才目对于参
[电源管理]
<font color='red'>PWM</font> DC/DC转换器功率开关器件的对偶
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved