EDA课程设计

发布 2022-09-30 19:56:28 阅读 2635

《在系统编程技术》项目设计报告。

课程名称在系统编程技术

任课教师。设计题目乐曲硬件演奏电路

班级 09级电子信息工程(2)班。

姓名。学号。

成绩。日期 2024年6月1日

乐曲硬件演奏电路。

一、 题目分析。

经过查阅相关的资料,我们可以知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,所以我们要设计出类似于弹琴人手指的模块,类似于琴键的模块,类似于琴弦或音调发生器的模块,最后通过这三个模块可以完成《梁祝》乐曲的演奏,与演奏发音相对应的简谱码也可以输出显示出来。

二、 设计方案。

模块划分如下图:

顶层实体描述如下:

图1 电路原理框图。

该主系统由三个模块:songer顶层文件、div分频器、译码器组成。且songer顶层文件还包括3个子文件分别是notetabs,tonetaba和speakera,此外,我们还需建立一个名为“music”的lpm_rom模块与notetabs模块连接。

1.对于模块notetabs的功能描述:

该模块的功能就是定义音符数据rom“music”随着该模块中的计数器控制时钟频率速率作加法计数时,即地址值递增时,音符数据rom中的音符数据。将从rom中通过toneindex[3..0]端口输向tonetaba模块,演奏《梁祝》。

在该模块中设置了一个8位二进制计数器(计数最大值为138),作为音符数据rom的地址发生器。这个计数器的计数频率为4hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。

2.对于模块tonetaba的功能描述:

该模块是乐曲简谱码对应的分频预置数查找表电路,其中设置了乐曲的全部音符所对应的分频置数,每一音符的停留时间由**节拍和音调发生器模块notetabs的clk的输入频率决定,这些值由对应于tonetaba的4位输入值index[3..0]确定,最多有16种可选值。输向tonetaba中index[3..

0]的值toneindex[3..0]的输出值与持续的时间由模块notetabs决定。

3.对于模块speakera的功能描述:

该模块是一个数控分频器,音符的频率可由此模块获得。由clk端输入一具有较高频率的信号,通过speakera分频后由spkout输出。由于直接从数控分频器**来的输出信号是脉宽极窄的脉冲式信号。

为了利用驱动扬声器,需加一个d触发器以均衡其占空比,频率将是原来的1/2。speakera对clk输入信号的分频比由预置数tone决定。spkout的输出频率将决定每一音符的音调。

4.对于译码器模块的功能描述:

译码器模块是一个七段译码器,作用是在硬件上显示音频的高低,用0到7分别对应空节拍、do、ri、mi、fa、suo、la、xi,高音时,led亮,数码管显示对应数字。

图2 顶层电路图。

三、 方案实现。

1. 对于模块notetabs的**及描述。

这个计数器的计数频率为4hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间,由此即可保证每个音符持续的时间如**波形图所示。

2. 对于模块tonetaba的**及描述。

该模块是乐曲简谱码对应的分频预置数查找表电路,其中设置了乐曲的全部音符所对应的分频置数,对于不同的输入,通过查表方式可以获得不同的控制音调的预置数。

3. 对于模块speakera的**及描述。

由clk端输入一具有较高频率的信号,通过speakera分频后由spkout输出。由于直接从数控分频器**来的输出信号是脉宽极窄的脉冲式信号。

4. 对于模块songer的**及描述。

梁祝》乐曲简谱如下:

波形**图如下:

songer模块就是顶层设计文件,所有的模块都由它调用。输入了8hz与12hz的时钟信号,然后由code1输出了与演奏发音相对应的简谱码,high1为高八度音标,spkout输出乐曲。

四、 硬件测试及说明。

电路的顶层文件管脚分配图如下:

图3管脚分配图。

