乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。实现方法有许多种,随着FPGA集成度的提高,价格下降,EDA设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。使用现今的EDA软件工具来应付这些问题,并不是一件简单的事情。FPGA预装了很多已构造好的参数
VHDL逻辑描述中,“两只老虎”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间。那么相应随着程序中的计数器按4Hz的时钟频率作加法计数时,即随地址递增时,将从音符数据ROM中将连续取出4个音符“3”通过toneindex[3..0]端口输向分频预置数模块。这样两只老虎乐曲中的音符就一个接一个的通过toneindex[3..0]端口输向分频预置数模块。程序如下 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY NoteTabs IS
PORT (clk: IN STD_LOGIC;
ToneIndex:OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
END;
ARCHITECTURE one OF NoteTabs IS
COMPONENT MUSIC
PORT (address: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
inclock: IN STD_LOGIC;
q: OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
END COMPONENT;
SIGNAL Counter: STD_LOGIC_VECTOR (7 DOWNTO 0);
BEGIN
CNT8: PROCESS(clk,Counter)
BEGIN
IF Counter=138 THEN Counter<="00000000";
ELSIF (clk'EVENT AND clk='1') THEN Counter<=Counter+1;