《EDA技术及应用》 课程设计报告-电子琴及自动演奏.doc_第1页
《EDA技术及应用》 课程设计报告-电子琴及自动演奏.doc_第2页
《EDA技术及应用》 课程设计报告-电子琴及自动演奏.doc_第3页
《EDA技术及应用》 课程设计报告-电子琴及自动演奏.doc_第4页
《EDA技术及应用》 课程设计报告-电子琴及自动演奏.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

EDA课程设计 电子琴与自动演奏 郑州航空工业管理学院EDA技术及应用课程设计报告 2011 届 通信工程 专业 1113071 班级题 目: 电子琴与自动演奏 学 号: 姓 名: 同 组 人: 指导老师: 张松炜 赵 成邸金红 马鹏阁 2013年07月07日1 课程设计要求1.1 硬件电子琴设计设计要求:(1)按下KEY1KEY7 分别表示中音的DO、 RE 、 ME、 FA、 SOL、 LA、 SI.(2)按住KEY8同时按KEY1KEY7 分别表示高音的DO、 RE 、 ME、 FA、 SOL、 LA、 SI;(3)按下相应的键有对应LED灯指示;其他要求:(1)晶振为12 MHz.,采用CPLD 器件为ALTERA 的EPM7064AEL144-7N。1.2 乐曲自动演奏机设计要求:(1)可以在电路上能自动演奏乐曲,在这里我们采用的是贝多芬的欢乐颂;(2)有相应的LED灯指示高低音;其他要求:(1)晶振为12 MHz;(2) 采用CPLD 器件,为ALTERA 的EPM7064AEL144-7N。1.3 硬件电子琴设计+乐曲自动演奏机 最初我们选择的设计是电子琴,但是由于电子琴的设计较为基础,因此我们对电子琴的设计进行了改进,将其与乐曲自动演奏相结合,要求如下:设计要求:(1)按下KEY1KEY7 分别表示中音的DO、 RE 、 ME、 FA、 SOL、 LA、 SI;(2)对于电子琴,按下相应的键有对应LED灯指示;(3)可以在电路上能自动演奏乐曲,在这里我们采用的是贝多芬的欢乐颂,且有相应的LED灯指示高低音;(4)能实现电子琴和乐曲自动演奏功能的切换。其他要求:(1)晶振为12 MHz;(2)采用CPLD 器件为ALTERA 的EPM7064AEL144-7N。2 整体规划2.1 设计分析根据设计要求,由于乐曲自动演奏机和硬件电子琴的设计已经存在,我们对已有的设计进行修改,形成两个不同功能的模块,然后采用元件例化,拼接两个模块,同时附加一个选择功能模块,以实现乐曲自动演机和硬件电子琴两个功能。2.1.1 硬件电子琴分析对于硬件电子琴,参考了实验时使用的程序,已经达到的要求有:(1)按下key1key7 分别表示中音的DO、 RE 、 ME、 FA、 SOL、 LA、 S;(2)按下相应的键有对应LED灯指示。2.1.2 乐曲自动演奏机分析对于乐曲自动演奏机,参考了实验时使用的程序,已经达到的要求有:(1)可以在电路上能自动演奏乐曲,在这里我们采用的是贝多芬的欢乐颂(2)有相应的LED灯指示高低音。而对于其他要求:(1)晶振为12 MHz.;(2)采用CPLD 器件为ALTERA 的EPM7064SL-44。我们在实验箱验证时,先按照实验箱芯片和晶振进行就修改,在实验箱上确认实验相应功能之后,我们在对应模块的频率数值进行修改,并在对管脚重新锁定即可。2.1.3 整体设计分析整体设计要求:用key8实现两个功能切换。添加一个选择器,以实现两个功能切换。当key8键没有按下时,电路实现硬件电子琴功能,当key8键按下之后,电路实现乐曲自动演奏机。由于不存在现成可以借鉴的,于是,课程设计任务重心就放在了选择器模块的编写以及整体电路的合成上。2.2 顶层模块输入输出图2-1 顶层文件图形管脚说明:输入:时钟信号clk ,按键6:0key ,功能切换键key7输出:LED灯6:0led ,蜂鸣器beep;Key0: DO key1: RE key2: ME key3:FA key4: SOLkey5: LA key6: SI key7:功能切换键2.3 设计流程修改硬件电子琴模块修改乐曲自动演奏模块编写选择器设计顶层文件综合编译、试验箱测试试验箱测试图2-1 设计流程图2.4 设计分工孙干:负责修改硬件电子琴以及乐曲自动演奏模块。周龙杰:负责编写选择器以及设计顶层文件。朱真:负责综合测试电路是否达到要求,并进行修改。3 功能划分与模块化分3.1 自动演奏模块自动演奏模块功能:在按下key7键后,实现可以自动播放乐曲的功能。3.1.1 自动演奏设计方案(1)根据乐曲自动演奏的基本原理设计出适合EDA多功能试验箱的源程序,通过分频模块得到12MHZ的晶振;源程序编写完成,编译调试后,在实验箱上验证其功能;(2)验证模块是否能完成实践要求的所有功能;然后去掉分频模块,将功能模块做适当的修改,编译调试成功后,将其下载到CPLD实验板上。3.1.2 设计步骤(1)在Quartus 中建立一个工程项目文件song.qpf,并在该项目下新建Verilog HDL源程序文件song.v输入程序代码并保存。完整的Verilog HDL程序参考程序清单。(2)然后在该工程选择目标器件并对相应的引脚进行锁定,在这里所选择器件为Alter公司的EPM7064SL-44芯片。(3)对该工程文件进行全程编译处理,若在编译中发现错误,则找出错误并更正,直到编译成功。(4)最后拿出下载电缆,将此电缆的两端分别接到PC机的打印机并口和核心板上的JTAG 接口上,打开电源执行下载命令,把程序下载到CPLD器件中。此时可以得到欢乐颂乐曲的演奏以及LED灯的明灭指示其高低音。3.2 硬件电子琴模块硬件电子琴模块功能:在按下功能切换键key7后,可以实现电子琴功能,即按下key1 到key7的过程中发出相应的高低音。3.2.1 硬件电子琴设计方案(1)根据硬件电子琴演奏的基本原理设计出适合EDA多功能试验箱的源程序,通过分频模块得到12MHZ的晶振;源程序编写完成,编译调试后,在实验箱上验证其功能;(2)验证模块是否能完成实践要求的所有功能;然后去掉分频模块,将功能模块做适当的修改后,编译调试成功后,将其下载到CPLD实验板上。3.2.2 设计步骤(1)在Quarters II中建立一个工程项目文件beep1.qpf。并在该项目下新建Verilog HDL源程序文件beep1.v,输入程序代码并保存,进行综合编译,若在编译中发现错误,则找出并更正错误,直至编译成功为止。(2)选择目标器件并进行引脚锁定。将未使用的管脚设置为三态输入。(3)对该工程文件进行全程编译处理。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。(4)将产生的beep1.sof输出对FPGA进行配置。按下按键KEY1KEY8就可以开始使用电子琴来演奏音乐了。4 课程设计原理4.1 硬件电子琴设计原理乐曲演奏的原理是:由于组成乐曲的每个音符的频率值(音调)及其持续时间(音长)是乐曲演奏的2个基本数据,因此需要控制输出到扬声器的激励信号的频率高低和该频率信号持续的时间。频率的高低决定了音调的高低,而乐曲的简谱与各音名的频率对应关系在后面将给出。所有不同频率的信号都是从一基准频率分频而得来的,由于音阶频率多为非整数,而分频系数有不能为小数,故必须将计算得到的分频数进行向下取整,基准频率和分频系数应综合考虑加以选择,从而保证音乐不会走调。如在48MHz 时钟下,中音1(对应的频率值是523.3Hz)的分频系数应该为:48000000/(2*523.3)=45863,这样只需对系统时钟进行45863次分频即可得到所要的中音M1(分频系数计算公式为D=F/2K,由于F/2K之后,会使分频系数D变小,所以功能模块中语句:beep_r=!beep_r,使得输出取反,K=F/2count_end,消除了前面除以2K的影响) 。 4.2 乐曲自动演奏设计原理硬件电路和自动演奏的原理同硬件电子琴实验原理类似。至于其他音符,同样可由一式求出对应的分频系数。在程序中设置一个状态机,每250ms改变一个状态(即一个节拍),组成乐曲的每个音符的频率值(音调)相对应于状态机的每一个状态。只要让状态机的状态按顺序转换,就可以自动演奏播放音乐了。欢乐颂乐曲的简谱如图所示:图4-1 欢乐颂简谱图4.3 消抖原理作为机械开关的键盘,在按键操作时,由于机械触点的弹性及电压突跳等原因,在触点闭合或开启的瞬间会出现电压抖动,实际应用中如果不进行处理将会造成误触发。由于这里是低电平表示按键按下,所以按键去抖动的关键在于提取稳定的低电平状态,虑除前沿、后沿抖动毛刺。对于一个按键信号,可以用一个脉冲对他进行取样,如果连续三次取样为低电平,可以认为信号已经处于键稳定状态,这时输出一个低电平按键信号。继续取样的过程中如果不能满足连续三次取样为低,则认为键稳定状态结束,这时输出变为高电平。5 各模块的实现方法5.1 选择器模块实现方法经过小组讨论和老师的指导,我们确定以下三种方案以实现功能切换。方案A 添加使能端控制两个模块工作状态。即当KEY8没有按下时,硬件电子琴模块工作,乐曲自动演奏模块不工作;当KEY8按下时,硬件电子琴不工作,乐曲自动演奏模块工作。于是,需要给两个模块分别添加使能控制端,以控制其工作状态,而选择器就负责检测KEY8按键的状态,同时给出相应的使能信号输出指示。方案B通过控制时钟信号输入与否来控制两个模块工作状态。即当KEY8没有按下时,给硬件电子琴模块时钟信号,使其工作,将乐曲自动演奏模块的时钟信号屏蔽,使其不工作;当KEY8按下时,将硬件电子琴时钟信号屏蔽,使其不工作,给乐曲自动演奏模块时钟信号,使其工作。于是,需要让选择器实现时钟信号的选择输出,以分别给两个模块时钟信号。方案C 方案A、B都是对输入进行控制,换一个思路,我们可以对输出进行控制。即让两个模块都工作,但是输出的部分添加选择器,有选择输出信号。当KEY8没有按下时,硬件电子琴的模块输出接到蜂鸣器和LED灯;当KEY8按下时,乐曲自动演奏模块输出接到蜂鸣器和LED灯。由于三种方式实现的手段都不相同,逐一尝试后再进行取舍。对于方案A,经过编译下载到试验箱之后,虽然添加使能端可以达到切换功能,但是由于存在时钟信号与使能不同步的原因,在实验箱上就会出现按下按键后不能完全切换,需要等待对应的时钟信号出现后才能将功能切换过去。对于方案B,经过编译下载到实验箱之后,我们发现由于时钟信号有高低变化的电平出现,在切换的过程中,考虑到器件的延时,会出现无法考虑到的情况,对于两个模块很难达到切换。于是,我们改变了思路,采用方案C,从输出进行控制,通过将蜂鸣和LED灯的输入和两个模块的输出有选择的匹配进行切换。通过编译下载到实验箱验证可以实现功能,而且在两种状态的切换时,不会出现无法控制的状况。5.2 自动演奏模块实现方法通过参照实验课本,我们根据相关实验对试验程序进行了简单修改,得到了本次自动演奏模块的歌曲欢乐颂,实现其自动演奏功能。对于自动演奏模块而言,要实现其功能,只需要在顶层模块中添加触发自动演奏模块的触发点,在本程序中,即按下key8按键,屏蔽掉硬件电子琴的时钟信号,而使自动演奏模块的电子时钟信号作为使能信号。在自动演奏模块中,首先计算出各个音符所对应的参数,对参数进行定义和设计。通过对晶振的控制实现每个音响应时间的长短并且可以修改相关参数实现音长的改变。演奏过程中,设置循环体,即每次演奏结束,可以再从头开始演奏,从而实现自动演奏的自动功能。程序中可以设置每次循环时间,也可以设置循环中断。每个音符都需要驱动蜂鸣器实现其功能。最后,自动演奏模块中,需要有LED灯的指示,对于这样的要求,我们在程序最后添加了assign赋值语句。实现了每个音符响时对应的LED灯点亮。对于在实验中没有出现的音符所对应的LED灯则设置为高阻态,从而屏蔽LED灯点亮。在程序中,通过控制TIME从而得到每个音阶所响应的时间,不同晶振所对应的的时间为1s,对应的时间可以控制振荡次数实现控制时间的长短。if(state = 8d125) state = 8d0;语句实现的是自动演奏循环和实现歌曲演奏长短。通过系应该参数从而使歌曲唱到想要唱到的部分。5.3 硬件电子琴模块实现方法在原理部分我们已经知道了硬件电子琴和自动演奏乐曲的原理是相同的,因此在知道了如何实现乐曲演奏模块的方法后,对于硬件电子琴只需要实现同样的方法,就可以实现其模块功能,只不过在硬件电子琴模块中,需要的是利用按键实现其功能。对于每一个按键,在程序中设置各按键所对应的参数即可实现硬件电子琴的功能。程序的关键点为在于各个系数的计算,这个问题在原理部分通过清单已经详细解决,在这里对程序进行简单的解读:硬件电子琴的功能实现主要靠蜂鸣器和系数得到实现。在试验程序的基础上进行修改系数而得到。控制程序的循环体部分实现了计数和完成清零的操作。通过assign赋值语句实现LED灯的操作,在这里,我们添加了数码管的功能,从而实现了再按下按键的同时,实现数码管显示相对应的音阶大小。6 实验箱上完整设计6.1硬件电子琴模块程序图6-1 硬件电子琴模块图module beep1(clk,key,beep,led);/模块名称beepinput clk;/系统时钟48MHzinput6:0key;/按键输入output beep;/蜂鸣器输出端output6:0led;/LED输出reg beep_r;/寄存器reg15:0count,count_end;reg6:0key_r;reg 13:0a; /消抖寄存器always(posedge clk)begincount = count + 1b1;/计数器加1if(count = count_end)(!(count_end = 16hffff)begincount = 16h0;/计数器清零beep_r = !beep_r; /取反输出信号endendalways (key)begina=2000; /消抖等待时间key_r = key;/取键值case(key_r)7b1111110:begin while(a0)begin a=a-1; end count_end = 16hb327;while(a0)begin a=a-1; end end7b1111101:begin while(a0)begin a=a-1 ;end count_end = 16h9fa0;while(a0)begin a=a-1; end end/中音2的分频系数值7b1111011:begin while(a0)begin a=a-1 ;end count_end = 16h8e32;while(a0)begin a=a-1; end end/中音3的分频系数值7b1110111:begin while(a0)begin a=a-1 ;end count_end = 16h8637;while(a0)begin a=a-1; end end/中音4的分频系数值7b1101111:begin while(a0)begin a=a-1 ;end count_end = 16h7794;while(a0)begin a=a-1; end end/中音5的分频系数值7b1011111:begin while(a0)begin a=a-1 ;end count_end = 16h6a88;while(a0)begin a=a-1; end end/中音6的分频系数值7b0111111:begin while(a0)begin a=a-1 ;end count_end = 16h5ee8;while(a0)begin a=a-1; end end/中音7的分频系数值default: begin while(a0)begin a=a-1 ;end count_end = 16hffff;while(a0)begin a=a-1; end endendcaseendassign beep =beep_r;/输出音乐assign led =key_r;/输出按键状态endmodule6.2 乐曲自动演奏机程序图6-2 乐曲自动演奏模块图module song(clk,beep,led);/模块名称 inputclk;/系统时钟48Mhzoutputbeep;/蜂鸣器输出端 output7:0 led;regbeep_r;/寄存器 reg7:0 state;/乐谱状态机reg15:0count,count_end;reg23:0count1;/乐谱参数:D=F/2K (D:参数,F:时钟频率,K:音高频率) /以下是12MHZ晶振状态下的各音高对应的参数 /*parameter L_5 = 16h3bca,/低音5 M_1 = 16h2cc9,/中音1 M_2 = 16h27f8,/中音2 M_3 = 16h238c,/中音3 M_4 = 16h218d,/中音4 M_5 = 16h1de5,/中音5 M_6 = 16h1aa2;/中音6 parameterTIME = 3000000;/控制每一个音的长短(250ms)*/ /乐谱参数:D=F/2K (D:参数,F:时钟频率,K:音高频率) parameter L_5 = 16d61224,/低音5 M_1 = 16d45863,/中音1 M_2 = 16d40864,/中音2 M_3 = 16d36402,/中音3 M_4 = 16d34359,/中音4 M_5 = 16d30612; /中音5 parameterTIME = 12000000;/控制每一个音的长短(250ms) assign beep = beep_r;/输出音乐 ,蜂鸣器 always(posedge clk)begincount = count + 1b1;/计数器加1 if(count = count_end)begincount = 16h0;/计数器清零 beep_r = !beep_r;/输出取反 endendalways (posedge clk)beginif(count1 TIME)/一个节拍250mS count1 = count1 + 1b1;elsebegincount1 = 24d0;if(state = 8d125) /控制歌曲循环播放时间 state = 8d0; /循环从头开始 elsestate = state + 1b1; /循环结构体 begincase(state)8d0,8d1: count_end = M_3;/中音3,持续2个节拍 8d2,8d3: count_end = M_3;/中音3,持续2个节拍 8d4,8d5:count_end = M_4;/中音4,持续2个节拍 8d6,8d7: count_end = M_5;8d8,8d9: count_end = M_5;8d10,8d11: count_end = M_4;8d12,8d13: count_end = M_3;8d14,8d15: count_end = M_2;8d16,8d17: count_end = M_1;8d18,8d19: count_end = M_1;8d20,8d21: count_end = M_2;8d22,8d23: count_end = M_3;8d24,8d25,8d26: count_end = M_3;8d27: count_end = M_2;8d28,8d29,8d30,8d31: count_end = M_2;8d32,8d33: count_end = M_3;8d34,8d35: count_end = M_3;8d36,8d37: count_end = M_4;8d38,8d39: count_end = M_5;8d40,8d41: count_end = M_5;8d42,8d43: count_end = M_4;8d44,8d45: count_end = M_3;8d46,8d47: count_end = M_2;8d48,8d49: count_end = M_1;8d50,8d51: count_end = M_1;8d52,8d53: count_end = M_2;8d54,8d55: count_end = M_3;8d56,8d57,8d58: count_end = M_2;8d59: count_end = M_1;8d60,8d61,8d62,8d63: count_end = M_1;8d64,8d65: count_end = M_2;8d66,8d67: count_end = M_2;8d68,8d69: count_end = M_3;8d70,8d71: count_end = M_1;8d72,8d73: count_end = M_2;8d74: count_end = M_3;8d75: count_end = M_4;8d76,8d77: count_end = M_3;8d78,8d79: count_end = M_1;8d80,8d81: count_end = M_2;8d82: count_end = M_3;8d83: count_end = M_4;8d84,8d85: count_end = M_3;8d86,8d87: count_end = M_2;8d88,8d89: count_end = M_1;8d90,8d91: count_end = M_2;/8d92,8d93: count_end = L_5;8d92,8d93,8d94,8d95:count_end = L_5;/8d94,8d95: count_end = M_3;8d96,8d97: count_end = M_3;8d98,8d99: count_end = M_3;8d100,8d101: count_end = M_4;8d102,8d103: count_end = M_5;8d104,8d105: count_end = M_5;8d106,8d107: count_end = M_4;8d108: count_end = M_3;8d109: count_end = M_2;8d110,8d111: count_end = M_1;8d112,8d113: count_end = M_1;8d114,8d115: count_end = M_2;8d116,8d117: count_end = M_3;8d118,8d119,8d120: count_end = M_2;8d121: count_end = M_1;8d122,8d123,8d124,8d125: count_end = M_1;default:count_end = 16hffff;endcase end endendassign led0=(count_end = M_1)?0:1; /控制LED灯的语言 assign led1=(count_end = M_2)?0:1;assign led2=(count_end = M_3)?0:1;assign led3=(count_end = M_4)?0:1;assign led4=(count_end = M_5)?0:1;assign led5=(count_end = L_5)?0:1;assign led6=1;assign led7=1;endmodule 6.3 选择模块程序图6-3 选择模块图module select(key,beep1,beep2,led1,led2,beep,led); input key,beep1,beep2; input 6:0led1; input 6:0led2; output beep; output 6:0led; reg key_r;always (negedge key)beginkey_r = key_r;/将琴键开关转换为乒乓开关endassign beep=(key_r)?beep2:beep1;assign led=(key_r)?led2:led1;endmodule6.4顶层文件程序图6-4 顶层文件图module dzq(key,key7,beep,led,clk);input key7;input 6:0key;input clk;output 6:0led;output beep;reg dout1;reg dout2;reg dout3;reg led;reg key_r;wire a,b,key_l;wire 6:0c;wire 6:0d;assign key_l = (dout1 | dout2 | dout3);/按键消抖输出always (posedge clk)begindout1 = key7;dout2 = dout1;dout3 = dout2;endsong (.clk(clk),.beep(b),.led(c);beep1 (.clk(clk),.key(key),.beep(a),.led(d);select (.key(key_l),.beep1(a),.beep2(b),.beep(beep),.led(led),.led1(d),.led2(c);endmodule6.5实验图形文件表6-1 硬件电子琴模块+自动演奏模块管脚锁定表图6-5 RTL Viewer文件图7 优化改进7.1.1 消抖原理1(取值消抖)作为机械开关的键盘,在按键操作时,由于机械触点的弹性及电压突跳等原因,在触点闭合或开启的瞬间会出现电压抖动,实际应用中如果不进行处理将会造成误触发。由于这里是低电平表示按键按下,所以按键去抖动的关键在于提取稳定的低电平状态,虑除前沿、后沿抖动毛刺。对于一个按键信号,可以用一个脉冲对他进行取样,如果连续三次取样为低电平,可以认为信号已经处于键稳定状态,这时输出一个低电平按键信号。继续取样的过程中如果不能满足连续三次取样为低,则认为键稳定状态结束,这时输出变为高电平。一通道的消抖电路原理图如下:图7-1 按键电平抖动示意图 图7-2 按键消抖动硬件原理图7.1.2 消抖原理2(延时消抖)同样在进行按键操作的时候会因为有机械触点的弹性及电压突跳等原因,会出现电压抖动现象。在实际应用中为了避免误触发的发生几率,除了用进行三次取值作为最终取值,还有延时消抖这样一种方法进行消抖。所谓延时消抖,就是在进行按键操作之后,触发器出发瞬间及产生的电压抖动时间,不对其进行取值,让其取值操作进行延时,设定延时时间,当延时时间大于电压抖动时间,在对其状态进行取值操作,这样取到的状态值是稳定的而且是正确的,因此延时消抖也是消抖的一种方法。本课程设计也用到了这两种的消抖方法,在硬件电子琴模块中采用的是延时消抖方式,在自动演奏模块中采用的是取值消抖方式。7.2 乒乓操作由于在切换功能时,需要长期按键才能进行切换,于是我们对选择器添加了乒乓操作。功能图,如图7-3所示。keykeyout图7-3 乒乓操作按键示意图当开关键输入低电平时,输出由高电平变为低电平,并且保持;当再次开关键输入低电平时,输出由低电平变为高电平,并且保持。从而有了锁定的功能,实现了功能的完整切换。程序如下always (negedge key)beginkeyout = keyout;/将琴键开关转换为乒乓开关end8 任务完成情况说明表8-1 任务完成情况一览表编号功能完成状况1按下KEY1KEY7 分别表示中音的DO、 RE 、 ME、 FA、 SOL、 LA、 SI;达成2对于电子琴,按下相应的键有对应LED灯指示达成3可以在电路上能自动演奏乐曲。在这里我们采用的是贝多芬的欢乐颂,且有相应的LED灯指示高低音;达成4能实现电子琴和乐曲自动演奏功能的切换达成额外实现功能:硬件电子琴在原有的设计要求的基础上有了数码管显示功能顶层文件原理图,如图8-1所示。图8-1 带数码管显示功能硬件电子琴图9 课程设计体会与总结本次EDA课程设计,持续了10天的时间,在这十天的时间里,虽然说时间不是连续的,但是学习的过程却是连续的。在刚开始做实验的时候我们就开始着手准备做课程设计。这次的课程设计,进一步加深了我对实验课的认识和对EDA的了解,对于Verilog HDL语言的运用更加的熟练。同时对于课程设计过程中要进行的调试和编写程序有了一定的认识。个人认为不是做出了实验板块觉得很成功,而是调试成功的那时刻很有成就感。对于在课程设计中的出现的失误和不足,是成功前的最大的困难和挑战,最后在队员和老师的帮助下,所有的问题基本都得到了解决,而且也明白了其中的道理和原理。刚开始的时候我们觉得做出一个简单的硬件电子琴是一件很简单的事情,甚至想在同时做出硬件电子琴的同时把自动演奏模块添加进去,但是在实际操作中才发现,由于使用按键的冲突,所有不得不消除原有模块的高音阶部分,而将其改造出现在的模块和形式,对于硬件电子琴的改造,看似是对原功能块的简单的改进,而实际上是需要重新构造电路的,因为在演奏的过程中会有LED灯的使用冲突,如何调试和调用,才是本课程设计的重点,各个模块的简单的使用是很简单的,但是在综合之后就需要不断地修改和测试才能达到课程设计的要求。在本次课程设计中,刚开始的时候我做音阶的时候和做自动演奏模块时候,在第一次调试时候出现了19个错误,而且是没有缘由的错误,让我很是失望,经过了一个也夜晚的调试,终于把自动演奏模块做成功了。第二天因为顶层文件的需要,我们需要对各自的程序进行调整和修改。目的是为了能够在最后的开发平台上得到我们想要的结果。在这次的课程设计过程中,我们采取的分工合作的方式来进行课程设计,我个人觉得是一件很好的事情。大家各有侧重点但是同时都为课程设计做出应该做的努力,分工协作有时候不仅有利用于课程设计的快速进行,而且也有利于个人和小组的交流和促进,在分工的时候,每个人都各尽所长,实现了又快又好的完成课程任务的目标。最后,特别感谢本次课程设计给予我们指导的老师,在老师的知道和启发下,我们才能正确的完成课程设计。在已经结束课程的时间里,老师们仍然在实验室和我们在一起为我们的课程设计作指导。主要参考文献1潘松,黄继业.2009.EDA技术使用教程第4版. 北京:科学出版社 2潘松,黄继业,陈龙.2009.EDA技术与Veri

温馨提示

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

评论

0/150

提交评论