电子琴的源程序(eda课程设计)

这是一个基于VHDL的电子琴源程序,包括三个部分:AUTO、TONE和FENPIN。AUTO模块处理键盘输入/自动演奏,产生时钟输出和音符信号。TONE模块根据输入音符产生相应的音调显示和分频系数。FENPIN模块根据分频系数生成驱动扬声器的音频信号。
摘要由CSDN通过智能技术生成

 

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY AUTO IS

  PORT(CLK:   IN STD_LOGIC;                       --系统时钟信号

       AUTO:   IN STD_LOGIC;                      --键盘输入/自动演奏

       CLK2:  BUFFER STD_LOGIC;                   --时钟输出

       INDEX2: IN STD_LOGIC_VECTOR(7 DOWNTO 0);   --键盘输入信号

       INDEX0: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));  --音符信号输出

END AUTO;

ARCHITECTURE BEHAVIORAL OF AUTO IS

 SIGNAL COUNT0:INTEGER RANGE 0 TO 31;  --定义信号计数器,有32个信号元素

BEGIN

PULSE0:PROCESS(CLK,AUTO)                 --PULSE0工作进程开始

  VARIABLE COUNT:INTEGER RANGE 0 TO 8;   --定义变量计数器,从08

BEGIN

  IF AUTO='1'THEN                        --键盘输入为1

     COUNT:=0;CLK2<='0';                 --计数器值为0,时钟信号2幅值为0

   ELSIF(CLK'EVENT AND CLK='1')THEN    --输入的时钟信号为其他值

     COUNT:=COUNT+1;                   --计数器加1即为1

  IF COUNT=4 THEN             

     CLK2<='1';

   ELSIF COUNT=8 THEN

     CLK2<='0';COUNT:=0;

END IF;

END IF;

END PROCESS;

MUSIC:PROCESS(CLK2)                     --MUSIC工作进程开始

BEGIN

  IF(CLK2'EVENT AND CLK2='1')THEN       --时钟信号21

    IF(COUNT0=31)THEN                   --计数器值为31

      COUNT0<=0;                        --计数器清0

ELSE

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值