基于fpga音乐硬件演奏电路设计内容摘要:

(2) 地址发生器模块 地址发生器模块设置了一个 8 位二进制计数器 (计数最大值为 256),作为音符数据 ROM 的地址发生器。 每来一个时钟脉冲信号 (Clk), 8位二进制计数器就计数一次, ROM 文件中的地址也就随着递增,音符数据 ROM 中的音符也就一个接一个连续的取出来了。 在 地址发生器的 VHDL 设计 中, 这个 计数器的计数频率选为 4Hz,即每一计数值的停留时间为 秒,恰为当全音符设为 1秒,四四拍的 4分音符持续时间。 例如,地址发生器在以下的 VHDL 逻辑描述中,“梁祝”乐曲的第一个音符为“ 3”,此音在逻辑中停留了 4个时钟节拍,即 1秒时间。 那么相应随着程序 [4]中的计数器按 4Hz的时钟频率作加法计数时,即随地址递增时,将从音符数据 ROM 中将连续取出 4 个音符“ 3”通过 toneindex[3..0]端口输向分频预置数模块。 这样梁祝乐曲中的音符就一个接一个的通过 toneindex[3..0]端口输向分频预置数模块。 音乐谱对应分频预制数查表电路模块 (1) 音乐谱分频预置数模块 (2) 音乐谱对应分频预制数查表电路 VHDL 程序 设计 音乐谱分频预置数模块是乐曲简谱码对应的分频预置数查表电路。 它提供了每个音符所对应的分频预置数,即给数控分频模块提供计数初值,这里以“梁祝”乐曲为例,列出了在这个乐曲中所用到的 13 个音符的分频预置数。 河南机电高等专科学校课程设计论文 《 VHDL 硬件语言》课程设计论文 在这个模块的 VHDL 逻辑描述中设置了 四四拍 乐曲中全部音符所对应的分频预置数,共 13个,每一音符的停留时间由音乐节拍和地址发生器模块的时钟( Clk)的输入频率 决定,在此为 4Hz。 这 13个值的输出由程序 [3]的 4位输入值 index[3..0]确定。 输向程序 [4]中 index[3..0]的值又由地址发生器模块的输出 toneindex[3..0]的输出值和持续时间决定。 模块的功能是输出各个音符所对应的分频预置数, 即 当 index 是“ 0000”, tone输出为 2047,即休止符的分频预置数;当 index 是“ 0101”时, tone 输出为 1197即低音 5 的分频预置数;当 index 是“ 1111”时, tone 输出为 1728 即高音 1的分频预置数等等其它状态时, tone 分别输出 相应音符的分频预置数。 分频预置数模块的 VHDL 设计程序如下: LIBRARY IEEE。 音乐谱对应分频预制数查表电路模块 USE。 ENTITY ToneTaba IS PORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0)。 4 位 预制数查表 CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)。 HIGH : OUT STD_LOGIC。 音乐高 8 度 指示 Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) )。 音乐符对应分频 11位 END。 ARCHITECTURE one OF ToneTaba IS BEGIN Search : PROCESS(Index) BEGIN CASE Index IS 译码电路,查表方式,控制音调的预置数 13组频率 WHEN 0000 = Tone=11111111111。 CODE=0000。 HIGH =39。 039。 2047 WHEN 0001 = Tone=01100000101。 CODE=0001。 HIGH =39。 039。 773。 WHEN 0010 = Tone=01110010000。 CODE=0010。 HIGH =39。 039。 912。 WHEN 0011 = Tone=10000001100。 CODE=0011。 HIGH =39。 039。 1036。 WHEN 0101 = Tone=10010101101。 CODE=0101。 HIGH =39。 039。 1197。 WHEN 0110 = Tone=10100001010。 CODE=0110。 HIGH =39。 039。 1290。 WHEN 0111 = Tone=10101011100。 CODE=0111。 HIGH =39。 039。 1372。 WHEN 1000 = Tone=10110000010。 CODE=0001。 HIGH =39。 139。 1410。 WHEN 1001 = Tone=10111001000。 CODE=0010。 HIGH =39。 139。 1480。 河南机电高等专科学校课程设计论文 《 VHDL 硬件语言》课程设计论文 S pe ak erain s tc lkT on e[ 10 . . 0]S pk SDE N AQP R EC L RA [ 3 . . 0 ]B [ 3 . . 0 ]O U T [ 3 . . 0 ]A D D E RA [ 1 0 . . 0 ]B [ 1 0 . . 0 ]O U T [ 1 0 . . 0 ]A D D E RA [ 1 1 . . 0 ]B [ 1 1 . . 0 ]O U TE Q U A LDE N AQP R EC L RA [ 3 . . 0 ]B [ 3 . . 0 ]O U TL E S S _ T H A NDE N AQP R EC L RD QP R EE N AC L RD QP R EE N AC L RSELD A T A AD A T A BO U T 0M U X 2 1\ D e l a y Sp kS : C o u n t 2 Sp kS ~re g 0cl kSp kST o n e [ 1 0 . . 0 ]F u l l Sp kS\ G e n Sp kS : C o u n t 1 1 [ 1 0 . . 0 ]Eq u a l 01 39。 h 0 1 2 39。 h 7 F F \ D i v i d e C L K: C o u n t 4 [ 3 . . 0 ]A d d 04 39。 h 1 A d d 11 1 39。 h 0 0 1 C o u n t 1 1 ~[ 1 0 . . 0 ]L e s s T h a n 04 39。 h B WHEN 1010 = Tone=11000000110。 CODE=0011。 HIGH =39。 139。 1542。 WHEN 1100 = Tone=11001010110。 CODE=0101。 HIGH =39。 139。 1622。 WHEN 1101 = Tone=11010000100。 CODE=0110。 HIGH =39。 139。 1668。 WHEN 1111 = Tone=11011000000。 CODE=0001。 HIGH =39。 139。 1728。 WHEN OTHERS = NULL。 END CASE。 END PROCESS。 END。 音乐符数控 11 分频电路模块 (1) 音乐符数控 11 分频电路模块 (2) 音乐符数控 11 分频电路模块 RTL 电路图 河南机电高等专科学校课程设计论文 《 VHDL 硬件语言》课程设计论文 (3) 音乐符数控 11 分频 模块 电路 VHDL 程序 设计 音符的频率由数控分频模块获得,这是一个数控分频电路。 它是由一个初值可变的加法计数器构成。 该计数器的模为 2047,当计数器记满时,计数器产生一个溢出信号 FULL,此溢出信号就是用作发音的频率信号。 在计数器的输入端给定不同的初值,而此预置数就是表 1 中的计数初值,就可得到不同音符的发音频率信号。 它计满时所需要的计数初值可由下式来表示。 计数初值( Tone) =2047分频系数 而分频系数又可有下式来求: 分频系数 =基准频率 /音符的发生频率 低音时 Tone 值小,分频系数大,溢出信号周期长,扬声器发出的声音低, Tone随音乐的乐谱变化大,自动控制分频比,实现了数控分频,发生信号的频率与音调Tone 成正比。 这就是利用数控分频器自动演奏音乐的原理。 时钟( Clk)端输入的是在十六进制模块里对 12MHz 的信号进行 16 分频得到的750KHz, 750KHz 的信号根据分频预置数模块中所提供的计数初值,分别得出相 应音符频率的两倍值。 此时从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个 D 触发器以均衡其占空比,这时的频率就变为原来的 1/2,刚好就是相应音符的频率。 数控分频模块中对 Clk 输入信号的分频比由 11 位预置数 tone[10..0]决定。 Fout 的输出频率将决定每一个音符的音调,这样,分频计数器的预置值 tone[10..0]与 Fout 的输出频率就有了对应关系。 例如在分频预置数模块中若取 tone[10..0]=1036,将发出音符为“ 3”音的信号频率。 音符的频率由数控分频模块 VHDL 程序如下: LIBRARY IEEE。 音乐符数控分频电路模块 USE。 USE。 ENTITY Speakera IS PORT ( clk : IN STD_LOGIC。 音调频率信号 12MHZ Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0)。 音乐符对应分频 11 位。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。