基于verilog的音樂盒設計_第1頁
基于verilog的音樂盒設計_第2頁
基于verilog的音樂盒設計_第3頁
基于verilog的音樂盒設計_第4頁
基于verilog的音樂盒設計_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、EDA設計基礎實驗課程論文題 目 基于verilog的音樂盒設計 學 院 通信學院 專業班級 通信111 學生姓名 大彬哥 指導教師 2013年 6月 22日摘 要使用Verilog HDL設計樂曲演奏電路,系統實現是用硬件描述語言Verilog HDL按分頻控制的方式進行設計,然后進行編程、時序仿真、電路功能驗證,奏出美妙的樂曲。通過控制輸出到蜂鳴器的激勵信號頻率的高低和持續的時間,從而使揚聲器發出連續的樂曲聲,且當樂曲演奏完成時,保證能自動從頭開始演奏。關鍵詞:Verilog HDL; 蜂鳴器; 時序仿真AbstractUsing Verilog HDL music playing cir

2、cuit design, system implementation is to use Verilog hardware description language HDL design according to control by means of frequency division, then carries on the programming, sequential simulation, circuit function verification, play the wonderful music. By controlling the output to the speaker

3、 of the discretion of the excitation signal frequency and duration, which makes the speaker sends out the continuous music, and when the music playing is complete, ensure that can automatically play from the very beginning.Keywords: Verilog HDL ; Ensure ; Sequential simulation目 錄摘 要IAbstractII目 錄III

4、第1章 緒論11.課程設計目的:12.課程設計要求:13.該方案可以實現的功能:1第2章 應用工具介紹22.1 EDA技術介紹22.2 Verilog HDL語言介紹2第3章 基本原理43.1音調的控制43.2音長的控制5第4章 方案實現7第5章 方案測試20第6章 引腳鎖定23第7章 引腳鎖定后下載程序24參考文獻25第1章 緒論1.課程設計目的:1)加深對EDA技術的理解,掌握樂曲演奏電路的工作原理2)了解怎樣控制音調的高低變化和音長,從而完成樂曲的自動循環演奏。3)培養自主學習、正確分析和解決問題的能力 2.課程設計要求:1)使用Verilog HDL設計樂曲演奏電路,系統實現是用硬件描

5、述語言Verilog HDL按分頻控制的方式進行設計,然后進行編程、時序仿真、電路功能驗證,奏出美妙的樂曲。2) 通過控制輸出到揚聲器的激勵信號頻率的高低和持續的時間,從而使揚聲器發出連續的樂曲聲,且當樂曲演奏完成時,保證能自動從頭開始演奏。3.該方案可以實現的功能:1)通過蜂鳴器播放音樂;2)通過一個開關實現兩首樂曲的切換;3)在音樂播放的同時,會有led流水燈的閃爍.第2章 應用工具介紹作為當今最流行的計算機軟件系統,EDA技術是以計算機為工作平臺,融合了應用電子技術、計算機技術、信息處理及智能化技術的最新成果,進行電子產品的自動設計。EDA可提供文本輸入以及圖形編輯的方法將設計者的意圖用

6、程序或者圖形方式表達出來,而我們經常用到的VHDL語言便是用于編寫源程序所需的最常見的硬件描述語言(HDL)之一。2.1 EDA技術介紹EDA是電子設計自動化(Electronic Design Automation)的縮寫,在20世紀90年代初從計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發展而來。EDA技術是在電子CAD技術基礎上發展起來的計算機軟件系統,是指以計算機為工作平臺,融合了應用電子技術、計算機技術、信息處理及智能化技術的最新成果,進行電子產品的自動設計1。EDA技術就是以計算機為工具,設計者在EDA軟件平臺上,用硬

