简易电子琴课程设计QUARTUS制作.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 电子琴 课程设计 QUARTUS 制作
- 资源描述:
-
可编程逻辑 期末设计 题 目:简易电子琴制作 学 院:信息工程学院 年 级:2009 级 完成时间 :2012年2月27日 目录 1、课程设计目的 3 2、课程设计要求 3 2.1、基础部分 3 2.2、发挥部分 3 3、设计(课程)基本内容 4 3.1、eda技术/vhd语言 4 4、电子琴设计原理及过程 5 4.1、设计规划 5 4.2、基础部分原理 5 4.3、简易电子琴的设计流程 5 5、课程设计的程序模块 6 5.1、乐曲演奏模块(ps2scan) 6 5.1.1、模块说明 6 5.1.2、乐曲演奏模块文本程序 7 5.2、音调发生模块 11 5.2.1、模块说明 11 5.2.2、音调发生模块文本程序: 12 5.3、数控分频模块 13 5.3.1、模块说明 13 5.3.2、数控分频模块文本程序 14 5.4、音符存储模块 17 5.4.1、模块说明 17 5.4.2、音符存储模块的源程序 17 6、顶层模块设计 19 6.1、模块说明 19 6.2、顶层模块文本程序 20 6.3、综合设计原理图(完善) 22 7、系统程序仿真和编译 22 7.1、程序编译 22 7.1.1、编译过程 22 8、设计中遇到问题以及设计小结 25 8.1、 遇到的问题(分析) 25 8.2、设计小结(总结) 26 1、课程设计目的 1) 利用数控分频器设计一个电子琴硬件电路和音乐发生器,设计达到演奏时可以选择 是手演奏(键盘输入),或自动演奏已存入的乐曲,并且能自动演奏。 2) 巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立 工作能力,通过对一个简易的14音符电子琴的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。为了进一步了解计算机组成原理与系统结构,深入学习EDA技术,用VHDL语言去控制将会使我们对本专业知识可以更好地掌握。 3) 提高学生对eda软件实践操作能力和工程设计能力,对eda技术和fpga应用的相关 知识进行了系统的介绍,内容包括eda技术的基本知识,fpga的基本原理,quartus ii的使用方法与使用技巧,主流硬件描述语言vhdl的语法规则介绍及实例说明,常用的控制或通信功能模块的设计方法实例,以及采用vhdl语言描述的fpga综合实例。 2、课程设计要求 2.1、基础部分 1) 当键盘输入123456789abcde 是对应响应的频率 2) 演奏时在8段数码管显示对应音符 2.2、发挥部分 3) 具有存储功能存储20个音符 4) 当键盘上某一个键(如v)时,自动重放存储区音符 3、设计(课程)基本内容 内容包括eda技术的基本知识,fpga的基本原理,quartus ii的使用方法与使用技巧,主流硬件描述语言vhdl的语法规则介绍及实例说明,常用的控制或通信功能模块的设计方法实例,以及采用vhdl语言描述的fpga综合实例设计。本书由浅入深,从易到难,既让初学者轻松入门,又让有经验的设计者得到有价值的参考信息。 3.1、eda技术/vhd语言 随着基于cpld的eda技术的发展和应用领域的扩大与深入,eda技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。 此次设计主要是基于vhdl文本输入法设计乐曲演奏电路,运用vhdl语言对简易电子琴的各个模块进行设计,并使用eda 工具对各模块进行仿真验证。该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响或者自动演奏已存入的歌曲。系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。系统实现是用硬件描述语言vhdl按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲(当然由于条件限制,暂不进行功能验证,只进行编程和时序仿真)。该设计最重要的一点就是通过按键控制不同的音调发生,每一个音调对应不同的频率,从而输出对应频率的声音。 4、电子琴设计原理及过程 4.1、设计规划 根据系统设计要求,系统设计采用自顶向下的设计方法,它由乐曲自动演奏模块、音调发生模块和数控分频模块,存储模块四部分组成 4.2、基础部分原理 本课程设计目的在于灵活运用eda技术编程实现一个简易电子琴的乐曲演奏,它要求在实验箱上构造一个电子琴电路,不同的音阶对应不同频率的正弦波。按下每个代表不同音阶的按键时,能够发出相对应频率的声音。故系统可分为乐曲自动演奏模块(ps2scan)、音调发生模块(tonetaba)和数控分频模块(speakera)三部分。 4.3、简易电子琴的设计流程 根据系统设计要求,系统该系统基于计算机中时钟分频器的原理,设计采用自顶向下的设计方法,通过按键输入来控制音响或者自动演奏已存入的歌曲。它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。 用vhdl语言设计电路的流程: 1. 使用文本编辑器输入设计源文件。 2. 使用编译工具编译源文件:vhdl的编译语言。 3. 功能仿真。 4. 综合。综合的目的是在于将设计的源文件由语言转换为实际的电路。这一部分 最终目的是生成门电路级的网表(netlist)。 5. 框图布局、布线。这一步的目的是生成用于编程文件。先将各个设计中的门根据 网表的内容和器件的结构放在器件的特定部位。然后,在根据网表中提供的各门的连接,把各个门的输入输出连接起来。 6. 编译完成,下载。 5、课程设计的程序模块 5.1、乐曲演奏模块(ps2scan) 5.1.1、模块说明 乐曲自动演奏模块的作用是产生14位发生控制输入信号。当进行自动演奏时,由存储在此模块的8位二进制数作为发声控制输入,从而自动演奏乐曲。 该模块的vhdl源程序主要由3个 process(clk)工作进程组成, 第一个 process(clk)的作用是根据键盘输入(自动演奏)的值(0或1)来判断计数器count以及脉冲clk的输出值。 部分源程序如下: process(clk) --工作进程开始 begin if clk'event and clk = '1' then —时钟输入信号为1 kbclkreg <= kbclk; kbclkfall <= kbclkreg and (not kbclk); end if; end process; 当确定了时钟信号输出的值后,在第二个process中就可以由它控制14位发声控制输入信号了。即disp的值为时,count为1。最后的process(clk)便是由前两个process所确定的count、kbclk和键盘输入信号值kbdata将8位的二进制数转化为音符信号的输出,达到自动演奏的目的。 部分源程序如下: process(clk) begin if clk'event and clk = '1' then case kbcodereg is--由计数器从0到15的取值判断音符信号的8位二进制数 when "00001011"=>disp<="0001"; when "10001111"=>disp<="0010"; …… 该模块最主要的用途就是将输入二进制数转化为发声控制输入,是产生音符的重要步骤, ps2scan模块的源程序符号编辑图如图 图5-1-1:ps2scan模块的符号编辑 在此程序中自动模块输出的音符数据,经过翻译后将输出到数控分频模块为其提供分频系数的初始值, 5.1.2、乐曲演奏模块文本程序 --程序名称:ps2scan.vhd --程序功能:采用vhdl语言编程产生14位发声控制输入信号 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity ps2scan is port ( clk,kbclk,kbdata:in std_logic; -系统时钟信号/键盘输入演奏信号 /键盘输入信号 disp : out std_logic_vector(3 downto 0); --音符显示信号(时钟输出) auto : out std_logic -- --音频信号(键盘输入信号) end entity; architecture rtl of ps2scan is signal kbclkreg, kbclkfall : std_logic; signal datacoming : std_logic:='0'; signal cnt : integer range 0 to 9; signal shiftdata,kbcodereg : std_logic_vector(7 downto 0);- --输入8位控制信号 signal delay:std_logic:='0'; signal count: integer range 0 to 10000; --定义信号计数器, 10000个信号元素 begin process(clk) --工作进程开始 begin if clk'event and clk = '1' then kbclkreg <= kbclk; kbclkfall <= kbclkreg and (not kbclk); end if; end process; process(clk) begin if clk'event and clk = '1' then--键盘输入为1 if kbclkfall = '1' and datacoming = '0' and kbdata = '0' then datacoming <= '1'; cnt <= 0; elsif kbclkfall = '1' and datacoming = '1' then if cnt = 9 then if kbdata = '1' then datacoming <= '0'; end if; cnt <= 0; kbcodereg<=shiftdata; else shiftdata <= kbdata & shiftdata(7 downto 1); cnt <= cnt + 1; end if; end if; end if; end process; process(clk) begin if clk'event and clk = '1' then case kbcodereg is--由计数器从0到15的取值判断音符信号的8位二进制数 when "00001011"=>disp<="0001"; when "10001111"=>disp<="0010"; when "00010011"=>disp<="0011"; when "00010010"=>disp<="0100"; when "10010111"=>disp<="0101"; when "10011011"=>disp<="0110"; when "00011110"=>disp<="0111"; when "00011111"=>disp<="1000"; when "00100011"=>disp<="1001"; when "00001010"=>disp<="1010"; when "10001110"=>disp<="1011"; when "10010010"=>disp<="1100"; when "10010110"=>disp<="1101"; when "00010110"=>disp<="1110"; when "10011010"=>disp<="1111"; when others=>disp<="0000"; end case; end if; end process; process(clk) begin if clk'event and clk = '1' then case kbcodereg is when "00001011"=>delay<='1'; when "10001111"=>delay<='1'; when "00010011"=>delay<='1'; when "00010010"=>delay<='1'; when "10010111"=>delay<='1'; when "10011011"=>delay<='1'; when "00011110"=>delay<='1'; when "00011111"=>delay<='1'; when "00100011"=>delay<='1'; when "00001110"=>delay<='1'; when "00011001"=>delay<='1'; when "10010000"=>delay<='1'; when "00010001"=>delay<='1'; when "10010010"=>delay<='1'; when "10011010"=>delay<='0'; when others=>delay<='0'; end case; end if; if clk'event and clk = '1' then count <= count + 1; else null; end if; if count=1000 and delay='1' then count<=0; auto<='1'; else if count = 1000 and delay='0' then count<=0; auto<='0'; end if; end if; end process; end rtl; 5.2、音调发生模块 5.2.1、模块说明 音调发生模块的作用是产生音阶的分频预置值。当14位发声控制输入信号中的某一位为高电平时,则对应某一音阶的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此得到每个音阶对应的频率,根据频率的不同,从而能通过喇叭听到不同的声音,实现音乐的播放。 该模块的唯一输入信号index对应就是自动模块中最后的输出,音符显示信号,高低音显示信号high和音符分频系数都是根据音符输入确定的。比如我们自定义index第2位为高电平时,它的分频系数则为773hz,音符显示信号为:when "0001" => tone<="01100000101" ; --code<="0001"; -- 773;即是773的二进制表示,此时高低音显示1表示高音。 部分源程序如下: process(index) begin case index is -- 译码电路,查表方式,控制音调的预置数 when "0000" => tone<="11111111111" ; --code<="0000"; -- 2047 when "0001" => tone<="01100000101" ; --code<="0001"; -- 773; when "0010" => tone<="01110010000" ; --code<="0010"; -- 912; 该模块最主要的作用就是给音符输入预设频率值,因为,电子琴最终实现乐曲演奏就是输出不同频率的正弦波,此模块就是将二进制发声信号转化为对应的频率。 该模块的源程序符号编辑图如图: 图5-2-2:tonrtaba模块的符号编辑图 5.2.2、音调发生模块文本程序: --程序名称:tonetaba.vhd --程序功能:采用vhdl语言编程产生音阶的分频预置值 library ieee; use ieee.std_logic_1164.all; entity tonetaba is port ( index : in std_logic_vector (3 downto 0) ; --音符输入信号 tone : out std_logic_vector (10 downto 0) ); --音符显示信号 end; architecture one of tonetaba is begin process(index) begin case index is -- --此进程完成音符到音符的分频系数译码,音符的显示,高低音阶 when "0000" => tone<="11111111111" ; --code<="0000"; -- 2047 when "0001" => tone<="01100000101" ; --code<="0001"; -- 773; when "0010" => tone<="01110010000" ; --code<="0010"; -- 912; when "0011" => tone<="10000001100" ; --code<="0011"; --1036; when "0100" => tone<="10001011100" ; --code<="0101"; --1197;1116 when "0101" => tone<="10010101101" ; --code<="0110"; --1290;1197 when "0110" => tone<="10100001010" ; --code<="0111"; --1372;1290 when "0111" => tone<="10101011100" ; --code<="0001"; --1410;1372 when "1000" => tone<="10110000010" ; --code<="0010"; --1480;1410 when "1001" => tone<="10111001000" ; --code<="0011"; --1542;1480 when "1010" => tone<="11000000110" ; --code<="0101"; --1622;1542 when "1011" => tone<="11000110110" ; --code<="0110"; --1668;1590 when "1100" => tone<="11001010110" ; --code<="0001"; --1728;1622 when "1101" => tone<="11010000100" ; --code<="0110"; --1275;1668 when "1110" => tone<="11010011100" ; --code<="0001"; --1136;1692 when others => null; end case; end process; end 5.3、数控分频模块 5.3.1、模块说明 数控分频模块是对时基脉冲进行分频,得到与1、2、3、4、5、6、7、8、9、a、b、c、d、e 这14个音符相对应的频率。speakera模块的源程序符号编辑图如图。 图5-3-1:speakera模块的符号编辑图 该模块主要由3个工作进程(divideclk,genspks,delayspks)组成。首先,根据系统时钟信号的输入得到时基脉冲以及计数器的值,而时钟信号在auto模块中便已给出,两者之间的设置关系类似于auto模块中第一个工作进程的设置。第二个process是此模块的核心,即由时基脉冲值转化为音符的频率。 部分源程序如下: genspks : process(preclk, tone)-- 11位可预置计数器 variable count11 : std_logic_vector (10 downto 0); 最后一个process则是用来设置扬声器输出信号的,扬声器信号由0和1控制,当且仅当前一个process中的fullspks输出为1时,扬声器才有输出,再根据计数器取值来确定输出是1还是0。 部分源程序如下: if fullspks'event and fullspks = '1' then count2 := not count2; --扬声器音频信号为1 if count2 = '1' then spks <= '1'; --扬声器输出为1 else spks <= '0'; end if; 5.3.2、数控分频模块文本程序 --程序名称:speakera.vhd --程序功能:采用vhdl语言编程实现发生器的数控分频 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity speakera is port ( clk : in std_logic; --系统时钟信号 tone : in std_logic_vector (10 downto 0); --音符分频系数 spks : out std_logic ); --驱动扬声器的音频信号 end; architecture one of speakera is --定义时基脉冲信号 signal preclk, fullspks : std_logic; begin divideclk : process(clk) variable count4 : std_logic_vector (3 downto 0); begin preclk <= '0'; --- 将clk进行16分频,preclk为clk的16分频 if count4>11 then preclk <= '1'; count4 := "0000"; elsif clk'event and clk = '1' then count4 := count4 + 1; --时钟信号为1时 --判断计数器取值为1 end if; end process; genspks : process(preclk, tone) --此进程按照tone1输入的分频系数对8mhz的脉冲再次分频,得到所需要的音符频率 variable count11 : std_logic_vector (10 downto 0); begin if preclk'event and preclk = '1' then if count11 = 16#7ff# then count11 := tone ; fullspks <= '1'; --若计数器11值小于音符信号1,计数器加1,音频信号为1 else count11 := count11 + 1; fullspks <= '0'; end if; end if; end process; --音频信号输出进程开始 delayspks : process(fullspks) -- 此进程对fullspks进行2分频,展宽脉冲,使扬声器有足够功率发音 variable count2 : std_logic; --定义变量频率计数器2 begin if fullspks'event and fullspks = '1' then count2 := not count2; --扬声器音频信号为1 if count2 = '1' then spks <= '1'; --扬声器输出为1 else spks <= '0'; end if; end if; end process; end; 以上三个模块组装的 整体组装设计原理图如图5-3所示。 图5-3 基础发音系统的整体组装设计原理图 由于设计分模块组成,每个单独的模块都是一个完整的源程序,分别实现不同性质的功能,但是每个模块又是紧密关联的,前一个模块的输出很可能是后一模块的输入。如ps2scan模块的音符信号输出就是tonetaba模块的音符信号输入。另外,时钟脉冲信号在本课程设计中用的最多,用处也最大,一般情况下时钟信号处上升沿有效,判断和控制各个计数器计数多少。(此框图编译完成的功能为:当按下一个键时,有相应的乐音发出,同时用指示灯显示乐音,用数码管显示音符)。 5.4、音符存储模块 5.4.1、模块说明 此模块将根据自己编制的音符顺序存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。 5.4.2、音符存储模块的源程序 --程序名称:save.vhd --程序功能:采用vhdl语言编写,参与主程序调用3个子程序,实现音符存储演奏的功能 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity save is port ( inter,clks:in std_logic; input: in std_logic_vector(3 downto 0); disp: out std_logic_vector(3 downto 0) -- led : out std_logic_vector(3 downto 0) ); end entity; architecture rtl of save is type ram_array is array (0 to 30) of std_logic_vector(3 downto 0); signal a: ram_array;-- signal i : integer range 0 to 30; signal b : integer range 0 to 30; -- signal cnt : integer range 0 to 9; signal count: integer range 0 to 3; --计数器宽度 -- variable result : inter:='1';--变量赋初值 begin process(inter) begin if inter'event and inter = '1' then i<=i+1; if i=20 then i<=0; end if; end if; end process; --以上程序类似于中断响应,即来一次数据便存一次,数组进入下一个 process(inter) begin if input=x"f" then --数据回放 disp<=a(b); if clks'event and clks = '1' then count <= count + 1; --计数器来做延时,时钟为8hz if count=3 then count<=0; b<=b+1; if b=20 then b<=0; end if; end if; end if; else a(i)<=input; disp<=a(i); ----数据通过数组存储 end if; -- disp<=a(i); end process; end rtl; 6、顶层模块设计 6.1、模块说明 该music_ram模块是整个电子琴设计的核心,也是vhdl程序的主程序,前面3个源程序都是作为子程序分别实现电子琴的某一功能,而music_ram模块则通过调用子程序最终实现乐曲演奏的目的,奏出美妙的乐曲。利用vhdl语言component将三个模块组合起来,其中3个模块和music_ram模块的输入输出是一一对应的,比如disp对应musicin,auto对应auto,musicout对应index等,该模块的符号编辑图如图3-4。 图:6-1:music_ram系统模块的符号编辑图 该图描述的是music_ram模块输入输出的变量表示,整个系统的整体组装设计原理图就是这4幅编辑图按输入输出关系顺序连接而成的。 6.2、顶层模块文本程序 --程序名称:music_ram.vhd --程序功能:采用vhdl语言编写主程序调用3个子程序,实现乐曲演奏(存/放)的功能。 library ieee;-- use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity music_ram is port (musicin:in std_logic_vector(3 downto 0); --系统时钟信号 auto,clk :in std_logic; --auto='1':read ,'0'=write --键盘输入/自动演奏信号 musicout: out std_logic_vector(3 downto 0) ----音符显示信号 ); end music_ram; architecture behavioral of music_ram is --subtype word is std_logic_vector(3 downto 0); type memory is array (20 downto 0) of std_logic_vector(3 downto 0); signal musram : memory; -- signal addr: integer range 0 to 20; --存储20 个音符 signal ptr: integer range 0 to 20;-- signal count: integer range 0 to 3;--计数范围0到3 begin process(auto) --------引入 kbclk元件 begin if auto'event and auto='1' then --键盘输入为1 ptr<=ptr+1; --计数器值为1,时钟信号幅值为1 if ptr=20 then ptr<=0; end if; end if; end process; --auto is a flag of signal process (clk,musicin) begin if musicin="1111" then ---如果输入字母f,--调用存储的音符自动演奏 musicout<=musram(addr); if clk'event and clk = '1' then --时钟信号为1 count <= count + 1; --计数器来做延时,时钟为8hz if count=3 then count<=0; addr<=addr+1; if addr=20 then addr<=0; end if; end if; end if; else musram(ptr)<=musicin; musicout<=musram(ptr); end if; end process; end behavioral; 6.3、综合设计原理图(完善) 将tonetaba,speakera,music_ram,和ps2scan四个模块连接在一起形成完整的电子琴发音系统,将绘制好的原理图保存,确保无误后运行进行引脚搭配,编译,和下载。 图6-3:系统的整体组装设计原理图 7、系统程序仿真和编译 系统仿真是在实际系统上进行实验研究比较困难时适用的必不可少的工具,它是指通过系统模型实验展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




简易电子琴课程设计QUARTUS制作.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/3680847.html