




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉理工大学FPGA应用课程设计 课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位:信息工程学院 题目:电子琴的设计 课程设计目的: FPGA原理与应用课程设计的目的是为了让学生熟悉基于VHDL语言进行 FPGA开发的全流程,并且利用FPGA设计进行专业课程理论知识的再现,让学生体会 EDA技术的强大功能,为今后使用 FPGA进行电子设计奠定基础。 课程设计内容和要求 设计内容: (1)设计一个八音电子琴。 (2)由键盘输入控制音响,同时可自动演奏乐曲。 (3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已 存入的乐曲。 要求每个学生单独完成课程设计内容,并写出
2、课程设计说明书、说明书应该包括所 涉及到的理论部分和充足的实验结果,给出程序清单,最后通过课程设计答辩 时间安排: 序号 阶段内容 所需时 间 1 方案设计 1天 2 软件设计 2天 3 系统调试 1天 4 答辩 1天 合计 5天 指导教师签名:年 月 日 系主任(或责任教师)签名: II 武汉理工大学FPGA应用课程设计 目录 摘要 1 Abstract 2 1设计意义和要求 3 1.1设计意义 3 1.2功能要求 3 2方案论证及原理分析 4 2.1实现方案比较 4 2.2乐曲实现原理 4 2.3系统组成及工作原理 6 3系统模块设计 8 3.1顶层模块的设计 8 3.2乐曲自动演奏模块的
3、设计 8 3.3音阶发生器模块的设计 9 3.4数控分频器模块的设计 9 4程序设计 11 4.1VHDL设计语言和ISE环境简介 11 4.2顶层模块的程序设计 12 4.3乐曲自动演奏模块的程序设计 13 4.4音阶发生器模块的程序设计 13 4.5数控分频模块的程序设计 14 5设计的仿真与实现 15 5.1乐曲自动演奏模块仿真 15 5.2音调发生模块仿真 18 5.3数控分频模块仿真 19 5.4电子琴系统的仿真 20 5.5设计的实现 22 5.6查看RTL视图 23 5.7查看综合报告 25 6心得体会 31 7参考文献 32 8附录 33 iii 武汉理工大学FPGA应用课程设
4、计 随着基于FPGA勺EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、 通信、自动控制用计算机等领域的重要性日益突出。EDA技术就是以计算机为工具,设 计者在EDA软件平台上,用硬件描述语言 HDL完成设计文件,然后由计算机自动地完成 逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适 配编译、逻辑映射和编程下载等工作。 利用EDAX具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工 作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或 PCB版图的整个过程的计算机上自动处理完成。 此次设计主要是基于 VHD文本输入法
5、设计乐曲演奏电路,运用VHDL语言对简易电 子琴的各个模块进行设计,并使用 EDAT具对各模块进行仿真验证。该系统基于计算机 中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响或者 自动演奏已存入的歌曲。系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个 部分组成。选择手动弹奏模式按键时,按下音符键后就会选通相应的频率输出;选择自 动演奏模式按键时,储存器会将编写好的音符信息依次取出,去选通各个对应的频率输 出,实现自动演奏。系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进 行编程、时序仿真、电路功能验证,奏出美妙的乐曲(当然由于条件限制,暂不进行功 能验
6、证,只进行编程和时序仿真)。 关键词:EDA VHDL电子琴,自动演奏 42 Abstract With the expa nsion and further FPGA-based EDA tech no logy developme nt and applicati ons, the importa nee of EDA tech no logy in the field of electro nic in formatio n, com muni catio n, computer and other automatic con trol have become in creas in g
7、ly prominent. EDA tech no logy is to the computer as a tool desig ner in the EDA software platform, hardware descripti on Ian guage HDL complete the desig n file and the n automatically done by computer logic compilation, simplification, segmentation, integration, optimization, placement, routing an
8、d simulation, until for specific target chip adapter compilation, mapping and logic program ming dow nl oad work. Use of EDA tools, electro nic desig ners from con cept, algorithms, protocols, and so began the design of electronic systems, a lot of work can be done by computer and electronic product
9、s can be from the circuit design, performance analysis to the entire process of IC layout design or layout of the PCB automatic processing is completed on the computer. The desig n is mainly based on VHDL text in put music performa nce circuit desig n, each module using VHDL Ian guage of simple flow
10、er desig n, and the use of EDA tools for simulation of each module. The system is based on the principle of the computer clock divider, using top-dow n desig n approach to achieve, through the key in put to con trol the sound or song to automatically play has bee n deposited. System from automatical
11、ly play ing music module, tone generator module and NC divider module three parts. When you select the manual mode after the play butt on, it will note is pressed the corresp onding freque ncy strobe output; Select Auto Play mode butt on, the reservoir will be removed in order to write good music in
12、 formati on, each corresp onding to the freque ncy of the strobe output, automatic play ing. System impleme ntati on is hardware descripti on Ian guage VHDL by a modular approach to design, and then programming, timing simulation, circuit functional verification, play won derful music (of course, du
13、e to con strai nts, they will not perform functional verification, and timing simulation program only). Key words: EDA, VHDL, electro nic orga n, automatic play 1设计意义和要求 1.1设计意义 电子琴作为音乐与科技的产物,在电子化和信息化的时代,为音乐的大众化做出了 很大的贡献,歌曲的制作大多数都要由电子琴来完成,然后通过媒介流传开来,电视剧 和电影的插曲、电视节目音效、甚至手机铃声,都很可能包含电子琴的身影。 电子琴是数字电路中的一
14、个典型应用。然而在实际的硬件设计中用到的器件非常 多,连线比较复杂,同时会产生比较大的延时,从而造成测量误差较大,可靠性不好。 以EDA工具作为开发手段,运用 VHDL硬件描述语言可以使使整个系统大大简化,提 高了电子琴整体的性能和可靠性。 1.2功能要求 1)设计一个八音电子琴; 2)由键盘输入控制音响,同时可自动演奏乐曲; 3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存 入的乐曲。 2方案论证及原理分析 2.1实现方案比较 方案一:采用数字逻辑电路制作,用IC拼凑焊接实现。其特点是直接用现成的IC 组合而成,简单方便,但本系统需用到许多分频器,这就使得需要用到相当
15、多的 IC,从 而造成了体积过于庞大,而且连线也会比较复杂。 方案二:由单片机来完成设计。可用单片机控制键盘的输入,以及产生相应的频率 信号作为输出。目前,单片机的功能已比较强大,集成度日益增高且其设计和控制比较 容易。但是由于在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电 路,如锁存器,译码器等都需要单独的电路,因此整个系统显得十分复杂,抗干扰性差, 在运行过程中容易死机或进入死循环,可靠性降低,而功耗费用增高。 方案三:采用可编程逻辑器件(FPGA来完成该设计,将所有器件集成在一块芯片 上,大大减小了电子琴的体积,可靠性和精度都比较好。用 VHDLS程实现时更加方便, 而且
16、易于进行功能扩展,并可调试仿真,制作时间大大缩短。 综合分析后我认为,方案三采用 FPGA的方法来实现,不仅可以实现按键播放音乐 和自动播放音乐的要求,有较高的灵敏度和可靠性。并且原理方法和模块结构清晰,制 作方案比较容易实现,所以我采用方案三作为具体实现方案。 2.2乐曲实现原理 乐曲都是由一连串的音符组成,按照乐曲的乐谱依次输出这些音符所对应的频率, 就可以在扬声器上连续地发出各个音符的音调。为了准确地演奏出一首乐曲,仅仅让扬 声器能够发出声音是远远不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时 间。由此可见,乐曲中每个音符的发音频率以及音符持续的时间是乐曲能够连续演奏的 两个关键
17、因素。 乐曲的12平均率规定:每2个八度音之间的频率要相差1倍,比如简谱中的中音2 与高音2。在2个八度音之间,又可分为12个半音。另外,音符A(简谱中的低音5)的 频率为392Hz,音符E到F之间、B到C之间为半音,其余为全音。由此可以计算出简 谱中从低音I至高音1之间每个音符的频率。简谱音名与频率对应关系如表2-1所示: 音名 频率/Hz 音名 频率/Hz 音名 频率/Hz 低音1 262 中音1 523 高音1 1047 低音2 296 中音2 587 高音2 1175 低音3 330 中音3 659 高音3 1319 低音4 350 中音4 698 高音4 1397 低音5 392 中
18、音5 784 高音5 1568 低音6 440 中音6 880 高音6 1760 低音7 494 中音7 988 高音7 1976 表2-1简谱音名与频率的对应关系 使用一分频器来产生各音符所需的频率,但由于各音符对应的频率多为非整数,而 分频系数又不能为小数,所以必须将计算得到的分频数四舍五入取整数。若分频器时钟 频率过低,则由于分频系数过小,四舍五入取整数后的误差较大;若时钟频率过高,虽 然误差变小,但分频数将会变大。在实际的设计中应综合考虑这两方面的因素,在尽量 减小频率误差的前提下取合适的时钟频率。实际上,只要各个音符间的相对频率关系不 变,演奏出的乐曲听起来都不会走调。 设计的音乐电
19、子琴选取32MHZ的系统时钟频率。在数控分频器模块,首先对时钟 频率进行4分频,得到8MHZ的输入频率,然后再次分频得到各音符的频率。由于数控 分频器输出的波形是脉宽极窄的脉冲波,为了更好的驱动扬声器发声,在到达扬声器之 前需要均衡占空比,从而生成各音符对应频率的对称方波输出。这个过程实际上进行了 一次二分频,将脉冲展宽。 因此,分频系数的计算可以按照下面的方法进行。以中音1为例,对应的频率值为 523Hz,它的分频系数应该为: 4MHZ 523 4 106 523 7648 至于其他音符,可由上式求出对应的分频系数,这样利用程序可以很轻松地得到相 应的乐声。各音名对应的分频系数如表 2-2所
20、示: 音名 频率/Hz 分频系数 音名 频率/Hz 分频系数 中音1 523 7648 高音1 1047 3820 中音2 578 6920 高音2 1175 3404 中音3 659 6069 高音3 1319 3032 中音4 698 5730 高音4 1397 2863 中音5 784 5102 高音5 1586 2522 中音6 880 4545 高音6 1760 2272 中音7 988 4048 高音7 1976 2024 低音5 392 10204 低音6 440 9090 表2-2各音名对应的分频系数 音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。因此,要控制音符 的
21、音长,就必须知道乐曲的速度和每个音符所对应的节拍数。如果将全音符的持续时间 设为1s的话,那么一拍所应该持续的时间为 0.25秒,则只需要提供一个4HZ的时钟频 率即可产生四分音符的时长。 至于音长的控制,在自动演奏模块,每个乐曲的音符是按地址存放的,播放乐曲时 按4HZ的时钟频率依次读取简谱,每个音符持续时间为0.25秒。如果乐谱中某个音符 为三拍音长,那又该如何控制呢?其实只要在3个连续地址存放该音符,这时就会发三 个0.25秒的音长,即持续了三拍的时间,通过这样一个简单的操作就可以控制音长了。 2.3系统组成及工作原理 2.3.1系统组成 整个系统由乐曲自动演奏模块、音调发生器模块和数控
22、分频器模块三个部分组成。 乐曲自动演奏模块又包含了键盘的编码,并且设置了一个自动演奏/键盘输入切换auto 乐曲自动演奏模块的作用是产生发声控制输入信号。音调发生器根据发声控制输入产生 获得音阶的分频预置值(即分频系数)。数控分频器根据分频预置值对 FPGA的基准频 率进行分频,得到与各个音阶对应的频率输出。系统组成框图如图2-1所示。 图2-1系统组成框图 2.3.2系统工作原理 系统的基准时钟脉冲为 32MHz,所以在本设计中需要将其进行分频,以得到所需 要的脉冲来发出相应的音符。键盘输入一共有9个按键,除了 8个音符对应的按键之外, 还设置一个自动演奏/键盘输入切换auto,它不是一个单
23、独的模块,它和其他按键一起包 含在乐曲自动演奏模块中,作用相当于一个开关。 当auto= “0”时,选择自动演奏音乐存储器里面的乐曲,自动演奏模块以4Hz的频 率输出8位发声控制输入信号,再送入音调发生器。当 8位发声控制输入信号中的某一 位为高电平时,则对应某一音阶的数值将在端口 tone输出,该数值即为该音阶的分频预 置值,音调发生器还输出音符显示信号、高低音显示信号。最后由数控分频模块按照音 调发生器输出的分频预置值进行分频,得到存储的乐曲的音符的频率,之后由扬声器输 出对应的声调。 auto= “T时,选择键盘输入的信号,8个按键分别对应8个音符,自动演奏模块 将按键输入转化为8位发声
24、控制输入信号送入音调发生器,最后通过数控分频模块得到 按键对应的音符的频率,之后由扬声器输出对应的声调。 3系统模块设计 3.1顶层模块的设计 VHDL采用的是自顶向下的设计方式,顶层模块由乐曲自动演奏(automusic),音 调发生器(tone)和数控分频器(speake)三个模块组成。其中乐曲自动演奏部分 (automusic)又包括了键盘编码,还设置了一个自动演奏/键盘输入切换auto,即当auto= “0”时,选择自动演奏音乐存储器里面的乐曲,auto= “ 1”时,选择由键盘输入的信号, 再对其进行编码。两种情况下输出的都是八位二进制数,对应音调发生器的输入。图3-1 即是顶层模块
25、设计原理图。 图3-1顶层模块设计原理图 3.2乐曲自动演奏模块的设计 为了实现电子琴的功能要求,需要设计一个自动演奏模块,该模块的作用是产生8 位发声控制输入index。当auto为“0”或“ 1”时可以选择自动演奏或者键盘输入,如 果auto为“ 0”,则由存储在此模块中的8位二进制数来作为发声控制输入index,由此 便可自动演奏乐曲;当auto为“1”时,则由键盘的输入转化为8位2进制数作为发声 控制输入index。此模块的VHDL语言中包括三个进程,首先是对基准脉冲进行分频得 到4Hz的脉冲,作为第二个进程的时钟信号,它的目的是控制每个音阶之间的停顿时间, 此处便是1/4=0.25s
26、;第二个进程完成自动演奏部分乐曲的地址累加;第3个进程是输出 存储的自动演奏的乐曲或键盘输入的发声控制输入in dex。乐曲自动演奏模块如图3-2 所示。 I 4ii4 LJ kIdL.lk:4 I. .1-:4L.1iiJL 4bd-:4li.l- I i,aa ruia r iarin!* irrrnr : automusic;: I 4GI4 L 4 k4L J k4 t .1-4LiiJL4 LdS4li! _am Auto Jfa d L J adb.l C0DEv=0001111;HIGHTONE0=8191;CODE=0000001;HIGHNew Source.,选择文件 类型
27、为Test Bench Waveform 键入文件名“ Testautomusic,单击“ Next” ,在本步骤中 可以将波形文件与automusic.vhd文件进行关联,如图5-1所示。继续单击“ Next”直 到完成。 图5-1波形与VHDL文件关联 此时,HDL Bencher程序启动,如图5-2所示,可以选择哪一个信号是时钟信号并 可以输入所需的时序需求,系统时钟信号为 32MHz但是由于限制只能选择时钟周期为 32ns,因此仿真时时钟信号为 31.25MHz 图5-2仿真时间参数设置 这时出现了如图5-3所示的波形图,可以单击波形图中的蓝色方块来设置波形电平 的高低,并可以拉动仿真
28、时间线。此时设置 Auto= “0”,选择自动演奏。 图5-3 HDL Bencher中输入波形的设置 (2) 设计的仿真 单击 Sourcese 窗 口中的 testbench,则在 Processes 窗 口 中显示 Xilinx ISE Simulator X具栏,扩展开后,右键单击Simulator Behavioral Model,选择 Properties,对 Simulation Run Time 输入 10000ns,单击 OK 按钮,如图 5-4 所示。 I5E SijnulatQx Pr upffrl ice J3*pr *Li|f Us 1 ills*;SnTjL*4i
29、匚吗and. SFaJle Custwi SimuL4ili匸mi ud. ?!* Km. Th4F X Th12 ; 7T1?4 X 7T12D ) i 7T10F ; (rtot) 讷他 0 1 . codeia600 Cmoo 图5-11 HDL Bencher中输入波形的设置 (2)设计的仿真 单击 Sourcese 窗 口中的 testbench,则在 Processes 窗 口 中显示 Xilinx ISE Simulator X具栏,扩展开后,右键单击 Simulator Behavioral Model,选择 Properties,对 Simulation Run Time 输
30、入 900us,单击 OK 按钮,如图 5-12 所示。 JSBProperties 皿 ” Iki 匚魚Shnativii ffttai Fii 右骐tn,林 C*事订 紬 E轻海皓;Tim S use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -32MHz系统时钟 -键盘输入/自动演奏 -音符显示信号 -键盘输入信号 -高低音节信号 -音频信号 en tity top is Port ( clk32MHz :in std_logic; han dTOauto
31、 : in std_logic; code1:out std_logic_vector(6 dow nto 0); in dex1:in std_logic_vector(7 dow nto 0); high1:out std_logic; spkout:out std_logic); end top; architecture Behavioral of top is comp onent automusic Port ( clk :in std_logic; Auto: in std_logic; in dex2:i n std_logic_vector(7 dow nto 0); in
32、dex0 : out std_logic_vector(7 dow nto 0); end comp onent; comp onent tone Port ( in dex : in stdo gic_vector(7 dow nto 0); code : out std_logic_vector(6 dow nto 0); high : out std_logic; toneO : out integer range 0 to 8191); end comp onent; comp onent speaker Port ( clk1 : in std_logic; tone1 : in i
33、n teger range 0 to 8191; spks : out std_logic); end comp onent; sig nal ton e2: in teger range 0 to 8191; sig nal in dx:stdo gic_vector(7 dow nto 0); begin u0:automusic port map(clk=clk32MHZ,i ndex2=in dex1,i ndex0=in dx,Auto=ha ndtoAuto); u1: tone port map(index=indx,tone0=tone2,code=code1,high=hig
34、h1); u2: speaker port map(clk1=clk32MHZ,t on e1=t on e2,spks=spkout); end Behavioral; 乐曲自动演奏模块: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; en tity automusic is Port ( clk,Auto : in std_logic;-系统时钟;键盘输入 /自动演奏 in dex2 : in stdo gic_vector(
35、7 dow nto 0);-键盘输入信号 in dex0 : out std_logic_vector(7 dow nto 0);-音符信号输出 end automusic; architecture Behavioral of automusic is sig nal coun t0:i nteger range 0 to 31;-cha nge sig nal clk2:std_logic; begin pulse0:process(clk,Auto)-此进程完成对系统时钟8M的分频,得到4Hz的信号clk2 variable coun t:i nteger range 0 to 8191
36、; begin if Auto=1 then coun t:=0;clk2=0; elsif clkeve nt and clk=1 the n coun t:=co un t+1; if cou nt=4000000 then clk2=1; elsif cou nt=8000000 then clk2=0;cou nt:=0; end if; end if; end process; music:process(clk2)-此进程完成自动演奏部分曲的地址累加 begin if clk2event and clk2=1 then if cou nt0=31 then cou nt0=0; e
37、lse coun t0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 in dex0 index0 nu II; end case; else in dex0 tone0=7648;code=1001111;high ton e0=6920;code=0010010;high ton e0=6069;code=0000110;high tone0=5730;code=1001100;high ton e0=5102;code=0100100;high ton e0=4545;code=0100000;high tone0=4048;code=0001111;high ton e0=3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CPSM考试辅导课试题及答案
- 中医康复理疗师必考技巧试题及答案
- 2024年专升本思政命题特点试题及答案
- 书信格式与写作试题及答案
- 婚纱摄影合同(2025年版)
- 2024专升本语文文化研究试题及答案
- 二零二五年度人力资源服务平台合作协议
- 2025年度退股后续事宜处理专项协议
- 二零二五年度合肥市劳动合同续签与终止服务协议
- 2025年度茶叶品牌授权与区域市场运营合同
- 年产10万升无血清培养基技改项目环评报告表
- 一文读懂泡泡玛特
- 招收士官学历专业审定表
- 社区卫生服务站管理制度管理办法
- 大型活动报备申请表(样本)
- 品质异常奖罚规定001
- 2006年上海市中考数学试题及答案(共10页)
- 扁桃体癌的护理查房
- SF6气体检漏仪说明书
- 最新高人总结长期股权投资-通俗易懂式讲解资料
- 离心泵设计计算说明书
评论
0/150
提交评论