7、件描述語言HDL完成設計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優化、布局、布線和仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。典型的EDA工具中必須包含兩個特殊的軟件包,即綜合器和適配器。綜合器的功能就是將設計者在EDA平臺上完成的針對某個系統項目的HDL、原理圖或狀態圖形描述,針對給定的硬件系統組件,進行編譯、優化、轉換和綜合,最終獲得我們欲實現功能的描述文件。綜合器在工作前,必須給定所要實現的硬件結構參數,它的功能就是將軟件描述與給定的硬件結構用一定的方式聯系起來。也就是說,綜合器是軟件描述與硬件實現的一座橋梁。綜合過程就是將電路的高級語言描述轉換低級的

8、、可與目標器件FPGA/CPLD相映射的網表文件。 在今天,EDA技術已經成為電子設計的普遍工具,無論設計芯片還是設計系統,沒有EDA工具的支持,都是難以完成的。EDA工具已經成為設計師必不可少的武器,起著越來越重要的作用。從目前的EDA技術來看,其發展趨勢是政府重視、使用普及、應用廣泛、工具多樣、軟件功能強大。EDA技術發展迅猛,完全可以用日新月異來描述。EDA技術的應用廣泛,現在已涉及到各行各業。EDA水平不斷提高,設計工具趨于完美的地步。2.2 Verilog HDL語言介紹Verilog HDL是一種硬件描述語言,用于從算法級、門級到開關級的多種抽象設計層次的數字系統建模。被建模的數字

9、系統對象的復雜性可以介于簡單的門和完整的電子數字系統之間。數字系統能夠按層次描述,并可在相同描述中顯式地進行時序建模2。作為一種通用化的硬件描述語言,Verilog HDL語言具有下述描述能力:設計的行為特性、設計的數據流特性、設計的結構組成以及包含響應監控和設計驗證方面的時延和波形產生機制。所有這些都使用同一種建模語言。此外,Verilog HDL語言提供了編程語言接口,通過該接口可以在模擬、驗證期間從設計外部訪問設計,包括模擬的具體控制和運行3。Verilog HDL語言不僅定義了語法,而且對每個語法結構都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用Verilog仿真器進

10、行驗證。語言從C編程語言中繼承了多種操作符和結構。Verilog HDL提供了擴展的建模能力,其中許多擴展最初很難理解。但是,Verilog HDL語言的核心子集非常易于學習和使用,這對大多數建模應用來說已經足夠。當然,完整的硬件描述語句足以對從最復雜的芯片到完整的電子系統進行描述。Verilog HDL語言已經成為一種標準的硬件描述語言。它具有以下特點:(1)作為一種多用途的硬件描述語言,它具有很好的易學性和易用性。(2)Verilog HDL語言允許在同一個模塊中進行不同抽象層次的描述。(3)大多數邏輯綜合工具都支持Verilog HDL,使得它成為設計人員的一個很好的選擇。(4)所有的制

11、造廠商都提供了Verilog HDL的工藝庫,用以支持仿真。(5)Verilog HDL的程序語言接口擁有強大的功能,允許用戶用C語言對內部數據結構進行描述3。正是以上優點,使得Verilog HDL語言廣泛流行。下面是verilog的設計流程第3章 基本原理樂曲演奏的原理是這樣的:組成樂曲的每個音符的頻率值(音調)及其持續的時間(音長)是樂曲能連續演奏所需的兩個基本數據,因此只要控制輸出到揚聲器的激勵信號頻率的高低和持續的時間,就可以使揚聲器發出連續的樂曲聲4。3.1音調的控制頻率的高低決定了音調的高低。音樂的十二平均率規定:每兩個8度音(如簡譜中的中音1與高音1)之間的頻率相差一倍。在兩個

12、8度音之間,又可分為12個半音,每兩個半音的頻率比為122。 另外,音名A(簡譜中的低音6)的頻率為440Hz,音名B到C之間、E到F之間為半音,其余為全音4。由此可以計算出簡譜中從低音1至高音1之間每個音名對應的頻率,如表3.11所示:表3.11 簡譜中的音名與頻率的關系音名頻率/Hz音名頻率/Hz音名頻率/Hz低音1261.6中音1523.3高音11046.5低音2293.7中音2587.3高音21174.7低音3329.6中音3659.3高音31318.5低音4349.2中音4698.5高音41396.9低音5392中音5784高音51568低音6440中音6880高音6176

