实验四硬件电子琴电路设计.docx

上传人:b****6 文档编号:8660871 上传时间:2023-02-01 格式:DOCX 页数:21 大小:416.17KB
下载 相关 举报
实验四硬件电子琴电路设计.docx_第1页
第1页 / 共21页
实验四硬件电子琴电路设计.docx_第2页
第2页 / 共21页
实验四硬件电子琴电路设计.docx_第3页
第3页 / 共21页
实验四硬件电子琴电路设计.docx_第4页
第4页 / 共21页
实验四硬件电子琴电路设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实验四硬件电子琴电路设计.docx

《实验四硬件电子琴电路设计.docx》由会员分享,可在线阅读,更多相关《实验四硬件电子琴电路设计.docx(21页珍藏版)》请在冰豆网上搜索。

实验四硬件电子琴电路设计.docx

实验四硬件电子琴电路设计

《FPGA》课程报告设计题目:

学生班级:

学生学号:

学生姓名:

指导教师:

时间:

成绩:

硬件电子琴电路设计

一、实验目的:

学习利用数控分频器设计硬件电子琴实验。

二、实验原理:

主系统由3个模块组成,例1是顶层设计文件,其内部有三个功能模块(如图1

所示):

Speakera.v例4)和ToneTaba.v例3),NoteTabs.v例2)。

模块ToneTaba是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5'并由High输出指示音阶高8

度显示。

模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。

增加一个NoteTabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。

三、实验过程:

1.分别输入ToneTaba.v和Speakera.v的VerilogHDL文本:

其中ToneTaba.v的代码是:

=I訂口eMrnnULA亠JiFoSF.Tnne

』*■

WPJCr"烹Hesu

D專P8S301004盟

OJZPUXMMaE】

Dunpm『40+fiQ】mdsJ

Tns器5nc&^

晋QTU

百箱s§£HgzLI"L監Eu0-IadheKFlMErftQJL口

孟dKIhQexJI

**IS」・boOHoA■gm

■gl百

■■bollMI匕Bf営OQ••Eg*哼bsa*・su口2m

speakera.vsK;^^-

•■bela尸nSAOrp■■Elb-ri-r”■■bc«l;l3-ggIRn“be註口„ErriQMcl■■beflp"FA1.B叫rrlb口HMGyqLp■■rr苗四严誑

HM*令一】占lM駐匸一・sI门口ftAwlH.trmQCJocloloHT吕nmHOMDgilmMQn・A冒一一/&廿」)101口1lcHHO»?

^^-WM2soaMOMOHnsx*一二b1EO101£00HElsecb1HdtriQH1Do□口◎10YgeTlfPCH110C3H。

H8X4^^MMQSOSMMOHnKAiMM^MMOOMOMOHHOMOO^A—ITtrm00口吕口0rtffllMTtr醫01loccloQ-o

aoft*Aino^Aft

-—^OB■一3-E2】」■laGISAk普警n存。

席討:

一-4.■日吕qi』tu暮;i.*g—.占SQWJUQ切匸二g;蹲ph』:

■bseK苕冥■幕岂匸g」」—JnErQ口SJfLL也crA-^-ITiJJli託H—£卜0『

—.4二"I.占Q口一話曽弓{L总防sb.4^■tlcKZ*Klab具■HE1“味£t

■r*i4ilw"h*£001M岸3A.F1*bH*—"・■■«

Ho&prt5f:

