五邑大学sopc实验报告:基于自定义PWM的乐曲演奏实验.doc

成绩 指导教师 日期张歆奕 2015-6-29实验三基于自定义 PWM 的乐曲演奏实验二、实验要求1、理解 PWM 设计原理2、设计 PWM 自定义组件3、利用 SOPC Builder 构建乐曲演奏电路的微处理器系统4、构建硬件设计电路5、编写乐曲 C 语言程序6、用 niosII 软件下载程序,调试 3、实验原理1、PWM 的基本原理PWM 即脉冲宽度调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有ON,要么完全无OFF。电压或电流源是以一种通ON或断OFF的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。 多数负载无论是电感性负载还是电容性负载需要的调制频率高于 10Hz,通常调制频率为 1kHz 到 200kHz 之间。2、乐曲演奏原理用 niosII 软件控制组件,实现 PWM 控制蜂鸣器的输入信号的频率,改变蜂鸣 器鸣叫的音的长短、响度等。3、乐曲演奏电路的微处理器系统微处理系统如图 1 所示NiosllLLRAMAVALON_MMCYCLONEIIDE2_70蜂鸣器 图 1 乐曲演奏电路的微处理器系统 四、实验过程 1、用 HDL 设计带 avalon slave 接口的 PWM 控制器PWM 自定义组件的设计,如下1)clkPWM 输入时钟;2)resetPWM 复位信号;3)chipselect PWM 使能信号;4)addressPWM 寄存器地址信号;5)writePWM 写信号;6)writedata PWM 写数据;7)read PWM 读信号;8)byteenable字节使能信号;9)readdata PWM 读出数据;10) PWM_outPWM 输出信号。程序如下module mypwmclk,reset_n,chipselect,address,write,writedata,read,readdata,byteenable,pwm_out; clk; reset_n; chipselect; write; read;310 writedata;output310 readdata;30 byteenable;10 address;output pwm_out;reg310 clock_divide_reg;PWM 输出一个周期中包含的时钟周期数PWMLLJtag Uart sysidLLreg310 duty_cycle_reg;reg control_reg;reg clock_divide_reg_selected;reg duty_cycle_reg_selected;reg control_reg_selected;reg310 pwm_counter;PWM 计数值reg310 readdata;reg pwm_out;wire pwm_enable;address decodealwaysaddressbeginclock_divide_reg_selected0;duty_cycle_reg_selected0;control_reg_selected0;caseaddress0clock_divide_reg_selected1;1duty_cycle_reg_selected1;2control_reg_selected1;defaultbeginclock_divide_reg_selected0;duty_cycle_reg_selected0;control_reg_selected0;endendcaseend写 PWM 输出周期的时钟数寄存器alwaysposedge clk or negedge reset_nbeginifreset_nbeginclock_divide_reg0;endelse beginifwrite ifbyteenable1 clock_divide_reg158writedata158;ifbyteenable2 clock_divide_reg2316writedata2316;ifbyteenable3 clock_divide_reg3124writedata3124;endendend写 PWM 周期占空比寄存器alwaysposedge clk or negedge reset_nbeginifreset_nbeginduty_cycle_reg0;endelse beginifwrite ifbyteenable1 duty_cycle_reg158writedata158;ifbyteenable2 duty_cycle_reg2316writedata2316;ifbyteenable3 duty_cycle_reg3124writedata3124;endendendalwaysposedge clk or negedge reset_n写控制寄存器beginifreset_nbegincontrol_reg0;endelse beginifwrite endendend读寄存器alwaysaddress or read or duty_cycle_reg or control_reg or clock_divide_regbeginifread 当 PWM 计数值大于或等于 PWM 输出一个周期中包含的时钟周期数时,计数值为 0else pwm_counterpwm_counter1;endelse pwm_counter0;endendalwaysposedge clk or negedge reset_nbeginifreset_n pwm_out1b0;else beginifpwm_enablebeginifpwm_counter 头文件define f 1000000define rhythm 5000000define ff f*50define _1 rhythm*4define _1d rhythm*6define _2 rhythm*2define _2d rhythm*3define _4 rhythm*1define _4d rhythm*3/2define _8 rhythm*1/2define _8d rhythm*3/4define _16 rhythm*1/4define _16d rhythm*3/8define _32 rhythm*1/8 定义音长define _1do ff/131/2define _1dor ff/139/2define _1re ff/147/2define _1rer ff/155/2define _1mi ff/165/2define _1fa ff/175/2define _1far ff/185/2define _1sol ff/196/2define _1solr ff/207/2define _1la ff/220/2define _1lar ff/233/2define _1si ff/247/2 宏定义低音define _do ff/262/2define _dor ff/277/2define _re ff/294/2define _rer ff/311/2define _mi ff/330/2define _fa ff/349/2define _far ff/370/2define _sol ff/392/2define _solr ff/416/2define _la ff/440/2define _lar ff/466/2define _si ff/492/2 宏定义中音define _do1 ff/523/2define _do1r ff/554/2define _re1 ff/579/2define _re1r ff/740/2define _mi1 ff/651/2define _fa1 ff/695/2define _fa1r ff/740/2define _sol1 ff/784/2define _sol1r ff/830/2define _la1 ff/880/2define _la1r ff/932/2define _si1 ff/983/2 宏定义高音define song_size 50 定义曲长define mutetone tone3 定义弱音define loudtone tone2 定义强音int little_starsong_size3_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, 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,_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, 5_fa,_4,mute_fa, 4_fa,_4,mute_fa, 4_mi,_4,loud_mi, 3_1mi,_8,mute_1mi, 3_1mi,_8,mute_1mi, 3_re,_4,mute_re, 2_re,_4,mute_re, 2_do,_2,mute_do, 1;延时函数(延时时间为22*ius)void delayalt_u32 cnt 延时函数alt_u32 i 0;whilei cnti;int main 主函数int i;while1fori0;isong_size;iIOWRMYPWM_0_BASE,2,1; 打开 PWM 端口IOWRMYPWM_0_BASE,0, little_stari0; 读取声调IOWRMYPWM_0_BASE,1, little_stari2; 读取音强delay little_stari1; 延时音拍IOWRMYPWM_0_BASE,2,0; 关闭 PWM 输出端口delay500000;100msreturn 0; 六、思考题1、有源蜂鸣器和无源蜂鸣器的区别答蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种有源蜂鸣器内置振荡电路,直接加电源就可以正常发声,通常频率固定。 无源蜂鸣器则需要通过外部的正弦或方波信号驱动,直接加电源只能发出很轻微的振动声。

