EDA课程设计梁祝乐曲演奏电路设计_第1页
EDA课程设计梁祝乐曲演奏电路设计_第2页
EDA课程设计梁祝乐曲演奏电路设计_第3页
EDA课程设计梁祝乐曲演奏电路设计_第4页
EDA课程设计梁祝乐曲演奏电路设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA课程设计班级:通信工程四班姓名:学号:时间:设计一:梁祝乐曲演奏电路设计设计任务了解乐曲演奏电路的实验原理。掌握利用可编程器件实现乐曲演奏的设计方法。二.设计分析根据声学知识,组成乐曲的每个音符的发声频率值及其持续的时间是乐曲能连续弹奏所需的两个基本要素,获取这两个要素所对应的数值和通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果是该实验的关键。实验原理图原理电路如上图所示,实验由三个模块组成:1)数控分频与演奏发生器模块,即SPEAKERA。2)乐曲简谱码对应的分频预置数查表电路模块,即TONETABA。3)音乐节拍和音调发生器模块,即NOTETABS。模块一(SPEAKERA):产生音符的频率。这是一个数控分频器,由其clk端输入一个12MHz的信号,通过SPEAKERA分频后由SPKOUT输出,由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,须另加一个D触发器以均衡其占空比,但这时的频率将是原来的一半。SPEAKERA对clk输入信号的分频比由11位预置数TONE[10..0]决定。SPKOUT的输出频率将决定每一音符的音调,这样,分频计数器的预置值TONE[10..0]与SPKOUT的输出频率就有了对应关系。模块二(TONETABA):音符的持续时间须根据乐曲的速度即每个音符的节拍数来确定,原理图中TONETABA的功能首先是为SPEAKERA提供决定所发音符的分频预置数,而此数在SPEAKERA输入口的停留时间即为音符的节拍值。模块TONETABA是乐曲简谱码对应的分频预置数查表电路,其中设置了梁祝乐曲全部音符所对应的分频预置数,共13个,每一音符的停留时间由音乐节拍和音调发生器模块NOTETABS的clk的输入频率决定,在此为4Hz.这13个数值的输出由对应于NOTETABA1的4位输入值Index[3..0]的输出值与持续时间由模块NOTETABS决定。模块三(NOTETABS):在NOTETABS中设置了一个8位二进制计数器(计数最大值为138,因为共有138个音符),这个计数器的频率选为4Hz,即每一个计数值得停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。例如,NOTETABS在以下的VHDL逻辑描述中,梁祝乐曲的第一个音符为3,此音在逻辑中停留了4个时钟节拍,即1秒时间,相应地,所对应的3音符分频预置值为1036,在SPEAKERA的输入端停留了1秒。随着NOTETABS中的计数器按4Hz的时钟速率做加法计数时,梁祝乐曲就开始连续自然地演奏起来了。实验程序:模块一(speakera):libraryieee;useieee.std_logic_1164.all;entityspeakeraisport(clk:instd_logic;tone:inintegerrange0to16#7FF#;spks:outstd_logic);end;architectureoneofspeakeraissignalpreclk:std_logic;signalfullspks:std_logic;begindivideclk:process(clk)variablecount4:integerrange0to15;beginpreclk<='0';ifcount4>11thenpreclk<='1';count4:=0;elsifclk'eventandclk='1'thencount4:=count4+1;endif;endprocess;genspks:process(preclk,tone)variablecount11:integerrange0to16#7FF#;beginifpreclk'eventandpreclk='1'thenifcount11=16#7FF#thencount11:=tone;fullspks<='1';elsecount11:=count11+1;fullspks<='0';endif;endif;endprocess;delayspks:process(fullspks)variablecount2:std_logic;beginiffullspks'eventandfullspks='1'thencount2:=notcount2;ifcount2='1'thenspks<='1';elsespks<='0';endif;endif;endprocess;end;模块二(tonetaba):libraryieee;useieee.std_logic_1164.all;entitytonetabaisport(index:inintegerrange0to15;code:outintegerrange0to15;high:outstd_logic;tone:outintegerrange0to16#7FF#);end;architectureoneoftonetabaisbeginsearch:process(index)begincaseindexiswhen0=>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<=1;high<='1';whenothers=>null;endcase;endprocess;endone;模块三(notetabs):libraryieee;useieee.std_logic_1164.all;entitynotetabsisport(clk:instd_logic;toneindex:outintegerrange0to15);end;architectureoneofnotetabsissignalcounter:integerrange0to138;begincnt8:process(clk)beginifcounter=138thencounter<=0;elsif(clk'eventandclk='1')thencounter<=counter+1;endif;endprocess;search:process(counter)begincasecounteris when00=>toneindex<=3;when01=>toneindex<=3;when02=>toneindex<=3;when03=>toneindex<=3;when04=>toneindex<=5;when05=>toneindex<=5;………when136=>toneindex<=0;when137=>toneindex<=0;when138=>toneindex<=0;whenothers=>null;endcase;endprocess;end;设计二:循环八路彩灯设计设计任务:设计一个八路彩灯控制器,要求:彩灯明暗变化节拍为0.25S和0.5S两种节拍交替运行。演示花型3种。彩灯用发光二极管LED模拟。要求系统用两种节拍交替循环显示3种花型。二.任务分析:该系统的外加信号为时钟,输出为8路彩灯信号。彩灯控制器按一定的节拍改变8路输出的高低电平,控制彩灯按预定的规律亮灭,从而显示一定的花型。根据设计任务,彩灯控制器应包含时钟电路编码器和控制电路。时钟可以采用实验板上的时钟信号;编码器根据花型要求按节拍产生8位输出编码信号,控制彩灯按规律亮灭;控制电路则应控制编码器的节拍脉冲和3种花形的循环切换,同步整个系统工作。实验原理图如下:三.实验程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitylightisport(clk:instd_logic;q1:outstd_logic_vector(5downto0));endlight;architectureaoflightissignalt,q:std_logic;signala:std_logic_vector(5downto0);begincnt:process(clk)beginif(clk'eventandclk='1')thenif(a=63)thena<="000001";t<=nott;elsift='1'thena<=a+1;elsift='0'andq='1'thena<=a+1;q<=notq;elsift='0'andq='0'thenq<=notq;endif;endif;endprocess;q1<=a;enda;显示图形模块:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitytuisport(cnt1:instd_logic_vector(5downto0);d1,d2,d3,d4,d5,d6,d7,d8:outstd_logic);endtu;architectureaoftuissignaldo:std_logic_vector(7downto0);beginprocess(cnt1)begincasecnt1iswhen"000000"=>do<="00000000";when"000001"=>do<="10000000";when"000010"=>do<="11000000";when"000011"=>do<="11100000";when"000100"=>do<="11110000";when"000101"=>do<="11111000";.......when"111110"=>do<="00000000";when"111111"=>do<="00000000";whenothers=>do<="00000000";endcase;endprocess;d1<=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论