rlJa片EHR(门Ik:

*TD口IT*5忙疔5inwtirlcllc":

mpllrfLlo“2Tcmmzoucpub5巧挥・"

mHmgPHeclm

9HrtQ呵匚一Isplcs"

HoHes3"0一counrtM

1】.reg〔10“OJCQUnrtll"

12r巾gCOLnlcz"

13reg5*O1C5“

14

14aJ-wa^m^-JPDSeclgeQllc》

16tregin

17iHl(caunc山¥11】XEnImPHeQLlcANl・tTl“

19ccmnrl血AM1*

hjoeyd

MHelseb-mgin

22pHecl片

23counMAWCOUncm古•柑1“

B&

 

25end

27alwayag(posedge

23if(Count11>=11・HYFF)begin

29Count11<=Tone;

30FullSFkS<-1・bl;

31end

32elsebegin

33Countll<_Countll+lrbl;

34Full5p]c5<:

=0;

35end

36end

37

3Salways@(posedgeFullSpkS)begin

39Count2<—€0011^2;

40if(Count2=l・匕1)SpkS<=l'bl;

41elseSpfcS^l^O;

42end

43

44

45

4石endmodule

然后写testbench方针文件,进行方针:

ToneTaba.v的testbench文件代码是:

1'timescaleIns/Ips

2moduletestbench_ToneTaba;

3_

4//Inputs

5reg[3:

0]Index;

6

//Outputswire

wire

[3:

0]Code;High;

10

wire[10:

0]Tone;

11

12

//InsranriatetheUnitUnder

13

ToneTabauut(

14

•Index(Index)9

15

.Code(Code).

16

.High(High),

17

.Tone(Tone)

18

);

19

20

initialbegin

21

//InitializeInputs

22

Index=0;

23

24

//Wait100nsforglobal

25

#100begin

26

Index=0;

27

end

28

#100begin

29

Index=1;

30

end

31

#100begin

32

Index=2;

33

end

Test

reset

(UUT)

tofinish

 

tlOObegin

Index=3;end

#100begin

Index-E;end

f100begin

Index=7;end

#100begin

Index=8;end

#100begin

Index■9;end

#100begin

Index-10;end

#100begin

Index=12;end

#100begin

Index=13;end

f100beginIndex=15;

end

//Addstimulushere

end

endir.odule

仿真图形是:

 

 

Speakera.v的testbench文件代码是:

3

4

5

6

7

fl

9

10

1112

13

14

15

1617IS19NO2122

23

24

25

26272E

29

30

31

32

33

34

35

36

373S

I'tiitescaleIns/IpsmoduleEesubench_Spea)cera;

//Inputs

工亡gClk;

reg[10:

0]Tone;

//Outputs

wireSpkS;

//Ins匸arrtia/tErheUnitUnderTe:

sz(UUT)Speakersuut(

・Clk(Clk),

.Tone(Tone)t

・SpkS(5pXS)

initialbegin

//InitializeInpurs

Clk=0;

Tone■0;

//Wait100nsforglobalresettofinish#100begin

Clk=1;

Tone-20€7;

end

#100begin

Tone-1723;

end

#100begin

Ione■ices;

end

//Addstjjt.uIlibhere

end

en

仿真图形如下:

 

2•首先打开电脑上的记事本,按照COE文件的格式要求输入《梁祝》音乐,并存盘。

39J8

15

59362

i—l

_INITIALIZATION_RADIX二10;_INITIALIZATION_VECTOR=

3,3,3,5,5,5,6,8,8,

9,6,&5,5』12,12,12,

12,10,12,9,9,9,9t

0,9,9,9,10,匚7,

55,d&&9,9,

8.6,

5,6,8

5,5$

』5,5,10,IQ

10,12,

6,&5,5,

3,3,

5,6,

J玄

』6』6,5,6,

&Sj

‘12JO,9,9,10,

9,&&

3,3,3,3*8>8,8;&,6.5,3,5,6,8,5,5,

新建一个IPcore:

BMMFile

■;■!

・・;■・uafM・m・in・・』・・・r・・mii・w.・m・a;i・

^tnerator&ArcniteCtureWn£fV*vww^WWWH*WHWWWVWWWWWWWWWWWWWWWWWVWWI!

WWWWW

RIP(COREGenL._ll.1二WJlMEMFilt对Schematic

ImptemenUTiOnCOhttraintSFiltf*StateDpagram冋T总覺Emnj/.'j.T*srm

=*UierDoCumert

MVftrilogModule矽veri.QjT^stFixture陆『I4DLMccu.eQVHDLLibrary

5VmOLPackage

MoreInfo

5,

9』

S3

Filenamej

Mutic

Location:

EJFRGA.'20105381-sender

•Addtoproject

Carne

 

 

_AutQ^iQtiMELIdd_striaL

・SiiicElemerts

QConftparaton

一:

匚LUAr

--1MemoryEiernents

QBlockMemoryGeneratory27

匚DistritotedMemoryGe^e-at-r^34

勺DutlPortBlockM*moryv£_3

IS1Registers.ShiftersiPip^lining

Co™irmutiicati^jritT*Er.\Drkiflg

-'n^*HIfrAy^fifirA^rti^

jtitjrvInfo

*R*uk

W玳*

Cdncei

选择ReadOnly

存储器位宽:

Width为4,深度:

Depth为256按Next继续设定

訂刊佔QCort|qConlacl

SinglePortBlockMemory

CornmnscirhhmnMw4e

«-PwtSrtlpuraiMi

ADDR

DOILTT»

怖Writ*

•R・强Only

厂MtnwySiui

1

mtgh|4

Wvii^ftangtt256

Dtptfl(2M

^shaRjungt2S4B570

CLK

1

i-Moat

PageSof4

钩选LoadInitFile

点击LoadFile•按键,装载初始文件Music.coe

点击Generate按键生成ROM的

IPCORE

输入NoteTabs.v文件,实现按照4HZ频率循环读取ROM的音乐节拍、频率信号。

2

moduleNateTabs(ClkfTanelndex,clr

4

}*

inp'jtCllcfclr;

5

dutp^jt[3:

0]Tonelndex;

reg[7:

0]Counter;

7

always®(posedgeClkorposedgeclr)

S

if(clr)

9

CountezK—S*bOOOOOOOO;

10

else

11

begin

12

if{Counter>=138)Counter<=8rb0OOOOOOO;

13

elseCounte^^CounEer+l1bl;

14

end

15

Mu3zcu5(.addr(亡oun匸Et}”

16

17

・dout(Tonelndex^);

1S

endrr.odule

NoteTabs.v的testbench文件代码是:

7

B

9

10

11

12

13

14

15

16

17

IS

19

20

21

22

23

24

23

26

27

26

29

仿真图形如下:

|Ltirrescal^Ins/Ips

ireduletestbenchWoteTibs;

//Inputs

xegCllc;

reqclr;

//Outputs

wire[3:

0]Toneindex;

//InstantiatetheUnitUnderTest(UUT)NoteTabsuut(

.cik(cik),

.Toneindex(Tanelndex},

.clx(clr)

initialbegin

//InitializeInputs

Clk-0;

clr-0;

#40clr=l;

#40clr=0;

//Wait100nsforglobalreseutofinishforever#40ClJc=*Clk;

//AddBtimulushere

end

endiLodule

3.输入div_50_12M.v、div_50_4HZ.v的VerilogHDL文本:

其中div_50_12M.v

的代码是:

iLodulediv5012M(elk,elk12M,reset

inpLi匸clkfreset;outputclk_12M;reg[1:

01count;

regelk12M;parameterN=^;initial

count<=l;

always®(posedgeelk)begin

iflreset)

begincounc<=l;clk_12M<=0;end

elseif(count-=3)

clk_12M<—C1JC12M;coun匸c二2;

e^d

else

begin

eoLiii匸GuoLirrd;end

end

endnr.odjle

7

S

9

10

11

12

13

IT

15

1€

17

IS

19

20

21

22

23

24

25

26

27

23

div504HZ.v的代码如下:

5

6

7

S

9

10

11

12

13

14

15

1€

17

18

19

20

21

22

23

2弓

25

27

23

modulediv_50_4HZ(clkfclk_4HZ,reset);

incutelk,reset;

outputclk_4HZ;

reg[23:

0]count;

regclk_4HZ;

parairetezN=125OOO0O;

initial

count<=l:

always0(posedgeelk}

begin

if(reset)

begincount<=-l;clk_4HZ<=0;end

elseif(count==(N/2+1))begin

clk_4HZ<—alk_4HZ;count<-2;

end

else

begin

count<=count+1;

end

end

endmodule

div5012M.v的testbench文件代码是:

modulediv_12;

regclk_S0M=11b0;wirecllc_12M;

regresec;

仿真图像如下:

写顶层文件将上面的模块例化在一起:

2ooctidEmoa冒亡r口昶》上色百EE*色丄,日丄口話ifSpjfduu

3):

勺elJt_5DM;

$inpvtresets

4[3:

0]Ccde1;

outputfpkuut;

BwiEe(lOfO)Tiine;

5wireO;0jTonelndcx;

10wirecllr_^HZyClk_12M:

11Nor电Tat)日uOCCiir,,T0nelDd*K(Tonelndeatj,.clr[jflaerf\i

12ToneTabaul[・Index[ZaEielndex}t+Code(Codel)*.High*・Tone(Tone));

13Spealcerau2i.Cli(=1)£_12H)*.Tdm(Tane).Spt5-Spoilt});

14di¥_50_12MU3(ClDM,C1K_1JH.工七*亡匕||=

15div&04HZu4(dkSOM,elk4KZrn«»t>;

16en^jddul^

最后执行综合。

4•执行完上述步骤后,进行索引脚操作

锁引脚完成后,编辑、修改约束文件:

1:

StartofConstraintsgeneratedbyPACE

2

3tPACE:

StartofPACEI/OPinAssignrr.entB

4

5

NET叱1忙_500

NETT,Codel<0>

LOC-e匚却R;

"LOC="F12r,;

NETr-CodeL

□LOC="E15H;

7

NET"Codel<2>

”LOC-"Ell";

3

NET"Codel<3>

"LOC=nFllH;

9

NETh,Hig-hLr,

LOC=;

10

NET

LOC-"DIE";

11

NET吒口也W

LOC=nD7H;

12

13

#PACT:

Start

cfPACEAreaConstraints

14

15

♦PACE:

Starv

ofPACEProhibi匸Consrraints

17

#PACE:

Endof

ConstraintsgeneratedbyPAGE

1-o

5•生成下载配置文件,下载到开发板进行经行验证。

四、思考题:

1电路上应该满足哪些条件,才能用数字器件直接输出的方波驱动扬声器发声?

答:

电路上应当满足输出的频率在扬声器的工作范围之内,且驱动电流能够驱动扬声器。

2、如果演奏其他乐曲,程序应做哪些方面的改动?

答:

Music模块要改掉,改成相应乐曲的谱调。

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

当前位置:首页 > 高中教育 > 初中教育

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

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