C语言sopc蜂鸣器按键弹奏中音,五邑大学sopc实验报告:基于自定义PWM的乐曲演奏实验.doc...相关推荐

  1. C语言sopc蜂鸣器按键弹奏中音,SOPC乐曲演奏大作业.doc

    PAGE 1 综合实验 基于NiosII的乐曲演奏设计 单 位: 班 级: 组 员: 指导老师: 首 都 师 范 大 学 2012年5月 目录 TOC \o "1-3" \h \u ...

  2. C语言sopc蜂鸣器按键弹奏中音,基于sopc 蜂鸣器

    基于sopc的 蜂鸣器 实验 实验五 蜂鸣器音乐播放实验 一.实验目的 (1).掌握蜂鸣器音乐播放的实验原理. (2).学习PWM对交流蜂鸣器的控制. 二.实验设备 硬件:PC机,SmartSOPC教 ...

  3. C语言二叉树实验报告流程图,二叉树的建立与遍历实验报告(c语言编写,附源代码).doc...

    二叉树的建立与遍历实验报告(c语言编写,附源代码).doc 第 1 页,共 9 页二叉树的建立与遍历实验报告级 班 年 月 日 姓名 学号_ 1实验题目建立一棵二叉树,并对其进行遍历(先序.中序.后序 ...

  4. 电力系统matlab实验报告,基于matlab语言计算电力系统暂态稳定仿真程序实验报告.docx...

    基于matlab语言计算电力系统暂态稳定仿真程序实验报告 BeijingJiaotongUniversity 电力系统分析 暂态稳定分析实验 学院:电气工程学院 班级:xxxxxxxx 学号:xxxx ...

  5. c语言进程控制实验报告,操作系统进程的创建与控制实验报告.doc

    操作系统实验报告 实验一 进程的创建和控制 班 级: 12计算机12班 学 号: 127401219 姓 名: 刘艳仙 成 绩: 2013年 实验目的 1.掌握进程的概念,明确进程的含义 2.复习C语 ...

  6. c语言课程设计文本编辑器实验报告6,C课程设计简易文本编辑器.doc

    C课程设计简易文本编辑器 目录 第一章 课程设计目的和要求1 1.1课程设计的目1 1.2 基本要求1 第二章 课程设计任务内容2 2.1 设计背景2 2.2简易文本编辑器设计内容2 第三章 详细设计 ...

  7. 运城学院C语言题目,C语言课程设计实验报告【运城学院计算机科学与技术系】.doc...

    C语言课程设计.通讯录管理系统 第 PAGE 4 页 共 NUMPAGES 14 页 <程序设计基础> 课程设计报告 课程设计题目 通讯录管理系统 指导教师:____李 萍____ 班 级 ...

  8. c语言三元组稀疏矩阵的转置实验报告,稀疏矩阵三元组实现矩阵转置算法实验报告.doc...

    稀疏矩阵三元组实现矩阵转置算法实验报告.doc 1实验三稀疏矩阵的三元组表示实现矩阵转置算法学院专业班学号姓名一.实习目的1掌握稀疏矩阵的三元组顺序表存储表示:2掌握稀疏矩阵三元组表示的传统转置算法的 ...

  9. c语言张振国实验报告,基于VisualC的黄金分割法程序设计实验报告.doc

    基于VisualC的黄金分割法程序设计实验报告 新疆农业大学机械交通学院 实验报告 基于Visual C 的黄金分割法程序设计 一 .实验目的 1. 加深对机械优化设计方法的基本理论和算法步骤的理解: ...

  10. python语言程序设计实验报告关于分支结构_分支程序设计实验报告|分支结构程序设计...

    . . . . . 实验二 分支程序设计 一.实验目的: 1.学习分支程序的设计方法 2.熟悉在PC机上建立.汇编.连接.调试和运行汇编语言程序的过程 二.实验环境: 硬件环境 IBM/PC 及其兼容 ...

最新文章

  1. Android Studio项目引入外部库注意事项(PullToRefresh)
  2. Alpha版使用说明
  3. 《编译原理》第三章知识点
  4. 架构之:微服务架构漫谈
  5. Nginx 简单命令
  6. MFC+ODBC操作Access数据库pdf版
  7. [BZOJ] 3231: [Sdoi2008]递归数列
  8. 转载-C#委托之多播委托( 二)
  9. 进程信号(信号、信号的注册与注销、信号的处理方式)
  10. Nginx 502 Bad Gateway 自动重启脚本
  11. TransUNet:Transformers医学图像分割强编码器
  12. 微电子电路——例题总结
  13. 关于架构师:角色、能力和挑战
  14. UEG/A-2H2D单稳态中间继电器
  15. 测试团队的建设和管理
  16. 【附源码】计算机毕业设计SSM食疗养生服务平台
  17. 云服务器连接不上怎么办
  18. 基于FFMPEG采集摄像头图像编码MP4视频+时间水印
  19. k8s cheat sheet
  20. 全球及中国泵真空系统行业发展战略与十四五布局规划报告2022版

热门文章

  1. 新产品、新团队、新技术
  2. Eclipse中启动tomcat访问404解决及原因
  3. 5.软件架构设计:大型网站技术架构与业务架构融合之道 --- 网络
  4. 10.看板方法---设置在制品限额
  5. 12.TCP/IP 详解卷1 --- 广播和多播
  6. 5. Web 的结构组件
  7. mysql 批量更新_MySQL批量更新
  8. np合并 python_Python办公自动化自动更新不对称表格
  9. 在utf8和gb2312中 不同编码情况下,汉字 数字 英文占的字节数?
  10. php实现微信网页授权回调代理