NiosⅡ系统Avalon总线PWM设计

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

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

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

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

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

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

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

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

  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任务逻辑的结构图

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

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

 

PWM寄存器以及偏移地址列表

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

PWM与Avalon总线接口所需的信号

  2.1.2  硬件设计文件与仿真

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

Verilog编写的HDL文件

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

Quartus

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

  2.2软件设计

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

HAL的文件结构

  2.3  将PWM设计封装为SoPC Builder元件

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

   2.4  构建Nios系统

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

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

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

  C语言控制代码

  4结  语

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

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

上一篇:基于MAXII570的高精度同步时钟信号在分布式录波器中的实现
下一篇:基于NiosII的嵌入式网络通信系统

推荐阅读最新更新时间:2024-05-02 21:44

STM32 PWM输出控制步进电机-3000转每分钟串口显示+电位器调速
用电位器控制步进电机转速,可以控制正反转,在电位器中点停止;越往左翻转越快,越往右正转越快。速度均匀,包含滤波。付完整代码。全部测试正常。 单片机源程序: #include led.h #include delay.h #include key.h #include sys.h #include usart.h #include timer.h #include adc.h int main(void) { u16 adcx; float temp; int a=3999; //int b=0 u16 led0pwmval=200; u8
[单片机]
基于FPGA的SOPC的几个概念
1、SOC(System On Chip)   a):片上系统,单片上集成系统级、多元化的大功能模块,构成一个能够处理各种信息的集成系统 b):集成了许多功能模块的微处理器核的单芯片电路系统。   c):可以大大缩小系统所占的面积,提高系统的性能和健壮性。   d):已嵌入式系统为核心,集软硬于一体,并追求最高的集成度,是电子系统设计发展的必然趋势和最终目标。   e):由硬件和软件协同完成   2、SOPC(System On a Programmable Chip)   a):片上可编程系统,是Altera公司提出来的一种灵活的,高效的SOC解决方案,它将处理器、存储器(ROM、RAM等)、总线和总线控制器、I
[嵌入式]
Allegro发布全新四路DMOS全桥PWM电机驱动器IC
新产品具有自适应百分比快速衰减(APFD)功能,可以降低电流纹波,提高微步进准确度,减小可闻噪音 Allegro MicroSystems,LLC发布一款全新的四路DMOS全桥驱动器IC A5990,它可驱动两个步进电机或四个直流电机,每个全桥的额定输出高达1.6A和40V。Allegro的A5990集成有固定的关断时间脉宽调制(PWM)电流稳压器和2位非线性数模转换器(DAC),从而能够以整步进、半步进和四分之一步进行步进电机的控制,或者以向前、反转和滑行模式控制直流电机。对于每个全桥,可以通过独立的电流控制参考电压输入实现高分辨率微步进控制。A5990 PWM电流稳压器具有外部可调节的关断时间,可根据电源电压和电机参数调整电流
[电源管理]
利用PWM给HCS12单片机应用增加语音功能
随着嵌入式领域的拓展,目前许多微控制器芯片一般都不具备数据-模拟的双向通道,但几乎都集成有PWM产生模块。本文利用飞思卡尔公司HCS12单片机的PWM模块,还原存储在存储器中的声音采样数据,在几乎不增加成本的情况下,实现嵌入式应用中的扩展语音功能。   HCS12系列单片机未包含数/模转换的模块。要给其扩展语音功能,通常的做法是增加一块数/模转换芯片。虽然这样做可以得到非常好的音质(取决于数/模转换芯片的性能),但由于要多使用一块数/模转换芯片,在对音质要求不太高的应用中,会给设计增加额外的成本,同时也使电路设计相对复杂。   本文介绍利用PWM还原声音的解决方案,可以很好地解决这个矛盾。例如安全报警应用中,系统通常已经
[单片机]
基于Nios II软核的内河航标监控系统设计
阐述了基于NiosⅡ软核的内河航标监控系统的设计方法,及AD7862控制电路的VHDL设计。从系统的角度提出航标监控系统的完整设计方案,给出基于Nios II的航标监控终端硬件设计框图,并得到在Modesim中进行仿真的结果。根据现场运行情况显示,系统能实时地监测航标的工作状态,达到系统工业级的品质保证,并且具有高可靠性、高实时性和维护方便性等优点。 内河水运是国家综合运输体系和水资源综合利用的重要组成部分,是实现经济社会可持续发展的重要战略资源。航标是内河航道的基础助航设施,传统的航标管理模式落后,标准化程度低,实时性、安全性能差,已无法满足当前日益繁忙的航道运输所提出的高质量安全航行的需求。 Nios II是Altera公司推
[嵌入式]
MSP实时输出占空比可调的pwm波形
// 占空比可调的PWM, 我没试过, 手里没单片机, 只是记下. #include msp430x14x.h void main(void) { volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; // Stop WDT BCSCTL1 |= XTS; // ACLK= LFXT1 = HF XTAL do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i 0; i--) { // Time fo
[单片机]
4412 PWM
一、PWM原理 1.有源蜂鸣器和无源蜂鸣器的概念 有源蜂鸣器高电平就响,无源蜂鸣器需要PWM波才响。 2.PWM脉冲波 PWM = 定时器 + 定时器中断(重载) + IO输出(翻转) 3.分析原理图 GPIO-GPD0_0 XpwmTOUT0定时器0,同上面IO口 4.pwm定时器上的资源 5个32位定时器 定时器会产生内部中断 定时器0,1,2,3可以通过编程实现PWM,定时器4有内部计时而没有输出 定时器都有各自对应的分频区 TCNTBn--,TCNTBn=TCMPBn 5.分频器 图形24-2 XpwmTOUT0 = PRESCALER0 + MUX + TCMPB0 + TCNTB0 6.例
[单片机]
STM32基础7--通用定时器(PWM输出)
通用定时器框图 在通用定时器中,内部结构与基本定时器是不一样的。下面是通用定时器TIM10/TIM11 和 TIM13/TIM14的内部结构,可以看到它支持一个通(TIMx_CH1)道,其他的通用定时器内部结构不一样在于它们支持的通道数。 从图中可以看到,通用定时除了基本的定时(基本定时的作用)功能以外,还支持信号的输入,信号的输出,也多了一个捕捉比较寄存器。 PWM(Pulse Width Modulation—脉冲宽度调制技术) 在一个周期波形中,高电平占整个周期的比例称之为占空比,而高电平宽度通常被称为脉冲宽度。当我们在控制占空比,从而控制电路导通或者关闭时间,从而控制导通的有效电压。由于这个特性,我们在需要控制LE
[单片机]
STM32基础7--通用定时器(<font color='red'>PWM</font>输出)
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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