13、0低音7493.9中音7987.8高音71975.5所有不同頻率的信號都是從同一個基準頻率分頻得到的。由于音階頻率多為非整數,而分頻系數又不能為小數,故必須將計算得到的分頻數四舍五入取整。若基準頻率過低,則由于分頻比太小,四舍五入取整后的誤差較大;若基準頻率過高,雖然誤差變小,但分頻數將變大。實際的設計綜合考慮這兩方面的因素,在盡量減小頻率誤差的前提下取合適的基準頻率4。本例中選取6MHz為基準頻率。若無6MHz的基準頻率,則可以先分頻得到6MHz,或換一個新的基準頻率。實際上,只要各個音名間的相對頻率關系不變,演奏出的樂曲聽起來都不會"走調"。本例需要演奏的是梁祝樂曲,該

14、樂曲各音階頻率及相應的分頻比如表2所示。為了減小輸出的偶次諧波分量,最后輸出到揚聲器的波形應為對稱方波,因此在到達揚聲器之前,有一個二分頻的分頻器。表2中的分頻比就是從6MHz頻率二分頻得到的3MHz頻率基礎上計算得出的。由于最大的分頻系數為9102,故采用14位二進制計數器分頻可滿足需要。在表2中,除給出了分頻比以外,還給出了對應于各個音階頻率時計數器不同的預置數。對于不同的分頻系數,只要加載不同的預置數即可。采用加載預置數實現分頻的方法比采用反饋復零法節省資源,實現起來也容易一些,如表3.12所示:表3.12 各音階頻率對應的分頻比及預置數音名分頻比預置數音名分頻比預置數低音3910272

15、81中音2511111272低音576538730中音3455211831低音668189565中音5382712556低音7607310310中音6340912974中音1573610647高音1286713516此外,對于樂曲中的休止符,只要將分頻系數設為0,即初始值為2141=16383即可,此時揚聲器將不會發聲。3.2音長的控制音符的持續時間必須根據樂曲的速度及每個音符的節拍數來確定。本例演奏的梁祝片段,最短的音符為4分音符,如果將全音符的持續時間設為1s的話,則只需要再提供一個4Hz的時鐘頻率即可產生4分音符的時長4。樂譜產生電路用來控制音樂的音調和音長。控制音調通過設置計數器的預置

16、數來實現,預置不同的數值可以使計數器產生不同頻率的信號,從而產生不同的音調。控制音長是通過控制計數器預置數的停留時間來實現的,預置數停留的時間越長,則該音符演奏的時間越長。每個音符的演奏時間都是0.25s的整數倍,對于節拍較長的音符,如2分音符,在記譜時將該音名連續記錄兩次即可。音名顯示電路用來顯示樂曲演奏時對應的音符。可以用3個數碼管,分別顯示高、中、低音的音名,實現演奏的動態顯示,十分直觀。在本例中,high3:0、med3:0、low3:0等信號分別用于顯示高音、中音、低音音符。為了使演奏能循環進行,需另外設置一個時長計數器,當樂曲演奏完成時,保證能自動從頭開始演奏。第4章 方案實現由系

17、統框圖可以看到本方案分成8個模塊。1)48MHz分頻成12MHz波形分頻器,源代碼和頂層模塊如下/48mhz分成12mhz的分頻模塊module div_clk12mhz(clk_48mhz,clk_12mhz);input clk_48mhz;output clk_12mhz;reg clk_12mhz;reg 21:0 cnt;always (posedge clk_48mhz)if(cnt<1) cnt=cnt+1; / (48mhz/12mhz=4,cnt<4/2-1=1)else begin cnt=0; clk_12mhz =!clk_12mhz; endendmodu

18、le2)12MHz分頻成6MHz波形分頻器,源代碼和頂層模塊如下:/12mhz分成6mhz的分頻模塊,提供給song模塊module div_clk6mhz(clk_12mhz,clk_6mhz);input clk_12mhz;output clk_6mhz;reg clk_6mhz;reg cnt;always (posedge clk_12mhz)clk_6mhz=!clk_6mhz; endmodule 3)12MHz分頻成4Hz波形分頻器,源代碼和頂層模塊如下:/12mhz分成4hz的分頻模塊,提供給song模塊module div_clk4hz(clk_12mhz,clk_4hz)

