五邑大学sopc实验报告:基于自定义PWM的乐曲演奏实验_第1页
五邑大学sopc实验报告:基于自定义PWM的乐曲演奏实验_第2页
五邑大学sopc实验报告:基于自定义PWM的乐曲演奏实验_第3页
五邑大学sopc实验报告:基于自定义PWM的乐曲演奏实验_第4页
五邑大学sopc实验报告:基于自定义PWM的乐曲演奏实验_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成绩指导教师日期张歆奕2015-6-29 实验三:基于自定义PWM的乐曲演奏实验二、实验要求1、理解PWM设计原理2、设计PWM自定义组件3、利用SOPC Builder构建乐曲演奏电路的微处理器系统4、构建硬件设计电路5、编写乐曲C语言程序6、用niosII软件下载程序,调试 3、 实验原理1、PWM的基本原理      PWM即脉冲宽度调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。P

2、WM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。 多数负载(无论是电感性负载还是电容性负载)需要的调制频率高于10Hz,通常调制频率为1kHz到200kHz之间。2、 乐曲演奏原理用niosII软件控制组件,实现PWM控制蜂鸣器的输入信号的频率,改变蜂鸣 器鸣叫的音的长短、响度等。3、乐曲演奏电路的微处理器系统微处理系统如图1所示:Niosll

3、LL RAM AVALON_MMPWMLLsysidLLJtag Uart CYCLONEII DE2_70 蜂鸣器 图1 乐曲演奏电路的微处理器系统 四、实验过程 1、用HDL设计带avalon slave接口的PWM控制器 PWM自定义组件的设计,如下:1) clk:PWM输入时钟;2) reset:PWM复位信号;3) chipselect:PWM使能信号;4) address:PWM寄存器地址信号;5) write:PWM写信号;6) writedata:PWM写数据;7) read:PWM读信号;8) byteenable:字节使能信号;9) readdata:PWM读出数据;10)

4、 PWM_out:PWM输出信号。程序如下:module mypwm(clk,reset_n,chipselect,address,write,writedata,read,readdata,byteenable,pwm_out);input clk;input reset_n;input chipselect;input write;input read;input31:0 writedata;output31:0 readdata;input3:0 byteenable;input1:0 address;output pwm_out;reg31:0 clock_divide_reg;/PW

5、M输出一个周期中包含的时钟周期数reg31:0 duty_cycle_reg;reg control_reg;reg clock_divide_reg_selected;reg duty_cycle_reg_selected;reg control_reg_selected; reg31:0 pwm_counter;/PWM计数值reg31:0 readdata;reg pwm_out;wire pwm_enable;/address decodealways(address)beginclock_divide_reg_selected=0;duty_cycle_reg_selected=0;

6、control_reg_selected=0;case(address)0:clock_divide_reg_selected=1;1:duty_cycle_reg_selected=1;2:control_reg_selected=1;default:beginclock_divide_reg_selected=0;duty_cycle_reg_selected=0;control_reg_selected=0;endendcaseend/写PWM输出周期的时钟数寄存器always(posedge clk or negedge reset_n)beginif(!reset_n)begincl

7、ock_divide_reg=0;endelse beginif(write & chipselect & clock_divide_reg_selected)beginif(byteenable0) clock_divide_reg7:0=writedata7:0;if(byteenable1) clock_divide_reg15:8=writedata15:8;if(byteenable2) clock_divide_reg23:16=writedata23:16;if(byteenable3) clock_divide_reg31:24=writedata31:24;e

8、ndendend/写PWM周期占空比寄存器always(posedge clk or negedge reset_n)beginif(!reset_n)beginduty_cycle_reg=0;endelse beginif(write & chipselect & duty_cycle_reg_selected)beginif(byteenable0) duty_cycle_reg7:0=writedata7:0;if(byteenable1) duty_cycle_reg15:8=writedata15:8;if(byteenable2) duty_cycle_reg23

9、:16=writedata23:16;if(byteenable3) duty_cycle_reg31:24=writedata31:24;endendend always(posedge clk or negedge reset_n)/写控制寄存器beginif(!reset_n)begincontrol_reg=0;endelse beginif(write & chipselect & control_reg_selected)beginif(byteenable0) control_reg=writedata0;endendend/读寄存器always(address

10、or read or duty_cycle_reg or control_reg or clock_divide_reg)beginif(read & chipselect)case(address)0:readdata <= clock_divide_reg;1:readdata <= duty_cycle_reg;2:readdata <= 31'h0000,control_reg;default:readdata <= 32'h8888;endcaseendassign pwm_enable=control_reg;always(posed

11、ge clk or negedge reset_n)beginif(!reset_n) pwm_counter=0;elsebeginif(pwm_enable)beginif(pwm_counter >= clock_divide_reg) pwm_counter=0;/当PWM计数值大于或等于PWM输出一个周期中包含的时钟周期数时,计数值为0 else pwm_counter=pwm_counter+1;endelse pwm_counter=0;endendalways(posedge clk or negedge reset_n)beginif(!reset_n) pwm_out

