VHDL 您所在的位置:网站首页 八音琴怎么调音准 VHDL

VHDL

2023-12-11 15:07| 来源: 网络整理| 查看: 265

记录一下做这个EDA课设的过程,并总结一些学习收获。刚开始做的时候,老师就说:你们做这个课设呢,重要的不是结果,而是做的过程。我煞有其事的在笔记本上记录了这句话。OK,不废话了,开始学习吧!

一、设计要求

1.能发出1、2、3、4、5、6、7、1八个音;

2.用按键作为键盘;

3.用LED指示灯显示节拍;

4.C调到B调对应频率为

调频率(Hz)Ċ261.63*2B493.88A440.00G392.00F349.23E329.63D293.66C261.63

5. 数码管显示那部分是我自己加的,没有设计要求,也算是一种拓展吧。

另外,需要设计用的软件的话,可以去后面这个百度网盘链接里下载使用,里面有安装包和安装说明。链接:https://pan.baidu.com/s/1cxaotp5YxtLt7juJ8EUqIQ 提取码:eda6 里面还有老师讲解的视频,认真看一看对整个课设的整体认识有很大帮助。对于讲解的视频,建议先看软件部分,再看硬件部分。 对了,还有一些相关文档。 二、设计过程

说实话,刚开始的时候,我脑子一片空白,不知道该怎么做,于是做了个计划:

第一天:熟悉软件的运用,搜集相关资料;第二天:根据查找的资料,理清楚由哪些模块构成,以及各个模块之间的关系;第三天:开始做模块一:音调发生模块,并理解其中的大部分VHDL语言;第四天:开始做模块二:分频器模块,并理解其中的大部分VHDL语言;第五天:原计划是做模块三,但是分频器模块还不是很懂,就继续理解模块二;第六天:开始做模块三:显示器模块,并理解其中的大部分VHDL语言;第七天:把三个模块整合,进行仿真;某N天:在板子上进行烧录,观察结果并纠错,直到符合设计要求。

本来准备仿真完成之后就开始在板子上烧录的,但是板子数量不够,所以仿真完成后过了五天,我才拿到板子开始下载烧录。接下来看一看具体的设计过程吧。

第一天

用 quartus || 9.1 进行设计,首先得熟悉这个软件怎么用,我根据老师课上讲的例子以及指导书里的例子来练手,练了差不多一上午,聪明的孩子应该不用这么久,哈哈哈。 然后下午我就去找各种资料了。百度、CSDN等,还有图书馆,根据要做的八音电子琴,搜集各种资料,把觉得能用得到的资料保存或者收藏。

第二天

我把搜集到的资料都看了一遍,并理清需要的模块:1,音调发生模块,我取名为GetTone;2,分频器模块,我取名为FreqDivider;3,显示器模块,我取名为Disp。下面是整个系统的结构图: 在这里插入图片描述 这个已经分配好了管脚,我用的板子是EPM570T100C5。建立工程的时候一定要根据自己用的板子来选择。边上有PIN_的就是指管脚,可以先忽略,管脚最好仿真成功之后再分配。 每一个方图的左上角就是它们的名字。

VHDL硬件描述语言是一种“自上而下”的设计语言,通俗点说就是先有大局再考虑局部,从系统再到构成系统的每一个具体的模块。

GetTone模块:根据按键输入,控制Disp模块和FreqDivider模块这两个模块的输出。 Disp模块:根据GetTone模块给的信号,做相应的输出,控制数码管输出的数字和LED灯的亮灭。 FreqDivider模块:根据GetTone模块给的信号,做相应的输出,控制蜂鸣器的发声。

第三天

开始设计GetTone模块了。二话不说,先贴出VHDL代码:

LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY GetTone IS PORT ( index: IN STD_LOGIC_VECTOR (6 DOWNTO 0 ); code: out STD_LOGIC_VECTOR (3 DOWNTO 0); tone1: OUT INTEGER RANGE 0 TO 4000 ); END GetTone; ARCHITECTURE behavioral OF GetTone IS BEGIN search: PROCESS(index) BEGIN CASE index Is WHEN "1111110"=>tone1


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有