19、;input clk_12mhz;output clk_4hz;reg clk_4hz;reg 21:0 cnt;always (posedge clk_12mhz)if(cnt<1499999) cnt=cnt+1; / (12mhz/4hz=3000000,cnt<3000000/2-1=1499999)else begin cnt=0; clk_4hz =! clk_4hz; endendmodule 4)12MHz分頻成1mhz波形分頻器,源代碼和頂層模塊如下:/12mhz分成1mhz的分頻模塊,提供給quma模塊module div_clk1mhz(clk_12mhz,c

20、lk_1mhz);input clk_12mhz;output clk_1mhz;reg clk_1mhz;reg 21:0 cnt;always (posedge clk_12mhz)if(cnt<5) cnt=cnt+1; / (12mhz/1mhz=12,cnt<12/2-1=5)else begin cnt=0; clk_1mhz =! clk_1mhz; endendmodule5)12MHz分頻成1khz波形分頻器,源代碼和頂層模塊如下:/12mhz分成1khz的分頻模塊,提供給quma模塊module div_clk1khz(clk_12mhz,clk_1khz);i

21、nput clk_12mhz;output clk_1khz;reg clk_1khz;reg 21:0 cnt;always (posedge clk_12mhz)if(cnt<5999) cnt=cnt+1; / (12mhz/1khz=12000,cnt<12000/2-1=5999)else begin cnt=0; clk_1khz =! clk_1khz; endendmodule6) song模塊源代碼和頂層模塊如下:/音樂產生模塊module song(clk_6mhz,clk_4hz,speaker,high,med,low,k); /模塊名為song(端口列表)

22、input clk_6mhz,clk_4hz; input k; /定義兩個輸入端口output speaker; /定義一個輸出端口output3:0 high,med,low; reg3:0 high,med,low; /定義了3個4位寄存器reg13:0 divider,origin; /定義了2個14位寄存器reg9:0 counter; /定義了1個10位寄存器reg speaker; wire carry;assign carry=(divider=16383); /連續賦值語句always (posedge clk_6mhz) begin if(carry) divider<

23、;=origin; else divider<=divider+1; endalways (posedge carry) begin speaker<=speaker;end /二分頻產生方波信號always (posedge clk_4hz) begin case(high,med,low) /分頻比預置 'b000000000011:origin<=7281; /低音3 'b000000000101:origin<=8730; /低音5 'b000000000110:origin<=9565; /低音6 'b0000000001

24、11:origin<=10310; /低音7 'b000000010000:origin<=10647; /中音1 'b000000100000:origin<=11272; /中音2 'b000000110000:origin<=11831; /中音3 'b000001010000:origin<=12556; /中音5 'b000001100000:origin<=12974; /中音6 'b000001110000:origin<=13347; /中音7 'b000100000000:ori

25、gin<=13516; /高音1 'b000000000000:origin<=16383; /休止符endcase endalways (posedge clk_4hz) if (k=0) begin if(counter=149) counter<=0; /計時,以實現循環演奏 else counter<=counter+1; case(counter) /記譜 0: high,med,low<='b000000000011; /低音"3" 1: high,med,low<='b000000000011; /持

26、續4個時鐘節拍 2: high,med,low<='b000000000011; 3: high,med,low<='b000000000011; 4: high,med,low<='b000000000101; /低音"5" 5: high,med,low<='b000000000101; /發3個時鐘節拍 6: high,med,low<='b000000000101; 7: high,med,low<='b000000000110; /低音"6" 8: high,m

27、ed,low<='b000000010000; /中音"1" 9: high,med,low<='b000000010000; /發3個時鐘節拍 10: high,med,low<='b000000010000; 11: high,med,low<='b000000100000; /中音"2" 12: high,med,low<='b000000000110; /低音"6" 13: high,med,low<='b000000010000; /中音&q

