基于Nios II 的自定制PWM模块设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

收稿日期:2009-03-05

基金项目:河南省教育厅科技攻关项目(2007480001)

作者简介:石新峰(1973-),男,河南巩义人,讲师,硕士,主要从事基于FPGA 的嵌入式系统开发研究.

基于Nios II 的自定制PWM 模块设计与实现

石新峰,牟光臣

(河南机电高等专科学校电子通信工程系,河南新乡453002)

摘要:详细论述了基于NiosII 软核处理器的PWM 外设模块的整个设计过程,最后构建SOPC 系统,并在开发

装置上进行了功能验证。文中所述的方法对于开发其它的用户自定义外设具有一定借鉴意义,按照Avalon 总线规范将各种自定义外设的驱动程序集成到SOPC Builder 的硬件抽象层中,进行设计复用,可以大大提高设计效率和提升数字系统的性能。

关键词:NiosII ;PWM ;Avalon 总线;SOPC Builder 中图分类号:TP332

文献标识码:A

文章编号:1673-6060(2009)03-0060-03

NiosII customized based on the PWM module of the design and implementation

Shi Xinfeng ,M ou Guangchen

(Henan Electrical and Electronics Communication Engineering College,Xinxiang 453002,China )Abstract:The designing process of PWM ’peripheral module had been detailed based on NiosII,build the SOPC

system and undertakes a functional verification on it.The design gives some referential help for developing other user -defined peripherals and it could improve the design efficiency and promote the performance function of the digital system by the means of integrating various user-defined peripheral driver in the rule of Avalon bus into the hardware abstract layer of SOPC Builder for design multiplxing.

Key words:Nios II ;PWM ;Avalon bus ;SOPC Builder

近年来,随着大规模FPGA 芯片的出现及相关开发平台的完善,为实现各种全数字化的PWM 系统提供了充分的技术基础.在开发各种信息家电或者其他工业控制系统时,将Nios II 软核处理器和PWM 等外设集成到系统主控FPGA 芯中,可以使得系统体积更小,成本更低,可靠性更高,更适合嵌入式系统的要求,而且具有现场可编程性,能够进行升级换代,具有广阔应用前景.

1Nios II 嵌入式系统外设的基本结构

Nios Ⅱ嵌入式处理器的外设除了SOPC Builder 编辑器中提供的常用模块外,还可以由设计者根据

自己的需要,按照Nios Ⅱ硬件抽象层(HAL )的元件定义规范编写自己的设备文件,并予以封装,从而在以后的开发中像其它常用外设一样进行复用.

自定义设备的文件系统如图1所示,通常由如下几部分组成,①硬件文件(.v 或.vhd ):用HDL 语言编写的自定义设备文件;②软件文件(.h ):用C 语言编写的设备寄存器定义文件以及设备的驱动程序文件;③设备描述文件(.Ptf ):本文件描述设备的结构,以及将其集成到系统中时所需要的信息.由SOPC

Builder 根据其硬件及软件文件自动生成.

硬件抽象层(HAL )为用户程序控制一般类型的外围硬件设备提供了标准的C 语言函数库,接口函

第37卷第3期373

Vol.No.河南科技学院学报

Journal of Henan Institute of Science and Technology

2009年9月2009

Sep.60

数与外设的读写操作等密切相关.对于自定义设备可将驱动程序集成到HAL 库中,使系统对其操作透明化.

2PWM 组件定制

2.1组件功能要求

本设计的PWM 按下列功能要求进行设计[1]:(1)任务逻辑使

用32位计数器为PWM 提供一个一定范围的周期和占空比,最大周期可设为232个CLK;(2)使用Nios II 32位软核处理器来设置PWM 的周期和占空比的值.为此需提供一个可对

PWM 寄存器进行读/写的接口和控制逻辑;(3)定义寄存器来

存储PWM 周期和占空比;(4)Nios II 软核可通过控制寄存器的禁止位来关闭PWM 输出.PWM 的输出将连接到FPGA 芯片外的一个直流电机上,通过控制PWM 外设的寄存器对电机转速进行控制.

按照设计要求,设定PWM 外设共有3个寄存器,分别为:

①Clock_Div :32位,控制信号周期;②Duty_Cycle :32位,控制脉冲宽度(即占空比);③Control :32位,最

后一位有效.

2.2PWM 模块的硬件设计

经过上述分析,可知PWM 设计的主要内容为以下几个方面:(1)功能逻辑设计:用硬件描述语言描述模块功能,这是设计的关键步骤;(2)寄存器定义:寄存器提供功能逻辑模块与外界交换信息的途径,通过访问控制寄存器的值,用户可以对Avalon 接口的外设进行控制,所以需要正确完备地定义寄存器名称并设定其各自地址;(3)Avalon 接口:Avalon 接口信号(即功能逻辑电路的接口信号)是硬件逻辑与

Avalon 总线进行连接的通道,使Nios II 软核通过Avalon 总线访问寄存器,实现相关控制功能,故而在

定制模块时应该正确指定接口的端口类型及数据类型.

2.3PWM 功能逻辑设计

PWM 功能逻辑结构如图2所示,由时钟(CLK )、PWM 输出、周期设置寄存器、使能控制寄存器、占

空比寄存器、32位计数器以及32位的比较电路等组成.CLK 作为32位计数器的时钟信号,计数器的计数值通过32位比较电路与占空比设定寄存器中的值进行比较,从而决定PWM 输出高电平或低电平.计数器的值小于或等于占空比寄存器时,PWM 端子输出低电平,否则输出为高电平.用PWM 周期设定寄存器来设置PWM 输出信号的周期.计数器的值等于周期设定寄存器中的设定值时,产生复位信号来清除计数器中的值.使能控制寄存器控制时钟信号CLK 有效或无效,即控制计数器记数与否,从而开启或者禁止PWM 波形的输出.

2.4PWM 寄存器定义及地址指定

为了实现灵活控制,需要将使能控制寄

存器、周期设定寄存器以及占空比设置寄存器等3个寄存器映射到Avalon 端口地址空间内的单独偏移地址[2],以使每个寄存器都能被读写.为此,需要设计两位地址,产生4个地址空间,用以区分三个寄存器.其定义及地址指定如表1所示,寄存器定义文件扩展名为“.h ”.

2.5PWM Avalon 接口逻辑的设计

本设计接口信号列表如表2所示.除此以外还有一个pwm_out 接口,但它

图2

PWM 功能逻辑结构

图1Nios II 外设基本结构

用户程序(C/C++语言编写)

C 标准库

HAL 用户接口函数

设备驱动程序(HDL 编写)

系统硬件电路

系统外部被控对象或输入设备Avalon Slave

端口信号

周期设置寄存器

使能控制寄存器占空比设置寄存器

清零信号

使能信号

CLK

32位

计数器

PWM 输出

石新峰等:基于Nios II 的自定制PWM 模块设计与实现第3期

61

相关文档
最新文档