12、=1'b0;else beginif(pwm_enable)beginif(pwm_counter<= duty_cycle_reg) pwm_out=1'b1;/当PWM计数值大于或等于PWM输出一个周期为低电平时包含的时钟周期数时,计数值为0else pwm_out=1'b0;endelse pwm_out=1'b0;endendendmodule2、 用SOPC Builder的组件编辑器设计用户自定义组件添加nios processor,onchip memory,JATAG UART等,并把工程目录下的mypwm.v加入进来,完成sopc系统配置

13、,生成SOPC系统。3、 用niosII软件控制组件,实现蜂鸣器的鸣叫基于NiosII IDE的工程创建、程序编译及下载,聆听并验证乐曲的音调、音色是否准确。小星星的C语言程序 歌曲名称:小星星#include "system.h"#include <io.h> /头文件#define f 1000000#define rhythm 5000000#define ff f*50#define _1 rhythm*4#define _1d rhythm*6#define _2 rhythm*2#define _2d rhythm*3#define _4 rhyth

14、m*1#define _4d (rhythm*3)/2#define _8 (rhythm*1)/2#define _8d (rhythm*3)/4#define _16 rhythm*1/4#define _16d (rhythm*3)/8#define _32 (rhythm*1)/8 /定义音长#define _1do (ff/131)/2#define _1dor (ff/139)/2#define _1re (ff/147)/2#define _1rer (ff/155)/2#define _1mi (ff/165)/2#define _1fa (ff/175)/2#define _

15、1far (ff/185)/2#define _1sol (ff/196)/2#define _1solr (ff/207)/2#define _1la (ff/220)/2#define _1lar (ff/233)/2#define _1si (ff/247)/2 /宏定义低音#define _do (ff/262)/2#define _dor (ff/277)/2#define _re (ff/294)/2#define _rer (ff/311)/2#define _mi (ff/330)/2#define _fa (ff/349)/2#define _far (ff/370)/2#d

16、efine _sol (ff/392)/2#define _solr (ff/416)/2#define _la (ff/440)/2#define _lar (ff/466)/2#define _si (ff/492)/2 /宏定义中音#define _do1 (ff/523)/2#define _do1r (ff/554)/2#define _re1 (ff/579)/2#define _re1r (ff/740)/2#define _mi1 (ff/651)/2#define _fa1 (ff/695)/2#define _fa1r (ff/740)/2#define _sol1 (ff

17、/784)/2#define _sol1r (ff/830)/2#define _la1 (ff/880)/2#define _la1r (ff/932)/2#define _si1 (ff/983)/2 /宏定义高音 #define song_size 50 /定义曲长#define mute(tone) (tone)>>3 /定义弱音#define loud(tone) (tone)>>2 /定义强音int little_starsong_size3=_do,_4,loud(_do), /1_do,_4,mute(_do), /1_sol,_4,mute_sol),

18、 /5_sol,_4,mute(_sol), /5_la,_4,mute(_la), /6_la,_4,mute(_la), /6_sol,_2,mute(_sol), /5_fa,_4,loud(_fa), /4_fa,_4,mute(_fa), /4_mi,_4,mute(_mi), /3_1mi,_8,mute(_1mi), /3_1mi,_8,mute(_1mi), /3_re,_4,mute(_re), /2_re,_4,mute(_re), /2_do,_2,loud(_do), /1_sol,_4,loud(_sol), /5_sol,_4,mute(_sol), /5_fa,_

19、4,mute(_fa), /4_fa,_4,mute(_fa), /4_mi,_4,mute(_mi), /3_mi,_4,mute(_mi), /3_re,_2,mute(_re), /2_sol,_4,mute(_sol), /5_sol,_4,mute(_sol), /5_fa,_4,loud(_fa), /4_fa,_4,mute(_fa), /4_mi,_4,mute(_mi), /3_mi,_4,mute(_mi), /3_re,_2,mute(_re), /2_do,_4,loud(_do), /1_do,_4,mute(_do), /1_sol,_4,mute(_sol), /5_sol,_4,mute(_sol), /5_la,_4,mute(_la), /6_la,_4,mute(_la), /6_sol,_2,mute(_sol),

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论