数字电路课程设计 《梁祝》乐曲 数字时钟 乒乓球游戏机 串并乘法器.docx
- 文档编号:11496357
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:35
- 大小:169.83KB
数字电路课程设计 《梁祝》乐曲 数字时钟 乒乓球游戏机 串并乘法器.docx
《数字电路课程设计 《梁祝》乐曲 数字时钟 乒乓球游戏机 串并乘法器.docx》由会员分享,可在线阅读,更多相关《数字电路课程设计 《梁祝》乐曲 数字时钟 乒乓球游戏机 串并乘法器.docx(35页珍藏版)》请在冰豆网上搜索。
数字电路课程设计《梁祝》乐曲数字时钟乒乓球游戏机串并乘法器
数字电路课程设计
题目1:
《梁祝》乐曲
题目2:
数字时钟
题目3:
乒乓球游戏机
题目4:
串并乘法器
课程名称:
数字电路课程设计
学院:
专业:
班级:
学号:
学生姓名:
成绩:
2010年月日
(一)《梁祝》乐曲演奏
一:
系统功能概述
1演奏电路逻辑图有三部分:
音乐节拍和音调发生器、简谱码对应的分频预置数查表电路、数控分频与演奏发生器。
2乐曲的每个音符的发音频率值及其持续的时间是乐曲能够连续演奏所需的两个基本要素,设计演奏电路的关键就是获得这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果。
2、系统组成以及系统各部分的设计
顶层设计(SONGER.VHD)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSongerIS
PORT(CLK12MHZ:
INSTD_LOGIC;
CLK8HZ:
INSTD_LOGIC;
LED8:
OUTSTD_LOGIC_VECTOR(31DOWNTO0);
SPKOUT:
OUTSTD_LOGIC);
END;
ARCHITECTUREoneOFSongerIS
SIGNALQI:
STD_LOGIC_VECTOR(5DOWNTO0);
COMPONENTNoteTabs
PORT(clk:
INSTD_LOGIC;
ToneIndex:
OUTINTEGERRANGE0TO15);
ENDCOMPONENT;
COMPONENTToneTaba
PORT(Index:
ININTEGERRANGE0TO15;
Tone:
OUTINTEGERRANGE0TO16#7FF#);
ENDCOMPONENT;
COMPONENTSpeakera
PORT(clk:
INSTD_LOGIC;
Tone:
ININTEGERRANGE0TO16#7FF#;
SpkS:
OUTSTD_LOGIC);
ENDCOMPONENT;
SIGNALTone:
INTEGERRANGE0TO16#7FF#;
SIGNALToneIndex:
INTEGERRANGE0TO15;
BEGIN
u1:
NoteTabsPORTMAP(clk=>CLK8HZ,ToneIndex=>ToneIndex);
u2:
ToneTabaPORTMAP(Index=>ToneIndex,Tone=>Tone);
u3:
SpeakeraPORTMAP(clk=>CLK12MHZ,Tone=>Tone,SpkS=>SPKOUT);
PROCESS(CLK8HZ)
BEGIN
IFCLK8HZ'EVENTANDCLK8HZ='1'THEN
QI<=QI+1;
ENDIF;
ENDPROCESS;
LED8(3DOWNTO0)<=QI(5DOWNTO2);
LED8(7DOWNTO4)<=QI(5DOWNTO2);
LED8(11DOWNTO8)<=QI(5DOWNTO2);
LED8(15DOWNTO12)<=QI(5DOWNTO2);
LED8(19DOWNTO16)<=QI(5DOWNTO2);
LED8(23DOWNTO20)<=QI(5DOWNTO2);
LED8(27DOWNTO24)<=QI(5DOWNTO2);
LED8(31DOWNTO28)<=QI(5DOWNTO2);
END;
音乐节拍和音调发生器(NOTETABS.VHD)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYNoteTabsIS
PORT(clk:
INSTD_LOGIC;
ToneIndex:
OUTINTEGERRANGE0TO15);
END;
ARCHITECTUREoneOFNoteTabsIS
SIGNALCounter:
INTEGERRANGE0TO138;
BEGIN
CNT8:
PROCESS(clk)
BEGIN
IFCounter=138THENCounter<=0;
ELSIF(clk'EVENTANDclk='1')THEN
Counter<=Counter+1;
ENDIF;
ENDPROCESS;
Search:
PROCESS(Counter)
BEGIN
CASECounterIS--译码器,查歌曲的简谱,查表结果为音调表的索引值
WHEN00=>ToneIndex<=3;--简谱"3"音
WHEN01=>ToneIndex<=3;--发4个时钟节拍
WHEN02=>ToneIndex<=3;
WHEN03=>ToneIndex<=3;
WHEN04=>ToneIndex<=5;--简谱"5"音
WHEN05=>ToneIndex<=5;--发3个时钟节拍
WHEN06=>ToneIndex<=5;
WHEN07=>ToneIndex<=6;--简谱"6"音
WHEN08=>ToneIndex<=8;
WHEN09=>ToneIndex<=8;
WHEN10=>ToneIndex<=8;
WHEN11=>ToneIndex<=9;
WHEN12=>ToneIndex<=6;
WHEN13=>ToneIndex<=8;
WHEN14=>ToneIndex<=5;
WHEN15=>ToneIndex<=5;
WHEN16=>ToneIndex<=12;
WHEN17=>ToneIndex<=12;
WHEN18=>ToneIndex<=12;
WHEN19=>ToneIndex<=15;
WHEN20=>ToneIndex<=13;
WHEN21=>ToneIndex<=12;
WHEN22=>ToneIndex<=10;
WHEN23=>ToneIndex<=12;
WHEN24=>ToneIndex<=9;
WHEN25=>ToneIndex<=9;
WHEN26=>ToneIndex<=9;
WHEN27=>ToneIndex<=9;
WHEN28=>ToneIndex<=9;
WHEN29=>ToneIndex<=9;
WHEN30=>ToneIndex<=9;
WHEN31=>ToneIndex<=0;
WHEN32=>ToneIndex<=9;
WHEN33=>ToneIndex<=9;
WHEN34=>ToneIndex<=9;
WHEN35=>ToneIndex<=10;
WHEN36=>ToneIndex<=7;
WHEN37=>ToneIndex<=7;
WHEN38=>ToneIndex<=6;
WHEN39=>ToneIndex<=6;
WHEN40=>ToneIndex<=5;
WHEN41=>ToneIndex<=5;
WHEN42=>ToneIndex<=5;
WHEN43=>ToneIndex<=6;
WHEN44=>ToneIndex<=8;
WHEN45=>ToneIndex<=8;
WHEN46=>ToneIndex<=9;
WHEN47=>ToneIndex<=9;
WHEN48=>ToneIndex<=3;
WHEN49=>ToneIndex<=3;
WHEN50=>ToneIndex<=8;
WHEN51=>ToneIndex<=8;
WHEN52=>ToneIndex<=6;
WHEN53=>ToneIndex<=5;
WHEN54=>ToneIndex<=6;
WHEN55=>ToneIndex<=8;
WHEN56=>ToneIndex<=5;
WHEN57=>ToneIndex<=5;
WHEN58=>ToneIndex<=5;
WHEN59=>ToneIndex<=5;
WHEN60=>ToneIndex<=5;
WHEN61=>ToneIndex<=5;
WHEN62=>ToneIndex<=5;
WHEN63=>ToneIndex<=5;
WHEN64=>ToneIndex<=10;
WHEN65=>ToneIndex<=10;
WHEN66=>ToneIndex<=10;
WHEN67=>ToneIndex<=12;
WHEN68=>ToneIndex<=7;
WHEN69=>ToneIndex<=7;
WHEN70=>ToneIndex<=9;
WHEN71=>ToneIndex<=9;
WHEN72=>ToneIndex<=6;
WHEN73=>ToneIndex<=8;
WHEN74=>ToneIndex<=5;
WHEN75=>ToneIndex<=5;
WHEN76=>ToneIndex<=5;
WHEN77=>ToneIndex<=5;
WHEN78=>ToneIndex<=5;
WHEN79=>ToneIndex<=5;
WHEN80=>ToneIndex<=3;
WHEN81=>ToneIndex<=5;
WHEN82=>ToneIndex<=3;
WHEN83=>ToneIndex<=3;
WHEN84=>ToneIndex<=5;
WHEN85=>ToneIndex<=6;
WHEN86=>ToneIndex<=7;
WHEN87=>ToneIndex<=9;
WHEN88=>ToneIndex<=6;
WHEN89=>ToneIndex<=6;
WHEN90=>ToneIndex<=6;
WHEN91=>ToneIndex<=6;
WHEN92=>ToneIndex<=6;
WHEN93=>ToneIndex<=6;
WHEN94=>ToneIndex<=5;
WHEN95=>ToneIndex<=6;
WHEN96=>ToneIndex<=8;
WHEN97=>ToneIndex<=8;
WHEN98=>ToneIndex<=8;
WHEN99=>ToneIndex<=9;
WHEN100=>ToneIndex<=12;
WHEN101=>ToneIndex<=12;
WHEN102=>ToneIndex<=12;
WHEN103=>ToneIndex<=10;
WHEN104=>ToneIndex<=9;
WHEN105=>ToneIndex<=9;
WHEN106=>ToneIndex<=10;
WHEN107=>ToneIndex<=9;
WHEN108=>ToneIndex<=8;
WHEN109=>ToneIndex<=8;
WHEN110=>ToneIndex<=6;
WHEN111=>ToneIndex<=5;
WHEN112=>ToneIndex<=3;
WHEN113=>ToneIndex<=3;
WHEN114=>ToneIndex<=3;
WHEN115=>ToneIndex<=3;
WHEN116=>ToneIndex<=8;
WHEN117=>ToneIndex<=8;
WHEN118=>ToneIndex<=8;
WHEN119=>ToneIndex<=8;
WHEN120=>ToneIndex<=6;
WHEN121=>ToneIndex<=8;
WHEN122=>ToneIndex<=6;
WHEN123=>ToneIndex<=5;
WHEN124=>ToneIndex<=3;
WHEN125=>ToneIndex<=5;
WHEN126=>ToneIndex<=6;
WHEN127=>ToneIndex<=8;
WHEN128=>ToneIndex<=5;
WHEN129=>ToneIndex<=5;
WHEN130=>ToneIndex<=5;
WHEN131=>ToneIndex<=5;
WHEN132=>ToneIndex<=5;
WHEN133=>ToneIndex<=5;
WHEN134=>ToneIndex<=5;
WHEN135=>ToneIndex<=5;
WHEN136=>ToneIndex<=0;--简谱休止符à输出
WHEN137=>ToneIndex<=0;--频率为零
WHEN138=>ToneIndex<=0;
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
END;
简谱码对应的分频预置数查表电路(ToneTaba.VHD)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_unsigned.ALL;
ENTITYToneTabaIS
PORT(Index:
ININTEGERRANGE0TO15;
CODE:
OUTINTEGERRANGE0TO15;
HIGH:
OUTSTD_LOGIC;
Tone:
OUTINTEGERRANGE0TO16#7FF#);
END;
ARCHITECTUREoneOFToneTabaIS
BEGIN
Search:
PROCESS(Index)
BEGIN
CASEIndexIS--译码电路,查表方式,控制音调的预置数
WHEN0=>Tone<=2047;CODE<=0;HIGH<='0';
WHEN1=>Tone<=773;CODE<=1;HIGH<='0';
WHEN2=>Tone<=912;CODE<=2;HIGH<='0';
WHEN3=>Tone<=1036;CODE<=3;HIGH<='0';
WHEN5=>Tone<=1197;CODE<=5;HIGH<='0';
WHEN6=>Tone<=1290;CODE<=6;HIGH<='0';
WHEN7=>Tone<=1372;CODE<=7;HIGH<='0';
WHEN8=>Tone<=1410;CODE<=1;HIGH<='1';
WHEN9=>Tone<=1480;CODE<=2;HIGH<='1';
WHEN10=>Tone<=1542;CODE<=3;HIGH<='1';
WHEN12=>Tone<=1622;CODE<=5;HIGH<='1';
WHEN13=>Tone<=1668;CODE<=6;HIGH<='1';
WHEN15=>Tone<=1728;CODE<=7;HIGH<='1';
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
END;
数控分频与演奏发生器(Speakera.VHD)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYSpeakeraIS
PORT(clk:
INSTD_LOGIC;
Tone:
ININTEGERRANGE0TO16#7FF#;
SpkS:
OUTSTD_LOGIC);
END;
ARCHITECTUREoneOFSpeakeraIS
SIGNALPreCLK:
STD_LOGIC;
SIGNALFullSpkS:
STD_LOGIC;
BEGIN
DivideCLK:
PROCESS(clk)
VARIABLECount4:
INTEGERRANGE0TO15;
BEGIN
PreCLK<='0';
--将CLK进行16分频,PreCLK为CLK的16分频
IFCount4>11THEN
PreCLK<='1';
Count4:
=0;
ELSIFclk'EVENTANDclk='1'THEN
Count4:
=Count4+1;
ENDIF;
ENDPROCESS;
GenSpkS:
PROCESS(PreCLK,Tone)
VARIABLECount11:
INTEGERRANGE0TO16#7FF#;
BEGIN
--11位可预置计数器
IFPreCLK'EVENTANDPreCLK='1'THEN
IFCount11=16#7FF#THEN
Count11:
=Tone;
FullSpkS<='1';
ELSE
Count11:
=Count11+1;
FullSpkS<='0';
ENDIF;
ENDIF;
ENDPROCESS;
DelaySpkS:
PROCESS(FullSpkS)
VARIABLECount2:
STD_LOGIC;
BEGIN
--将输出再进行2分频,将脉冲展宽,以使扬声器有足够功率发音
IFFullSpkS'EVENTANDFullSpkS='1'THEN
Count2:
=NOTCount2;
IFCount2='1'THENSpkS<='1';
ELSE
SpkS<='0';
ENDIF;
ENDIF;
ENDPROCESS;
END;
三:
系统以及各个模块的仿真波形
音乐节拍和音调发生器的仿真波形
简谱码对应的分频预置数查表电路仿真波形
音乐节拍和音调发生器仿真波形
数控分频与演奏发生器仿真波形
四:
系统调试运行结果说明与分析
实验箱选择模式0。
将设计出的演奏电路的程序经过编译(Compiler)后,选择FLEX10K系列中EPF10K10LC84-4作为目标器件(Assign/Device),并进行管脚锁定(FloorplanEditor)。
器件编程(Programmer),将编译生成的*.sof文件下载到目标芯片。
实验箱自带蜂鸣器(Speaker)奏出“梁祝”的旋律,由此说明实验成功。
五:
结论及体会
程序可以完成预定的功能,而且本系统还可以演奏出其他的曲子,只需将其简谱分频预置数写入ToneTaba.VHD,再将该曲子的节拍表输入到NoteTabs.VHD中,重新编译后,下载即可完成。
通过这次实验,使我更加熟练的掌握了调制编译的过程,加深了对实验的兴趣。
(二)数字钟
一:
系统功能概述
1一个具有“时”、“分”、“秒”十进制数字显示(小时从00-23)计时器。
2具有手动校时、校分的功能。
二:
系统组成以及系统各部分的设计
顶层文件(SHUZIZHONG.VHD)
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityshuzizhongis
port(clk,set,change,s1,s2,s3:
instd_logic;
second1,second2,minite1,minite2,hour1,hour2:
outstd_logic_vector(3downto0);
cout:
outstd_logic);
endentity;
architectureoneofshuzizhongis
begin
pro1:
process(clk,set,s1,s2,s3,change)
variablemsecond1,msecond2,mminite1,mminite2,mhour11,mhour12,mhour21,mhour22:
std_logic_vector(3downto0);
begin
ifclk'eventandclk='1'then
ifset='1'then-----启动校验
ifs1='1'
thenmsecond1:
=msecond1+1;
ifmsecond1="1010"
thenmsecond1:
="0000";
msecond2:
=msecond2+1;
ifmsecond2="0110"
thenmsecond2:
="0000";
endif;
endif;
endif;--------秒校验
ifs2='1'
then
mminite1:
=mminite1+1;
ifmmini
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 梁祝 数字电路课程设计 梁祝乐曲 数字时钟 乒乓球游戏机 串并乘法器 数字电路 课程设计 乐曲 数字 时钟 乒乓球 游戏机 乘法器