FPGA的电子琴设计文档格式.docx

上传人:b****3 文档编号:16798684 上传时间:2022-11-26 格式:DOCX 页数:12 大小:44.25KB
下载 相关 举报
FPGA的电子琴设计文档格式.docx_第1页
第1页 / 共12页
FPGA的电子琴设计文档格式.docx_第2页
第2页 / 共12页
FPGA的电子琴设计文档格式.docx_第3页
第3页 / 共12页
FPGA的电子琴设计文档格式.docx_第4页
第4页 / 共12页
FPGA的电子琴设计文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

FPGA的电子琴设计文档格式.docx

《FPGA的电子琴设计文档格式.docx》由会员分享,可在线阅读,更多相关《FPGA的电子琴设计文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

FPGA的电子琴设计文档格式.docx

1.3FPGA的基本特点

FPGA的基本特点:

采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片;

FPGA可做其它全定制或半定制ASIC电路的中试样片;

FPGA内部有丰富的触发器和I/O引脚;

FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一;

FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。

用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。

掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。

FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。

当需要修改FPGA功能时,只需换一片EPROM即可。

这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。

因此,FPGA的使用非常灵活。

如FPGA配置模式:

它有多种配置模式:

并行主模式为一片FPGA加一片EPROM的方式;

主从模式可以支持一片PROM编程多片FPGA;

串行模式可以采用串行PROM编程FPGA;

外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。

如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。

如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。

2.FPGA课程设计原理及方案选择

2.1电子琴设计原理 

简易电子琴的设计通过软硬件结合实现,硬件系统包括主控制器芯片、LED、蜂鸣器等,软件资源包括编写VerilogHDL程序的仿真Modelsim和应用软件QuartusII。

电子琴有自动播放功能。

2.2乐曲演奏的原理

乐曲演奏的原理:

组成乐曲的每个音符的频率值(音调)以及持续时间(音长)是乐曲能持续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号的频率的高低和持续的时间,就可以使扬声器发出持续的乐曲声。

它利用了FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。

2.2.1音调的控制

频率的高低决定了音调的高低。

音乐的十二平均率规定:

每两个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。

在两个八度音之间,又可分为十二个半音,每半个音的频率比为

另外,音名A(简谱中的低音6)的频率为440HZ,音名B到C之间,E到F之间为半音,其余为全音。

由此可以计算出简谱中从低音1至高音1之间的每个音名对应的频率如表2-1所示:

音名

频率(HZ)

低音1

261.6

中音1

523.3

高音1

1046.5

低音2

293.7

中音2

587.3

高音2

1174.7

低音3

329.6

中音3

659.3

高音3

1318.5

低音4

349.2

中音4

698.5

高音4

1396.9

低音5

392

中音5

784

高音5

1568

低音6

440

中音6

880

高音6

1760

低音7

493.9

中音7

987.8

高音7

1975.5

表2-1低音名对应的分频系数

所有不同频率均从同一基准频率分频得到。

由于音阶频率多为非整数,而分频系数又不能为小数,故必须将分频数四舍五入进行取整。

若基准频率过高,虽然误差变小,但分频数变大,实际的设计综合考虑这两方面的因素,在尽量减小频率误差的前提下取合适的基准频率。

在本设计中选取6MHZ作为基准频率。

从下表中可以看出最大分频系数为9102,采用14位二进制计数器分频可满足要求。

此外还应给出预置数,对应不同的预置数,只需加载不同的预置数即可。

采用加载预置数实现分频的方法比采用反馈复零法节省资源,实现起来更加容易。

各音名对应的分频系数如表2-2所示:

分频比

预置数

9102

7281

5111

11272

7653

8730

4552

11831

6818

9565

3827

12556

6073

10310

3409

12974

5736

10647

2867

13516

表2-2各音阶频率对应的分频比及预置数

2.2.2音长的控制

音符的持续时间须根据音乐的速度及每个音符的节拍数来确定。

如果设定全音符的持续时间为1S的话,假设产生4分音符,则产生四分频即可实现四分音符的时长,并提供4HZ分频器。

如图为乐曲演奏的原理图,其中,乐谱产生电路用来控制音乐的音调和时长。

控制音调通过设置计数器的预置数来实现,预置不同的数值会可以使计数器产生不同频率的信号,从而产生不同的音调。

控制音长是通过控制计数器预置数的停留时间来实现的,预置数的停留时间越长,则该音符的演奏时间越长,如2分音符,在记谱时将该音符记录两次即可。

6MHZ

4HZ

2.3总体方案

本次设计课程的目的是让我们在学习verilogHDL的基础上更加深入的了解硬件设计语言的功能、作用及其特征,并且将我们的动手能力与创新能力结合起来。

音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。

因此,要控制音符的音长,就必须知道乐曲的速度和每个音符所对应的节拍数。