选择实验电路模式1,先将引脚锁定,使clk12mhz与clock9相连接,接受12mhz时钟频率即用短路冒在clock9接“12mhz”;clk8hz与clock2相连接,接受4hz频率;发音输出spkout接speaker;与演奏发音相对应的简谱码输出显示可由code1在数码管5显示;high1为高八度音指示,可由发光管d5指示,最后向目标芯片**适配后的sof逻辑设计文件。

五、 结论。

我的本次设计是基于fpga的**硬件演奏电路的设计,实现了一个乐曲**器,而且描述了其工作原理、设计思路及实现方法,并在quartusп上选用目标芯片**实现了**硬件演奏电路的功能。通过本次设计实践,证明了采用fpga设计实现**硬件演奏电路的可行性和可靠性,而且更改乐曲容易,可根据需要修改rom中的音符数据文件,从而使电路实现任一曲子的**。

这种基于fpga的**硬件演奏电路的设计与实现,不仅通过vhdl层次化和模块化设计方法,同时采用数控分频和定制lpm-rom的设计思想,更好的优化了乐曲演奏数字电路的设计,在此基础上不必变化顶层文件架构可随意变更乐曲,提高了设计的灵活性、可靠性和可扩展性。

六、 课程总结。

通过本次课程设计,培养了我们综合运用所学知识,发现,提出,分析和解决实际问题的能力,是对我们在实际工作能力的具体训练和考察过程。

回顾此次课程设计,从书籍,网络不断的寻找到设计思路,到完成整个设计,从理论到实践,可以学到很多很多的的东西。对课本知识的进一步加深的同时学到了很多在书本上没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。

在设计的过程难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到的一些问题,最后在老师和同学的帮助下,终于解决了,从中学习到了很多。

七、 附录。

1. 对于模块notetabs的vhdl语言描述。

library ieee; -notetabs模块。

use use

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);

begincnt8 : process(clk,counter)

beginif counter=138 then counter<="00000000";

elsif (clk'event and clk='1')then counter<=counter+1;end if;

end process;

u1 : music port map(address=>counter,q=>toneindex,inclock=>clk);

end;2. 对于模块tonetaba的vhdl语言描述。

library ieee; -tonetaba模块。

use entity tonetaba is

port ( index : in std_logic_vector (3 downto 0) ;

code : out std_logic_vector (3 downto 0) ;

high : out std_logic;

tone : out std_logic_vector (10 downto 0) )

end; architecture one of tonetaba is

begin

search : process(index)

begin

case index is --译码电路,查表方式,控制音调的预置数

when "0000" =tone<="11111111111" ;code<="0000"; high <=0';-2047

when "0001" =tone<="01100000101" ;code<="0001"; high <=0';-773;

when "0010" =tone<="01110010000" ;code<="0010"; high <=0';-912;

when "0011" =tone<="10000001100" ;code<="0011"; high <=0';-1036;

when "0101" =tone<="10010101101" ;code<="0101"; high <=0';-1197;

when "0110" =tone<="10100001010" ;code<="0110"; high <=0';-1290;

EDA课程设计

题目一 数字钟设计 学号1 15 一 实验目的。学习并掌握数字钟的原理 设计方法。二 实验内容。计数始终由模60秒计数器 模60分计数器 模24小时计数器 报时模块 分 时设定模块及输出显示模块构成。可以采用同步计数器或异步计数器设计方法。三 实验要求。计时范围为0小时0分0秒至23小时59分59秒...

eda课程设计

哈尔滨工业大学 威海 信电学院电子信息工程。一 软硬件介绍。1软件部分介绍。1.1 quartus ii 是altera公司的综合性pld fpga开发软件,支持原理图 vhdl veriloghdl以及ahdl altera hardware description language 等多种设计输...

eda课程设计

目录。1 引言 2 1.1 课程设计的目的与任务 2 1.2 课程设计的内容 2 1.3课程设计仪器设备 2 1.4 课程设计的题目 2 1.5 方案的选择 2 2设计方案 3 2.1 设计原理 3 2.2各功能模块的原理及其源程序 3 2.2.1控制模块 3 2.2.2分频模块 4 2.2.3计时...