28、uot;1" 14: high,med,low<='b000000000101; /低音"5" 15: high,med,low<='b000000000101; 16: high,med,low<='b000001010000; /中音"5" 17: high,med,low<='b000001010000; /發3個時鐘節拍 18: high,med,low<='b000001010000; 19: high,med,low<='b000100000000;

29、 /高音"1" 20: high,med,low<='b000001100000; /中音"6" 21: high,med,low<='b000001010000; /中音"5" 22: high,med,low<='b000000110000; /中音"3" 23: high,med,low<='b000001010000; /中音"5" 24: high,med,low<='b000000100000; /中音"

30、2" 25: high,med,low<='b000000100000; /持續11個時鐘節拍 26: high,med,low<='b000000100000; 27: high,med,low<='b000000100000; 28: high,med,low<='b000000100000; 29: high,med,low<='b000000100000; 30: high,med,low<='b000000100000; 31: high,med,low<='b00000010

31、0000; 32: high,med,low<='b000000100000; 33: high,med,low<='b000000100000; 34: high,med,low<='b000000100000; 35: high,med,low<='b000000110000; /中音"3" 36: high,med,low<='b000000000111; /低音"7" 37: high,med,low<='b000000000111; 38: high,med,l

32、ow<='b000000000110; /低音"6" 39: high,med,low<='b000000000110; 40: high,med,low<='b000000000101; /低音"5" 41: high,med,low<='b000000000101; 42: high,med,low<='b000000000101; 43: high,med,low<='b000000000110; /低音"6" 44: high,med,low&

33、lt;='b000000010000; /中音"1" 45: high,med,low<='b000000010000; 46: high,med,low<='b000000100000; /中音"2" 47: high,med,low<='b000000100000; 48: high,med,low<='b000000000011; /低音"3" 49: high,med,low<='b000000000011; 50: high,med,low<

34、='b000000010000; /中音"1" 51: high,med,low<='b000000010000; 52: high,med,low<='b000000000110; /低音"6" 53: high,med,low<='b000000000101; /低音"5" 54: high,med,low<='b000000000110; /低音"6" 55: high,med,low<='b000000010000; /中音&qu

35、ot;1" 56: high,med,low<='b000000000101; /低音"5" 57: high,med,low<='b000000000101; /持續8個時鐘節拍 58: high,med,low<='b000000000101; 59: high,med,low<='b000000000101; 60: high,med,low<='b000000000101; 61: high,med,low<='b000000000101; 62: high,med,low

36、<='b000000000101; 63: high,med,low<='b000000000101; 64: high,med,low<='b000000110000; /中音"3" 65: high,med,low<='b000000110000; /發3個時鐘節拍 66: high,med,low<='b000000110000; 67: high,med,low<='b000001010000; /中音"5" 68: high,med,low<='b

37、000000000111; /低音"7" 69: high,med,low<='b000000000111; 70: high,med,low<='b000000100000; /中音"2" 71: high,med,low<='b000000100000; 72: high,med,low<='b000000000110; /低音"6" 73: high,med,low<='b000000010000; /中音"1" 74: high,med,

38、low<='b000000000101; /低音"5" 75: high,med,low<='b000000000101; /持續4個時鐘節拍 76: high,med,low<='b000000000101; 77: high,med,low<='b000000000101; 78: high,med,low<='b000000000000; /休止符 79: high,med,low<='b000000000000; 80: high,med,low<='b00000000

39、0011; /低音"3" 81: high,med,low<='b000000000101; /低音"5" 82: high,med,low<='b000000000101; 83: high,med,low<='b000000000011; /低音"3" 84: high,med,low<='b000000000101; /低音"5" 85: high,med,low<='b000000000110; /低音"6" 86:

40、high,med,low<='b000000000111; /低音"7" 87: high,med,low<='b000000100000; /中音"2" 88: high,med,low<='b000000000110; /低音"6" 89: high,med,low<='b000000000110; /持續6個時鐘節拍 90: high,med,low<='b000000000110; 91: high,med,low<='b00000000011

