0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Avalon总线的PWM外设实现NiosⅡ嵌入式处理器的设计

电子设计 来源:王玉花;郭书军 作者:现代电子技术 2020-03-18 08:00 次阅读

在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所示。

基于Avalon总线的PWM外设实现NiosⅡ嵌入式处理器的设计

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寄存器以及偏移地址列表。

基于Avalon总线的PWM外设实现NiosⅡ嵌入式处理器的设计

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

基于Avalon总线的PWM外设实现NiosⅡ嵌入式处理器的设计

2.1.2硬件设计文件与仿真

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

基于Avalon总线的PWM外设实现NiosⅡ嵌入式处理器的设计

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

基于Avalon总线的PWM外设实现NiosⅡ嵌入式处理器的设计

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

2.2软件设计

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

基于Avalon总线的PWM外设实现NiosⅡ嵌入式处理器的设计

2.3将PWM设计封装为SoPCBuilder元件

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

2.4构建Nios系统

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

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

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

基于Avalon总线的PWM外设实现NiosⅡ嵌入式处理器的设计

4、结语

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

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19156

    浏览量

    229092
  • 嵌入式
    +关注

    关注

    5068

    文章

    19014

    浏览量

    303166
  • 总线
    +关注

    关注

    10

    文章

    2866

    浏览量

    87978
收藏 人收藏

    评论

    相关推荐

    第05章 Nios嵌入式处理器设计

    第05章 Nios嵌入式处理器设计 242页 1.5M
    发表于 09-27 08:50

    采用nios和μClinux实现嵌入式系统设计

    如图l所示。 1 基于sopc的嵌入式硬件平台构建 不同于基于处理器或控制及soc的嵌入式系统,基于sopc的嵌入式系统具有可配置的特点,
    发表于 04-18 07:00

    Cyclone II FPGA和Nios II嵌入式处理器的优势

    在其业内领先的低成本Cyclone TM FPGA系列和Nios软核嵌入式处理器成功的基础上,Altera现在推出了第二代产品系列。Cyclone II器件为用户提供更高的逻辑密度和新增硬件性能,比
    发表于 07-18 07:43

    Avalon设备怎么定制?

    SoPCBuilder环境下加载使用,方便了用户开发一个自定制的片上系统。本文通过在Nios嵌入式系统内部集成了基于Avalon总线的脉冲宽度调制(
    发表于 08-21 08:20

    请问如何实现片上嵌入式Nios Ⅱ软核六处理器系统的设计?

    片上Nios嵌入式软核多处理器系统具有哪些优势?如何实现片上嵌入式Nios Ⅱ软核六
    发表于 04-19 08:17

    Nios II 嵌入式处理器 7.1 的新特性

    Nios II 嵌入式处理器 7.1 的新特性
    发表于 08-04 14:40 4次下载

    Nios II入门起步-创建一个嵌入式处理器系统

    Nios简单介绍: Nios II是一个用户可配置的通用RISC嵌入式处理器。在这儿,我引用了Altera公司关于NiosII的官方介绍: Altera推出的
    发表于 05-26 09:11 87次下载
    <b class='flag-5'>Nios</b> II入门起步-创建一个<b class='flag-5'>嵌入式</b><b class='flag-5'>处理器</b>系统

    基于Chirp函数的Nios嵌入式实现

    分析Chirp函数在频域上的一般特性,提出利用FPGA的嵌入式软核Nios处理器嵌入式操作系统μC/OS-Ⅱ上实现Chirp的方法
    发表于 06-15 11:02 1147次阅读
    基于Chirp函数的<b class='flag-5'>Nios</b> Ⅱ<b class='flag-5'>嵌入式</b><b class='flag-5'>实现</b>

    基于NIOS嵌入式软核处理器的LCD控制方法研究

    基于NIOS嵌入式软核处理器的LCD控制方法研究,很好的设计资料,快来学习吧。
    发表于 05-09 15:46 6次下载

    基于Nios系统的Avalon总线概述

    Nios系统的所有外设都是通过Avalon总线Nios CPU相接的,Avalon
    的头像 发表于 01-27 22:03 4859次阅读

    介绍如何用Nios II 软核处理器来开发FPGA嵌入式系统软件

    FPGA在嵌入式设计中的应用越来越普遍。了解怎样采用流行的Nios® II 软核处理器来轻松开发FPGA嵌入式系统软件。 在这一5分钟的视频中,您将: 观看Cyclone®
    的头像 发表于 06-22 02:01 4531次阅读

    嵌入式处理器的种类有哪些

    总线逻辑等各种必要功能和外设之外,嵌入式微处理器值保留和嵌入式应用紧密相关的功能硬件,确保以功耗实现
    发表于 07-23 08:45 2.1w次阅读

    基于Nios II实现AVALON总线与USB控制的接口设计

    随着电路规模越来越大,片上系统(SoC)已经成为IC设计的发展趋势,相应地也有了更加灵活的片上可编程系统(SOPC)。Nios II CPU是一个基于流水线设计的通用RISC微处理器,拥有五级流水线
    发表于 04-11 17:01 1532次阅读
    基于<b class='flag-5'>Nios</b> II<b class='flag-5'>实现</b><b class='flag-5'>AVALON</b><b class='flag-5'>总线</b>与USB控制<b class='flag-5'>器</b>的接口设计

    FPGA Nios嵌入式处理器的硬件开发

    本章将介绍Nios 处理器的硬件开发环境和硬件开发的整个流程。一个简单Nios 开发系统包括Nios 嵌入式
    发表于 01-15 15:57 5次下载
    FPGA <b class='flag-5'>Nios</b><b class='flag-5'>嵌入式</b><b class='flag-5'>处理器</b>的硬件开发

    NiOS处理器Avalon总线架构资料下载

    电子发烧友网为你提供NiOS处理器Avalon总线架构资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可
    发表于 04-27 08:54 9次下载
    <b class='flag-5'>NiOS</b>Ⅱ<b class='flag-5'>处理器</b>的<b class='flag-5'>Avalon</b><b class='flag-5'>总线</b>架构资料下载