如果将全音符的持续时间设为1s的话,那么一拍应该持续的时间为0.25秒,则只需要提供一个4HZ的时钟频率即可产生四分音符的时长。

至于音长的控制,在自动演奏播放乐曲时按4HZ的时钟频率依次读取简谱,每个音符持续时间为0.25秒。

如果乐谱中某个音符为三拍音长,那又该如何控制呢?

其实只要在3个连续地址存放该音符,这时就会发三个0.25秒的音长,即持续了三拍的时间,通过这样一个简单的操作就可以控制音长了。

3.系统设计

3.1分频设计

使用加法计数器。

在计数器值小于分频比值时,保持分频的时钟信号不变,当计数器加到分频比值时,令分频时钟信号发生跳变,同时将零设为此时的计数器值,这样分频时钟信号就会再次发生跳变。

3.2软件仿真

3.4硬件的组成

在CycloneI器件系列非常成功的基础上,Altera公司的CycloneII系列扩大了FPGA的密度,最多可以达到68416个逻辑单元,并且还提供了622个可用的输入/输出引脚和1.1M比特的嵌入式寄存器。

CycloneII设备系列拥有以下的特点:

4608到68416LEs的高密度的结构;

嵌入式乘法器;

先进的I/O口支持;

灵活的时钟管理电路;

设备的配置。

CycloneII器件的制造基于300mm晶圆,采用台积电90nm、低K值电介质工艺,这种工艺技术采用了低绝缘体过程,确保了快速性、有效性和低成本。

CycloneII器件通过使硅片的面积最小化,所以可以在单芯片上支持复杂的数字系统,而且在成本上还可以和ASIC进行竞争。

Altera最新一代低价位的FPGA——cycloneIIFPGA系列,和同类90nmFPGA器件相比,它提高了百分之六十的性能和降低了一半的功耗。

它的低成本和优化特征使CycloneII系列为各种各样的汽车、消费、通讯、视频处理、测试以及测量、和其他最终市场提供了理想的解决方案。

4.结论

本设计利用硬件描述语言Verilog实现了电子琴的自动演奏,综合,仿真,下载,调试,测试情况良好,能够准确实现音阶的发音功能,把写好的Verilog程序进行引脚分配,综合,适配,编程下载。

经过不断的反复调试,修改,最终完成本项方案设计。

在设计过程,由于对音乐知识不够了解,所以没有实现电子琴那么完美的音乐。

在本系统设计调试过程中,软件和硬件都出现了一些小错误。

 

附录:

1.简谱

2.程序

modulesong(sys_clk,speaker,);

//inputclk_6mhz,clk_4hz;

inputsys_clk;

outputspeaker;

//output[3:

0]high,med,low;

regspeaker;

reg[3:

0]count;

reg[23:

0]count2;

reg[7:

0]counter;

reg[13:

0]divider,origin;

//reg[23:

0]clk_cnt;

/*always@(posedgesys_clkornegedgerst_n)

if(!

rst_n)

clk_cnt<

=24'

d0;

else

=clk_cnt+1'

b1;

wireclk_6mhz=clk_cnt[2];

wireclk_4hz=clk_cnt[23];

*/

regclk_6mhz,clk_4hz;

always@(posedgesys_clk)

begin

if(count<

=7)

count<

=count+1;

clk_6mhz<

=0;

end

else

=1;

if(count2<

=12499999)

count2<

=count2+1;

clk_4hz<

wirecarry;

assigncarry=(divider==16383);

always@(posedgeclk_6mhz)

beginif(carry)divider<

=origin;

else

divider<

=divider+1;

end

always@(posedgecarry)

beginspeaker=~speaker;

always@(posedgeclk_4hz)

begincase({high,med,low})

'

b000000000011:

origin<

=7281;

b000000000101:

=8730;

b000000000110:

=9565;

b000000000111:

=10310;

b000000010000:

=10647;

b000000100000:

=11272;

b000000110000:

=11831;

b000001010000:

=12556;

b000001100000:

=12974;

b000100000000:

=13516;

b000000000000:

=16383;

endcase

begin

if(counter==63)

counter<

else

=counter+1;

case(counter)

0:

{high,med,low}<

='

b000000000011;

1:

2:

3:

4:

b000000000101;

5:

6:

7:

b000000000110;

8:

b000000010000;

9:

10:

11:

b000000100000;

12:

13:

14:

15:

16:

b000001010000;

17:

18:

19:

b000100000000;

20:

b000001100000;

21:

22:

b000000110000;

23:

24:

25:

26:

27:

28:

29:

30:

31:

32:

33:

34:

35:

36:

b000000000111;

37:

38:

39:

40:

41:

42:

43:

44:

45:

46:

47:

48:

49:

50:

51:

52:

53:

54:

55:

56:

57:

58:

59:

60:

61:

62:

63:

//由于篇幅原因省略部分乐谱

endmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1