41、0; 92: high,med,low<='b000000000110; 93: high,med,low<='b000000000110; 94: high,med,low<='b000000000101; /低音"5" 95: high,med,low<='b000000000110; /低音"6" 96: high,med,low<='b000000010000; /中音"1" 97: high,med,low<='b000000010000;

42、/發3個時鐘節拍 98: high,med,low<='b000000010000; 99: high,med,low<='b000000100000; /中音"2" 100: high,med,low<='b000001010000; /中音"5" 101: high,med,low<='b000001010000; 102: high,med,low<='b000000110000; /中音"3" 103: high,med,low<='b0000

43、00110000; 104: high,med,low<='b000000100000; /中音"2" 105: high,med,low<='b000000100000; 106: high,med,low<='b000000110000; /中音"3" 107: high,med,low<='b000000100000; /中音"2" 108: high,med,low<='b000000010000; /中音"1" 109: high,me

44、d,low<='b000000010000; 110: high,med,low<='b000000000110; /低音"6" 111: high,med,low<='b000000000101; /低音"5" 112: high,med,low<='b000000000011; /低音"3" 113: high,med,low<='b000000000011; /持續4個時鐘節拍 114: high,med,low<='b000000000011;

45、 115: high,med,low<='b000000000011; 116: high,med,low<='b000000010000; /中音"1" 117: high,med,low<='b000000010000; /持續4個時鐘節拍 118: high,med,low<='b000000010000; 119: high,med,low<='b000000010000; 120: high,med,low<='b000000000110; /低音"6" 121

46、: high,med,low<='b000000010000; /中音"1" 122: high,med,low<='b000000000110; /低音"6" 123: high,med,low<='b000000000101; /低音"5" 124: high,med,low<='b000000000011; /低音"3" 125: high,med,low<='b000000000101; /低音"5" 126: hig

47、h,med,low<='b000000000110; /低音"6" 127: high,med,low<='b000000010000; /中音"1" 128: high,med,low<='b000000000101; /低音"5" 129: high,med,low<='b000000000101; /持續6個時鐘節拍 130: high,med,low<='b000000000101; 131: high,med,low<='b000000000

48、101; 132: high,med,low<='b000000000101; 133: high,med,low<='b000000000101; 134: high,med,low<='b000000110000; /中音"3" 135: high,med,low<='b000001010000; /中音"5" 136: high,med,low<='b000000100000; /中音"2" 137: high,med,low<='b000000

49、110000; /中音"3" 138: high,med,low<='b000000100000; /中音"2" 139: high,med,low<='b000000010000; /中音"1" 140: high,med,low<='b000000000111; /低音"7" 141: high,med,low<='b000000000111; 142: high,med,low<='b000000000110; /低音"6&quo

50、t; 143: high,med,low<='b000000000110; 144: high,med,low<='b000000000101; /低音"5" 145: high,med,low<='b000000000101; /持續8個時鐘節拍 146: high,med,low<='b000000000101; 147: high,med,low<='b000000000101; 148: high,med,low<='b000000000101; 149: high,med,low&

51、lt;='b000000000101; endcaseendelse if( k=1)begin if(counter=149) counter<=0; /計時,以實現循環演奏 else counter<=counter+1; case(counter) /記譜 0: high,med,low<='b000000110000; /中音"3" 1: high,med,low<='b000000110000; /持續2個時鐘節拍 2: high,med,low<='b000000100000; /中音2 3: hig

52、h,med,low<='b000000100000; /持續2個時鐘節拍 4: high,med,low<='b000000110000; /中音"3" 5: high,med,low<='b000000110000; /發10個時鐘節拍 6: high,med,low<='b000000110000; 7: high,med,low<='b000000110000; 8: high,med,low<='b000000110000; 9: high,med,low<='b000000110000; 10: high,med,low<='b000000110000; 11: high,med,low<='b000000110000; 12: high,med,low<='b000000110000; 13: high,med,low<='b000000110000; 14: high,med,low<='b000000100000; /中音2 15: high,med,low<='b00000010

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論