图 3-2 小糊涂神曲谱 1. 软件硬件 1EP3C40Q240C8 芯片 2实验箱底板电路(包括蜂鸣器、 7段数码管、 Led 灯1个、拨码开关 3 个、 Key 按键 7个) 3 Quartus Ⅱ 4计算 1 使用两个时钟分别为 12MHz 和8Hz 的时钟,分别供分频驱动器(数控分频器)与计数器使用。 2计数器完成计数功能,分为两个计数器 counter1 和counter2 ,counter 1 计数到 269 ,counter2 计数到 163 ,都是在上升沿来临时计数。 3 四个音乐模块分别记录了 2 首歌的乐谱。根据上一模块计数器所计的数读取相应地址里的数据传递给下一模块。 4选择器完成选择歌曲的功能。 5 数据翻译模块将选择器所选择的歌曲里的地址的数据翻译成分频驱动器(数控分频器)分频所需的控制数据、 1个led 灯数据(中低音) 、以及译码器所需的数据。 6分频驱动器也就是一个数控分频器,完成分频的功能,并驱动蜂鸣器。 7译码器将乐谱数据在 led 数码管上显示。 计数器及歌曲存储模块( notetabs ) 计数器完成计数功能,分为两个计数器,分别计到 269 和163 ,因为两首歌曲的最大字符分别为 269 和163 ,存储的两首歌是《采蘑菇的小姑娘》、《小糊涂神》,曲谱如下: 图 3-1 采蘑菇的小姑娘曲谱 1模块图形模块如图 3-3 所示: 2程序由于此程序较多,在附录中给出,见附录 3仿真波形图仿真图如图 3-4 所示: 通过仿真图可以清楚的看到,每计一次数输出 toneindex 的值随之发生一定的变化,只不过根据乐谱的不同,输出的变化也不尽相同。例如在本次设计中, 自第 8 个时钟上升沿来临到第 15 个时钟上升沿,输出 toneindex2 均选取音符“5”。然后把输出 toneindex2 输入到音调编码器模块,进行下一步编码工作。 手动模块( tone ) 可通过 7个按键手动的进行演奏, 7个按键分别代表 7个音。 1模块图形模块如图 3-5 所示: rst CLK d toneindex2[3..0] notetabs inst VCC pin_name INPUT VCC pin_name1 INPUT VCC pin_name2 INPUT pin_name3 OUTPUT图 3-3 notetabs 模块图形 key[6..0] toneindex1[3..0] tone inst VCC pin_name INPUT pin_name4 OUTPUT 图 3-5 tone 模块图形图 3-4 notetab s 仿真波形图 4. 程序 library ieee; use ; entity tone is port(key:in std_logic_vector(6 downto 0); toneindex1:out std_logic_vector(3 downto 0)); end; architecture one oftone is begin search:process(key) begin case key is when"0000001"=>toneindex1<="0001"; when"0000010"=>toneindex1<="0010"; when"0000100"=>toneindex1<="0011"; when"0001000"=>toneindex1<="0100"; when"0010000"=>toneindex1<="0101"; when"0100000"=>toneindex1<="0110"; when"1000000"=>toneindex1<="0111"; when others=>toneindex1<="0000"; end case; end process; end; 3仿真波形图仿真图如图 3-6 所示: 图 3-6 tone 仿真波形在此仿真图中不同的 key 相当于对应不同的琴键,当按下不同的琴键时输出相对应的 toneindex1 ,toneindex1 在输入音调编码器中进行下一步编码。 手动、自动选择模块( mux ) 根据设计的要求,该简易乐曲演奏器能实现手动或自动演奏乐曲的功能。于是,可通过一个按键 cs来进行自动与手动的选择,当cs按下时,乐曲自动演奏, 其他情况下均为手动演奏乐曲,即可以通过按下其他的按键(与 cs 相连的按键除外)来控制不同的音符。与此同时,还需要一个复位信号 rst 来控制该演奏器是否工作,当rst 为1时,停止演奏,为0时,可以演奏。以上提到的手动与自动的
eda音乐发生器--—课程设计论文 来自淘豆网m.daumloan.com转载请标明出处.