05 级计算机(6)班 苏艺景 030501605
实验五 电子琴实验
一 实验目的
了解按键选择编程方法,进一步加强 EDA 设计电路的能力。
二 实验内容及要求
本实验的关键是如何用分频的方法,产生每个音符的频率,通过蜂鸣器放音。不同的
音域,音符的频率也不同。比如,中音段,1、2、3、4、5、6、7 对应的频率分别为:
262HZ.、294HZ、330 HZ、349 HZ、392 HZ、440 HZ、494 HZ。每个频率的实现都可以利
用一个分频器来实现,比如,用 5859 HZ 作为时钟输入,计数到 21 时,即可产生一个 262 HZ
的频率,发 1 的音,用 46875 HZ,作为时钟输入,计数到 119 时,即可产生一个 392 HZ 的
频率,发 5 的音。
三 实验现象
按住实验板上的不同按键,蜂鸣器发出相应的音
四 实验小结
通过本次实验,让我进一步熟悉用 VHDL 语言、原理图法设计硬件电路,加强了 EDA
设计电路的能力。
五 程序代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity dianziqin is
port(clk1: in std_logic;
clk2: in std_logic;
w1,w2,w3,w4,w5,w6,w7: out std_logic);
end entity dianziqin;
architecture behave of dianziqin is
signal q1:std_logic_vector(4 downto 0);
signal q2:std_logic_vector(7 downto 0);
signal q3:std_logic_vector(7 downto 0);
signal q4:std_logic_vector(7 downto 0);
signal q5:std_logic_vector(6 downto 0);
signal q6:std_logic_vector(6 downto 0);
signal q7:std_logic_vector(6 downto 0);
begin
process(clk1)
begin
if clk1'event and clk1='1' then
if q1="10101" then q1<="00000";
else q1<=q1+1;
end if;
w1<=q1(4);
end if;