基于FPGA任意倍數(shù)分頻器設計_第1頁
基于FPGA任意倍數(shù)分頻器設計_第2頁
基于FPGA任意倍數(shù)分頻器設計_第3頁
基于FPGA任意倍數(shù)分頻器設計_第4頁
基于FPGA任意倍數(shù)分頻器設計_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 目 錄 1 緒論.1 1.1 課題分析.1 1.2 FPGA 概述 .2 1.3 VHDL 語言和 QUARTUS II 簡介.4 語言簡介.4 簡介.6 2 分頻基本原理.8 2.1 等占空比偶數(shù)分頻方法.8 2.2 等占空比的奇數(shù)分頻方法 .8 2.3 分數(shù)分頻方法.9 2.4 小數(shù)分頻方法.9 2.5 任意倍數(shù)分頻器.10 3 任意倍數(shù)分頻器設計.12 3.1 設計思想.12 3.2 頂層框圖設計.13 3.3 頂層文件設計.13 3.4 模塊設計.14 偶數(shù)分頻模塊的設計.14 奇數(shù)分頻模塊的設計.15 半整數(shù)模塊設計.16 占空比可調(diào)的分頻模塊設計.17 小數(shù)分頻模塊設計.18 模

2、塊的設計.19 模塊的設計.20 模塊的設計.21 結(jié)論.23 致謝.24 參考文獻.25 附錄 A VHDL 源程序.26 附錄 A1:偶數(shù)分頻實現(xiàn)的程序.26 附錄 A2 奇數(shù)分頻實現(xiàn)的程序.28 附錄 A3 半整數(shù)分頻實現(xiàn)的程序.30 附錄 A4 占空比可調(diào)的分頻實現(xiàn)的程序 .32 附錄 A5 小數(shù)分頻實現(xiàn)的程序 .34 附錄 A6 ENCODER_35 模塊實現(xiàn)的程序.42 附錄 A7 LED的實現(xiàn)程序.43 附錄 A8 MUX51 模塊的實現(xiàn)程序 .47 附錄 B 頂層文件設計原理圖.48 1 緒論 1.1 課題分析 隨著電子技術(shù)的高速發(fā)展,F(xiàn)PGA/CPLD 以其高速、高可靠性、串

3、并行工作方式等 突出優(yōu)點在電子設計中受到廣泛的應用,而且代表著未來 EDA 設計的方向。 FPGA/CPLD 的設計采用了高級語言,如 VHDL 語言 AHDL 語言等,進一步打破了軟 件與硬件之間的界限,縮短了產(chǎn)品的開發(fā)周期。所以采用先進的 FPGA/CPLD 取代傳 統(tǒng)的標準集成電路、接口電路已成為電子技術(shù)發(fā)展的必然趨勢1。 EDA 技術(shù)代表了當今電子設計技術(shù)的最新發(fā)展方向,采用 EDA 工具,電子設計 師可以從概念、算法、協(xié)議等開始設計電子系統(tǒng),大量工作可以通過計算機完成,并 可以將電子產(chǎn)品從電路設計、性能分析到設計出 IC 版圖或 PCB 版圖的整個過程在計 算機上自動處理完成。由于現(xiàn)

4、代電子產(chǎn)品的復雜度和集成度的日益提高,一般分離的 中小規(guī)模集成電路組合已不能滿足要求,電路設計逐步地從中小規(guī)模芯片轉(zhuǎn)為大規(guī)模、 超大規(guī)模芯片,具有高速度、高集成度、低功耗的可編程朋 IC 器件已蓬勃發(fā)展起來2。 分頻器是數(shù)字系統(tǒng)設計中的一種基本電路,我們往往需要通過分頻器得到我們所 需要的時鐘頻率,在 FPGA 的設計中也是使用頻率非常高的一種基本設計。基于 FPGA 實現(xiàn)的分頻電路一般有兩種方法:一種是使用 FPGA 芯片內(nèi)部提供的鎖相環(huán)電 路進行分頻,如 ALTERA 提供的 PLL(Phase Locked Loop) ,Xilinx 提供的 DLL(Delay Locked Loop)

5、 ;第二種是使用硬件描述語言,如 VHDL、Verilog HDL 等。 使用鎖相環(huán)電路進行分頻有許多的優(yōu)點,例如可以實現(xiàn)倍頻、相位偏移以及占空比可 調(diào)等。但是由于 FPGA 內(nèi)部提供的鎖相環(huán)個數(shù)極為有限,不能滿足使用時的要求。因 此使用硬件描述語言實現(xiàn)分頻電路在數(shù)字電路設計較為常用,因為它消耗不多的邏輯 單元就可以實現(xiàn)對時鐘的操作,具有成本低、可編程等優(yōu)點3。 在數(shù)字系統(tǒng)的設計中,設計人員會遇到各種形式的分頻需求,如整數(shù)、小數(shù)、 分數(shù)分頻等。 在某些數(shù)字系統(tǒng)設計中,系統(tǒng)不僅對頻率有要求,而且對占空比也有著 很嚴格的要求。由計數(shù)器或計數(shù)器的級聯(lián)構(gòu)成各種形式的偶數(shù)分頻及非等占空比的奇 數(shù)分頻實現(xiàn)

6、起來較為簡單,但對半整數(shù)分頻及等占空比的奇數(shù)分頻實現(xiàn)較為困難,小 數(shù)分頻和分數(shù)分頻更困難。 本論文利用 VHDL 硬件描述語言,通過 Quartus7.2 開發(fā)平臺,設計了一種能滿 足偶數(shù)分頻,奇數(shù)分頻,半整數(shù)分頻,占空比可調(diào)的分頻,小數(shù)分頻的任意倍數(shù)分頻 器,并可以通過按鈕來選擇具體由哪一種分頻器進行操作,而撥碼開關則可以預置一 些分頻系數(shù),發(fā)光二極管則顯示具體由那種分頻實現(xiàn),數(shù)碼管顯示分頻的系數(shù)。分頻 系數(shù)設置:偶數(shù)分頻:2,4,6,8,10,12,14 奇數(shù)分頻:1,3,5,7,9,11,13,15 半整數(shù)分頻:1.515.5 占空比可調(diào)的分頻:1:1,1:2,1:3,2:1,2:2,2

7、:3,3:1,3:2,3:3 小數(shù)分頻:1.13.3 1.2 FPGA 概述 FPGA(Field Programmable Gate Array)現(xiàn)場可編程邏輯門陣列,它是在 PAL(Programmable Array Logic) 、GAL(generic array logic)、CPLD(Complex Programmable Logic Device)等可編程器件的基礎上進一步發(fā)展的產(chǎn)物。它是作為專用 集成電路(Application Specific Integrated Circuit)領域中的一種半定制電路而出現(xiàn)的,既 解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有

8、限的缺點。它是當今數(shù) 字系統(tǒng)設計的主要硬件平臺,其主要特點就是完全由用戶通過軟件進行配置和編程, 從而完成某種特定的功能,且可以反復擦寫。在修改和升級時,不需額外地改變 PCB 電路板,只是在計算機上修改和更新程序,使硬件設計工作成為軟件開發(fā)工作,縮短 了系統(tǒng)設計的周期,提高了實現(xiàn)的靈活性并降低了成本 以硬件描述語言(Verilog 或 VHDL)所完成的電路設計,可以經(jīng)過簡單的綜合與 布局,快速的燒錄至 FPGA 上進行測試,是現(xiàn)代 IC 設計驗證的技術(shù)主流。這些可編輯 元件可以被用來實現(xiàn)一些基本的邏輯門電路(比如 AND、OR、XOR、NOT)或者更 復雜一些的組合功能比如解碼器或數(shù)學方程

9、式。在大多數(shù)的 FPGA 里面,這些可編輯 的元件里也包含記憶元件例如觸發(fā)器(Flipflop)或者其他更加完整的記憶塊。 系統(tǒng)設計師可以根據(jù)需要通過可編輯的連接把 FPGA 內(nèi)部的邏輯塊連接起來,就 好像一個電路試驗板被放在了一個芯片里。一個出廠后的成品 FPGA 的邏輯塊和連接 可以按照設計者而改變,所以 FPGA 可以完成所需要的邏輯功能。 FPGA 一般來說比 ASIC(專用集成芯片)的速度要慢,無法完成復雜的設計,但 是功耗較低。但是他們也有很多的優(yōu)點比如可以快速成品,可以被修改來改正程序中 的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的 FPGA。因為這 些芯片有比較

10、差的可編輯能力,所以這些設計的開發(fā)是在普通的 FPGA 上完成的,然 后將設計轉(zhuǎn)移到一個類似于 ASIC 的芯片上。另外一種方法是用 CPLD(復雜可編程邏 輯器件備) 。 FPGA 采用了邏輯單元陣列 LCA(Logic Cell Array)這樣一個概念,內(nèi)部包括 可配置邏輯模塊 CLB(Configurable Logic Block) 、輸出輸入模塊 IOB(Input Output Block)和內(nèi)部連線( Interconnect)三個部分。目前主流的 FPGA 仍是基于 查找表技術(shù)的,已經(jīng)遠遠超出了先前版本的基本性能,并且整合了常用功能(如 RAM、時鐘管理和 DSP)的硬核(A

11、SIC 型)模塊:FPGA 芯片主要由 6 部分完成, 分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時鐘管理、嵌入塊式 RAM、豐富的布線資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專用硬件模塊。FPGA 的基 本特點有: 1、采用 FPGA 設計 ASIC 電路(專用集成電路 ),用戶不需要投片生產(chǎn),就能得到 合用的芯片。 2、FPGA 可做其它全定制或半定制 ASIC 電路的中試樣片。 3、FPGA 內(nèi)部有豐富的觸發(fā)器和 IO 引腳。 4、FPGA 是 ASIC 電路中設計周期最短、開發(fā)費用最低、風險最小的器件之一。 5、FPGA 采用高速 CHMOS 工藝,功耗低,可以與 CMOS、TTL

12、電平兼容。 FPGA 是由存放在片內(nèi) RAM 中的程序來設置其工作狀態(tài)的,因此,工作時需 要對片內(nèi)的 RAM 進行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。 加電時,F(xiàn)PGA 芯片將 EPROM 中數(shù)據(jù)讀入片內(nèi)編程 RAM 中,配置完成后, FPGA 進入工作狀態(tài) 。掉電后,F(xiàn)PGA 恢復成白片,內(nèi)部邏輯關系消失,因此, FPGA 能夠反復使用 。FPGA 的編程無須專用的 FPGA 編程器,只須用通用的 EPROM、PROM 編程器即可。當需要修改 FPGA 功能時,只需換一片 EPROM 即 可。這樣,同一片 FPGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此, FPGA

13、的使用非常靈活 。 早在 1980 年代中期,F(xiàn)PGA 已經(jīng)在 PLD 設備中扎根。 CPLD 和 FPGA 包括了 一些相對大數(shù)量的可編輯 邏輯單元。CPLD 邏輯門的密度在幾千到幾萬個 邏輯單 元之間,而 FPGA 通常是在幾萬到幾百萬。 CPLD 和 FPGA 的主要區(qū)別是他們的系統(tǒng)結(jié)構(gòu)。 CPLD 是一個有點限制性的結(jié) 構(gòu)。這個結(jié)構(gòu)由一個或者多個可編輯的結(jié)果之和的邏輯組列和一些相對少量的鎖定 的寄存器。這樣的結(jié)果是缺乏編輯靈活性,但是卻有可以預計的延遲時間和邏輯 單元對連接單元高比率的優(yōu)點。而 FPGA 卻是有很多的連接單元,這樣雖然讓它 可以更加靈活的編輯,但是結(jié)構(gòu)卻復雜的多。 CP

14、LD 和 FPGA 另外一個區(qū)別是大多數(shù)的 FPGA 含有高層次的內(nèi)置模塊(比如 加法器和乘法器)和內(nèi)置的 記憶體。因此一個有關的重要區(qū)別是很多新的FPGA 支持完全的或者部分的系統(tǒng)內(nèi)重新配置。允許他們的設計隨著系統(tǒng)升級或者動態(tài)重 新配置而改變。一些 FPGA 可以讓設備的一部分重新編輯而其他部分繼續(xù)正常運行。 CPLD 和 FPGA 還有一個區(qū)別: CPLD 下電之后,原有燒入的邏輯結(jié)構(gòu)不會消 失;而 FPGA 下電之后,再次上電時,需要重新加載FLASH 里面的邏輯代碼,需 要一定的加載時間。 FPFA 的主要生產(chǎn)商有: Altera,Xilinx,Actel,Lattice。其中 Alt

15、era 作為世 界老牌可編程邏輯器件的廠家,是當前世界范圍內(nèi)市場占有率最大的廠家,它和 Xilinx 主要生產(chǎn)一般用途 FPGA,其主要產(chǎn)品采用 RAM 工藝。Actel 主要提供非 易失性 FPGA,產(chǎn)品主要基于反熔絲工藝和 FLASH 工藝。 1.3 VHDL 語言和 QUARTUS II 簡介 VHDL 語言簡介 VHDL(VHSIC(Very High Speed Integrated Circuit)Hardware Description Language)是超高速集成電路硬件描述語言,是一種用于電路設計的高級語言。它出 現(xiàn)于 80 年代后期,剛開始時它是由美國國防部開發(fā)出來的,是

16、為了供美軍用來提高設 計的可靠性和縮減開發(fā)周期的一種使用范圍比較小的設計語言 。VHDL 語言主要應用 于數(shù)字電路系統(tǒng)的設計。目前,國內(nèi)對它的應用多數(shù)集中在 FPGA/CPLD/EPLD 的設 計當中,除此之外,一些較為有實力的單位,也將它用來設計 ASIC。 VHDL 語言具有多層次描述系統(tǒng)硬件功能的能力,既可以描述系統(tǒng)級電路,又可 以描述門級電路。而描述既可以采用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可 以采用三者混合的混合級描述。另外, VHDL 還支持慣性延遲和傳輸延遲,還可 以準確地建立硬件電路模型。 VHDL 支持預定義的和自定義的數(shù)據(jù)類型,給硬件描 述帶來較大的自由度,使設計人員

17、能夠方便地創(chuàng)建高層次的系統(tǒng)模型。VHDL 語 言具有自頂向下和基于庫的設計特點。其開發(fā)流程:在頂層用方框圖或硬件語言對電 路的行為進行描述后,進行系統(tǒng)仿真驗證和糾錯,再用邏輯綜合優(yōu)化工具生成具體的 門級邏輯電路的網(wǎng)表,然后通過適配器將網(wǎng)表文件配置于指定的目標器件,產(chǎn)生最終 下載文件或配置文件。最后把適配后生成的下載或配置文件通過編程器或編程電纜下 載到具體的 FPGA/CPLD 器件中去,以便進行硬件調(diào)試和驗證,從而實現(xiàn)可編程的專 用集成電路 ASIC 的設計。 VHDL 主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口,除了含有許多具有硬 件特征的語句外,VHDL 的語言形式和描述風格與句法是十

18、分類似于一般的計算機高 級語言。VHDL 系統(tǒng)設計與其他硬件描述語言相比,具有比較強的行為描述能力,從 而決定了它成為系統(tǒng)設計領域最佳的硬件描述語言之一。強大的行為描述能力是避開 具體的器件結(jié)構(gòu),從邏輯行為上描述和設計大規(guī)模電子系統(tǒng)的重要保證4。 VHDL 語言能夠成為標準化的硬件描述語言并獲得廣泛應用,它自身必然具有很 多其他硬件描述語言所不具備的優(yōu)點。歸納起來,VHDL 語言主要具有以下優(yōu)點: 1、VHDL 語言功能強大,設計方式多樣 VHDL 語言具有強大的語言結(jié)構(gòu),只需采用簡單明確的 VHDL 語言程序就可以描 述十分復雜的硬件電路。同時,它還具有多層次的電路設計描述功能。此外,VHD

19、L 語言能夠同時支持同步電路、異步電路和隨機電路的設計實現(xiàn),這是其他硬件描述語 言所不能比擬的。VHDL 語言設計方法靈活多樣,既支持自頂向下的設計方式,也支 持自底向上的設計方法; 既支持模塊化設計方法,也支持層次化設計方法5。 2、VHDL 語言具有強大的硬件描述能力 VHDL 語言具有多層次的電路設計描述功能,既可描述系統(tǒng)級電路,也可以描述 門級電路;描述方式既可以采用行為描述、寄存器傳輸描述或者結(jié)構(gòu)描述,也可以采 用三者的混合描述方式。同時,VHDL 語言也支持慣性延遲和傳輸延遲,這樣可以準 確地建立硬件電路的模型。VHDL 語言的強大描述能力還體現(xiàn)在它具有豐富的數(shù)據(jù)類 型。VHDL

20、語言既支持標準定義的數(shù)據(jù)類型,也支持用戶定義的數(shù)據(jù)類型,這樣便會 給硬件描述帶來較大的自由度。 3、 VHDL 語言具有很強的移植能力 VHDL 語言很強的移植能力主要體現(xiàn)在: 對于同一個硬件電路的 VHDL 語言描 述,它可以從一個模擬器移植到另一個模擬器上、從一個綜合器移植到另一個綜合器 上或者從一個工作平臺移植到另一個工作平臺上去執(zhí)行6。 4、VHDL 語言的設計描述與器件無關 采用 VHDL 語言描述硬件電路時,設計人員并不需要首先考慮選擇進行設計的器 件。這樣做的好處是可以使設計人員集中精力進行電路設計的優(yōu)化,而不需要考慮其 他的問題。當硬件電路的設計描述完成以后,VHDL 語言允許

21、采用多種不同的器件結(jié) 構(gòu)來實現(xiàn)7。 5、VHDL 語言程序易于共享和復用 VHDL 語言采用基于庫 ( library) 的設計方法。在設計過程中,設計人員可以建立 各種可再次利用的模塊,一個大規(guī)模的硬件電路的設計不可能從門級電路開始一步步 地進行設計,而是一些模塊的累加。這些模塊可以預先設計或者使用以前設計中的存 檔模塊,將這些模塊存放在庫中,就可以在以后的設計中進行復用。 由于 VHDL 語言是一種描述、模擬、綜合、優(yōu)化和布線的標準硬件描述語言,因 此它可以使設計成果在設計人員之間方便地進行交流和共享,從而減小硬件電路設計 的工作量,縮短開發(fā)周期8。 QUARTUS II 簡介 Quart

22、us II 是 Altera 公司設計的綜合性 PLD 開發(fā)軟件,它支持原理圖、 VHDL、VerilogHDL 以及 AHDL 等多種設計輸入形式,內(nèi)嵌有綜合器以及仿真器,可 以完成從設計輸入到硬件配置的完整 PLD 設計流程9。 Quartus II 可以在 XP、Linux 以及 Unix 上使用,除了可以使用 Tcl 腳本完成設計 流程外,提供了完善的用戶圖形界面設計方式。具有運行速度快,界面統(tǒng)一,功能集 中,易學易用等特點。 此外,Quartus II 通過和 DSP Builder 工具與 Matlab/Simulink 相結(jié)合,可以方便地 實現(xiàn)各種 DSP 應用系統(tǒng);支持 Alt

23、era 的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)設計、 嵌入式軟件開發(fā)、可編程邏輯設計于一體,是一種綜合性的開發(fā)平臺10。 Quartus II 支持 Altera 的 IP 核,包含了 LPM/MegaFunction 宏功能模塊庫,這樣可 以使用戶充分的利用成熟的模塊,從而簡化了設計的復雜性,進而加快了設計的速度。 Quartus II 支持的器件類型非常豐富,其圖形界面也易于操作。Altera 在 Quartus II 中包 含了許多諸如 SignalTap II、Chip Editor 和 RTL Viewer 的設計輔助工具,集成了 SOPC 和 HardCopy 的設計流程,并且繼

24、承了 Maxplus II 友好的圖形界面及簡便的使用方法。 Quartus II 作為一種可編程邏輯的設計環(huán)境, 由于其強大的設計能力和直觀易用的接口, 越來越受到數(shù)字系統(tǒng)設計者的喜愛和歡迎11。 Quartus II 提供了完全集成且與電路結(jié)構(gòu)無關的開發(fā)包環(huán)境,具有數(shù)字邏輯設計的 全部特性,包括: 1、可利用原理圖、結(jié)構(gòu)框圖、VerilogHDL、AHDL 和 VHDL 完成電路描述,并將其 保存為設計實體文件; 2、芯片(電路)平面布局連線編輯; 3、LogicLock 增量設計方法,用戶可建立并優(yōu)化系統(tǒng),然后添加對原始系統(tǒng)的性能影 響較小或無影響的后續(xù)模塊; 4、功能強大的邏輯綜合工具

25、; 5、完備的電路功能仿真與時序邏輯仿真工具; 6、定時/時序分析與關鍵路徑延時分析; 7、可使用 SignalTap II 邏輯分析工具進行嵌入式的邏輯分析; 8、支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來生成編程文件; 9、使用組合編譯方式可一次完成整體設計流程; 10、自動定位編譯錯誤; 11、高效的期間編程與驗證工具; 12、可讀入標準的 EDIF 網(wǎng)表文件、VHDL 網(wǎng)表文件和 Verilog 網(wǎng)表文件; 13、能生成第三方 EDA 軟件使用的 VHDL 網(wǎng)表文件和 Verilog 網(wǎng)表文件。 Altera 的 Quartus II 可編程邏輯軟件屬于第四代 PLD 開發(fā)平臺。該平

26、臺支持一個工 作組環(huán)境下的設計要求,其中包括支持基于 Internet 的協(xié)作設計。Quartus 平臺與 Cadence、ExemplarLogic、 MentorGraphics、Synopsys 和 Synplicity 等 EDA 供應商的 開發(fā)工具相兼容。改進了軟件的 LogicLock 模塊設計功能,增添了 FastFit 編譯選項, 推進了網(wǎng)絡編輯性能,而且提升了調(diào)試能力。支持 MAX7000/MAX3000 等乘積項器件 12。 2 分頻基本原理 2.1 等占空比偶數(shù)分頻方法 在設計偶數(shù)倍分頻器時 ,常用的方法是:通過一個由待分頻時鐘上升沿所觸發(fā) 的計數(shù)器循環(huán)計數(shù)來實現(xiàn) N 倍

27、(N 為偶數(shù))分頻的實現(xiàn)方法:通過由待分頻的時鐘 觸發(fā)的模為(N/2)-1 的計數(shù)器計數(shù),當計數(shù)器從 0 計數(shù)到(N/2)-1 時,輸出時鐘信號 進行翻轉(zhuǎn),同時給計數(shù)器一個復位信號 ,使得計數(shù)器在下一個時鐘重新開始計數(shù), 采用這種方法不斷循環(huán),就可得到所需的N 倍分頻器。這種方法可以實現(xiàn)占空比 為 50%的任意偶數(shù)分頻 2.2 等占空比的奇數(shù)分頻方法 占空比為 50%的 N 倍(N 為奇數(shù))分頻的實現(xiàn)方法 :首先通過時鐘的上升沿觸發(fā) 進行計數(shù),當計數(shù)到某一個特定值時對計數(shù)輸出進行翻轉(zhuǎn),然后經(jīng)過(N-1)/2 個輸 入時鐘,再次對計數(shù)輸出進行翻轉(zhuǎn),從而得到一個占空比非50%的 N 倍奇數(shù)分 頻時

28、鐘。在此同時進行時鐘的下降沿觸發(fā)進行計數(shù),當計數(shù)到和上升沿觸發(fā)輸出時 鐘翻轉(zhuǎn)時所選的特定值相同時,對計數(shù)輸出進行翻轉(zhuǎn),同樣經(jīng)過(N-1)/2 個時鐘時, 再次對計數(shù)輸出進行翻轉(zhuǎn),從而得到另一個占空比非 50%的 N 倍奇數(shù)分頻時鐘。 然后對兩個占空比非 50%的 N 倍奇數(shù)分頻時鐘進行邏輯或運算,就能得到一個占 空比為 50%的 N 倍奇數(shù)分頻時鐘。如進行三倍分頻時鐘設計時,先通過待分頻時鐘 上升沿觸發(fā)計數(shù)器進行模三計數(shù), 當計數(shù)器計數(shù)到特定值時進行翻轉(zhuǎn),比如可以 在計數(shù)器計數(shù)到時,輸出時鐘進行翻轉(zhuǎn),當計數(shù)到2 時再次進行翻轉(zhuǎn) ,這樣實際上 實現(xiàn)一個占空比為 1/3 的三分頻時鐘。然后通過待分

29、頻時鐘下降沿觸發(fā)計數(shù),采用 和上升沿觸發(fā)的計數(shù)相似的方法,可以產(chǎn)生另外一個三分頻的時鐘, 然后下降沿 產(chǎn)生的三分頻時鐘和上升沿產(chǎn)生的時鐘進行邏輯或運算,就可得到占空比為 50% 的三分頻時鐘 6。 2.3 分數(shù)分頻方法 數(shù)分頻器的設計思想與小數(shù)分頻器類似。假設進行 .分頻,總分頻次數(shù)由分母 j n m m 決定,規(guī)律是進行 n 次 j+1 分頻和 m-n 次 j 分頻。兩種分頻交替進行的計算方法也和 小數(shù)分頻類似。究竟是進行 j+1 分頻還是 j 分頻就看累加的結(jié)果是大于等于分母還是小 于分母。的分頻計算過程見表 2.1 可見要進行 6 次 4 分頻,5 次 3 分頻,滿足上面 6 311 的

30、規(guī)律。分數(shù)分頻器,其中 j、m、n 分別取 3、11、6,故實現(xiàn)了分頻,參數(shù) 6 311 n1、n2 用來調(diào)節(jié)占空比。 表表 2.1 分頻序列分頻序列 6 311 分頻次數(shù)累加器分頻系數(shù) 163 2124 383 4144 5104 6163 7124 883 9144 10103 11164 2.4 小數(shù)分頻方法 小數(shù)分頻器是通過可變分頻和多次平均的方法得到的4-5。假設要進行 m,n 分頻 (m、n 都是整數(shù),且 n10) ,因為只有一位小數(shù),所以總共要進行 10 次分頻,總的 規(guī)律是進行 n 次 m+1 分頻,10-n 次分頻。假設要進行 j,m,n 分頻(j、m、n 都足整 數(shù)且 m、

31、n10) ,由于小數(shù)是 2 位,所以總共要進行 100 次分頻,分頻的規(guī)律是進行 行 mn 次 j+1 分頻,100-mn 次 j 分頻。不管是幾位小數(shù)總要進行兩種系數(shù)的分頻,兩種 分頻究竟如何交義進行,可以根據(jù)一定的規(guī)律計算出來,下面以 3.6 分頻為例進行講解。 由上面的分析知道 3.6 分頻要進行 6 次 4 分頻,4 次 3 分頻。將小數(shù)部分 6 按倍累加, 假設累加的值為 a,如果 a10 則進行 3 分頻,a10 的話下一次則加上 6,此后,如 果 a10 則進行 4 分頻,4 分頻過后再將累加值減去 4 后與 10 比較以決定下一次分頻 是 4 分頻還是 3 分頻,計算過程見表

32、2.2。 表表 2.2 3.6 分頻序列分頻序列 分頻次數(shù)累加器分頻系數(shù) 163 2124 383 4144 5104 663 7124 883 9144 10104 從表 2.2 中看出分頻規(guī)律是:首先進行 3 分頻,然后進行 4 分頻,接著 1 次 3 分頻 和 2 次 4 分頻,如此循環(huán)下去。 2.5 任意倍數(shù)分頻器 加入控制模塊就可以將上述 4 種分頻器集成到一起,變成任意數(shù)值分頻器,頂層 原理見圖 2.1 圖 2.1 任意倍數(shù)分頻器框圖 當輸入的二進制數(shù) a=00 時實現(xiàn)偶數(shù)和占空比不等于 50的奇數(shù)分頻,a=01 時實 現(xiàn)占空比為 50的奇數(shù)分頻,a=10 和 ll 時分別實現(xiàn)小數(shù)

33、和分數(shù)分頻。其中 m、j 分別 控制整數(shù)分頻的分頻系數(shù)和占空比。小數(shù)分頻時 m、n 分別調(diào)整整數(shù)部分和小數(shù)部分; 分數(shù)分頻時 j 調(diào)整整數(shù)部分,而 m、n 分別控制分母和分子值。nl 和 n2 用于調(diào)節(jié)分數(shù) 和小數(shù)分頻的占空比。因為有小數(shù)和分數(shù)分頻,所以預置端口較多,但是可調(diào)性也達 到了最大。 任意倍數(shù)分頻器 clk a(1 downto 0) m j n n1 n2 y 3 任意倍數(shù)分頻器設計 3.1 設計思想 本設計的設計思想是:把偶數(shù)分頻,奇數(shù)分頻,半整數(shù)分頻,占空比可調(diào)的分頻, 小數(shù)分頻這 5 種比較常見的分頻器集成在一塊芯片之上,并可以通過按鈕來選擇具體 由哪一種分頻器進行操作,而撥

34、碼開關則可以預置一些分頻系數(shù),發(fā)光二極管則顯示 具體由那種分頻實現(xiàn),數(shù)碼管顯示分頻的系數(shù)。具體功能如下: 1、p,q,v:功能選擇按鈕。f1,f2,f3,f4,f5:表明功能的序號。 P=0,q=0 ,v =0 :偶數(shù)分頻,f1=1,f2=f3=f4=f5=0; P=0,q=0,v =1 :奇數(shù)分頻,f2=1,f1=f3=f4=f5=0; P=0,q=1 ,v =0:半整數(shù)分頻,f3=1,f1=f2=f4=f5=0; P=0,q=1 ,v =1:可預置占空比分頻,f4=1,f1=f2=f3=f5=0; P=1,q=0 ,v =0:小數(shù)分頻,f5=1,f1=f2=f3= f4=0; 2、clk:

35、時鐘信號。Rst:復位信號。 3、a,b,c,d:表明分頻系數(shù) 偶數(shù)分頻:2,4,6,8,10,12,14 奇數(shù)分頻:1,3,5,7,9,11,13,15 半整數(shù)分頻:1.515.5 占空比分頻:1:1,1:2,1:3,2:1,2:2,2:3,3:1,3:2,3:3 小數(shù)分頻:1.13.6 4、y:輸出信號。 y5:段選擇信號。 y6:位選擇信號。 5、y6=fb 選中第三個數(shù)碼管 y6=fd 選中第二個數(shù)碼管 y6=fe 選中第一個數(shù)碼管,數(shù)碼 管顯示分頻系數(shù)。 3.2 頂層框圖設計 圖3.1 頂層框圖設計原理圖 該頂層框圖主要由六個部分組成:選擇按鈕,撥碼開關,二極管,分頻器種類選擇, 信

36、號輸出。各部分的功能如下: 選擇按鈕:設置輸入的方式,選擇需要實現(xiàn)何種分頻。 撥碼開關:提供分頻的系數(shù)。 發(fā)光二極管:顯示第幾種分頻被選擇。 FPGA:根據(jù)前面的輸入來確定何種分頻器進行工作。 數(shù)碼管:顯示分頻系數(shù)。 信號輸出:把分頻后的信號進行輸出。 3.3 頂層文件設計 分頻器的頂層文件是一個原理圖文件,它包含 8 個模塊 8 個模塊 encoder-35 模塊, led 模塊,fenpin-e 模塊,fenpin-o 模塊,fenpin-m 模塊,fenpin-h 模塊,fenpin-x 模塊, mux51 模塊。模塊的正確性已在上面的介紹中進行驗證了。通過將各個模塊用具有電 氣性質(zhì)的導

37、線將各個模塊連接起來,這樣原理圖文件就建好了。保存編譯。在建立一 個.vwf 波形文件,保存并仿真。原理圖見附錄 B 所示,以 8 分頻為例子進行仿真,其 仿真結(jié)果如圖 3.3 所示: 選擇按鈕撥碼開關FPGA輸出信號 發(fā)光二級 管 數(shù)碼管 圖3.3 頂層文件波形仿真結(jié)果圖 P=0,q=0 ,v =0:偶數(shù)分頻,f1=1(表明第一個發(fā)光二極管亮) ,f2=f3=f4=f5=0; Rst=0 時,不分頻。 Rst=1 時: 當 y5=99 時,數(shù)碼管 1 顯示 4。 當 y5=ff 時,數(shù)碼管 2 不顯示。 當 y5=c0 時,數(shù)碼管 3 顯示 0。 最終結(jié)果為: 三個數(shù)碼管顯示為:0,不顯示,

38、4。 3.4 模塊設計 偶數(shù)分頻模塊的設計 偶數(shù)分頻模塊根據(jù)撥碼開關選擇分頻系數(shù)(count) ,對輸入的 clk 信號進行偶數(shù)分 頻。本設計偶數(shù)分頻的關鍵是對 clk 信號的上升信號進行計數(shù)(temp) 。當 temp 小于 count/2 時 clout 輸出 1,否則輸出 0,從而實現(xiàn)偶數(shù)分頻。只有當 35 譯碼器的輸出選中 偶數(shù)分頻且 rst=1 時偶數(shù)分頻才工作。偶數(shù)分頻實現(xiàn)的程序見附錄 A1。 偶數(shù)分頻(4 分頻)模塊程序仿真結(jié)果如圖 3.4 所示: 圖3.4 偶數(shù)分頻 從仿真結(jié)果可以看出: 本設計的優(yōu)點是:當 rst=0,sel=0 時,輸出信號為低電平;當 rst 或者 sel

39、 中有一個 為低電平時,計數(shù)器停止計數(shù),但保持上一狀態(tài)繼續(xù)輸出,當恢復 rst=1,sel=1 時繼續(xù) 計數(shù),執(zhí)行分頻。 奇數(shù)分頻模塊的設計 奇數(shù)分頻模塊根據(jù)撥碼開關選擇分頻系數(shù)(count1) ,對輸入的 clk 信號進行偶數(shù)分 頻。本設計奇數(shù)分頻的關鍵是對 clk 信號的上升沿信號進行計數(shù)(p)和對 clk 信號的 下降沿信號進行計數(shù)(q) 。當 p (count1-1)/2 或者 q(count1-1)/2 時 clout 輸出 1,否 則輸出 0,從而實現(xiàn)奇數(shù)分頻。只有當 35 譯碼器的輸出選中偶數(shù)分頻且 rst=1 時奇數(shù) 分頻才工作。奇數(shù)分頻實現(xiàn)的程序見附錄 A2。 奇數(shù)分頻(7

40、分頻)模塊程序仿真結(jié)果如圖 3.5 所示: 異或門模 N 計數(shù) 器 二分頻器 f0/(N-0.5)f0/(2N-1)f0 圖 3.5 奇數(shù)分頻 從仿真結(jié)果可以看出: 這種設計的優(yōu)點是:當 rst 與 sel 當中任意一個為 0 時,即放棄對本次的計數(shù)并保 持輸出為低電平,在下一次 rst 與 sel 都等于 1 時,重新開始計數(shù),執(zhí)行分頻。 半整數(shù)模塊設計 半整數(shù)分頻模塊根據(jù)撥碼開關選擇分頻系數(shù)(count1) ,對輸入的 clk 信號進行偶數(shù) 分頻。本設計偶數(shù)分頻的思想如圖 3.6 所示: 圖 3.6 半整數(shù)分頻原理圖 只有當 35 譯碼器的輸出選中偶數(shù)分頻且 rst=1 時半整數(shù)分頻才工作

41、。半整數(shù)分頻 實現(xiàn)的程序見附錄 A3。 半整數(shù)分頻(6.5 分頻)模塊程序仿真結(jié)果如圖 3.7 所示: 圖 3.7 半整數(shù)分頻 從仿真結(jié)果可以看出: 本設計的優(yōu)點是:在 rst 或者 sel 有一個為低電平時,計數(shù)器停止計數(shù),維持上一 狀態(tài)輸出,當 rst 和 sel 都為高電平的時,重新開始計數(shù),執(zhí)行分頻。 占空比可調(diào)的分頻模塊設計 占空比可調(diào)的分頻模塊根據(jù)撥碼開關選擇占空比(m1:n1) ,對輸入的 clk 信號進 行占空比可調(diào)的分頻。本設計占空比可調(diào)的分頻的關鍵是對 clk 信號的上升沿信號進行 計數(shù) temp。當 temp m1 時 clkout2 輸出 1,否則輸出 0,從而實現(xiàn)占空

42、比可調(diào)的分頻。 只有當 35 譯碼器的輸出選中偶數(shù)分頻且 rst=1 時占空比可調(diào)的分頻才工作。占空比可 調(diào)的分頻實現(xiàn)的程序見附錄 A4。 占空比可調(diào)的分頻(1:3 分頻)模塊程序仿真結(jié)果如圖 3.8 所示: 圖 3.8 占空比可調(diào)分頻 從仿真結(jié)果可以看出: 這種設計的優(yōu)點是:在 rst 或者 sel 有一個為低電平時,可以保持前一狀態(tài)和計數(shù) 結(jié)果,使其具有記憶功能。在恢復工作時,繼續(xù)計數(shù),具有有良好的性能。 小數(shù)分頻模塊設計 小數(shù)分頻模塊根據(jù)撥碼開關選擇分頻系數(shù)(n.x) ,對輸入的 clk 信號進行小數(shù)分頻。 本設計小數(shù)分頻的關鍵是實現(xiàn)(10-x)次 n 分頻和 x 次的 n+1 分頻的交

43、替進行,從而 實現(xiàn)小數(shù)的分頻。只有當 35 譯碼器的輸出選中偶數(shù)分頻且 rst=1 時占空比可調(diào)的分頻 才工作。小數(shù)分頻實現(xiàn)的程序見附錄 A5. 小數(shù)分頻(1.3 分頻)模塊程序仿真結(jié)果如圖 3.9 所示: 圖 3.9 小數(shù)分頻 從仿真結(jié)果可以看出: 這種設計的有優(yōu)點是: 在 rst 或者 sel 有一個為低電平時,可以保持低電平輸出,并 保持計數(shù)。在恢復工作時,繼續(xù)計數(shù),具有有良好的性能。 encoder_35 模塊的設計 encoder_35 模塊的功能見表: 表表 3.13.1 encoder_35encoder_35 模塊的功模塊的功 輸入信號輸出信號 pqvabcde 0000000

44、1 00100010 01000100 01101000 10010000 10100000 11000000 11100000 例如:當 p=0,q=0,v=0 時,e 端輸出高電平 1,而其他輸出低電平 0,表明 e 端被 選中。 encoder_35 模塊的作用是:提供給 mux51 模塊的輸入信號,mux51 模塊根據(jù)輸入 信號,判斷是哪路信號后輸出信號。encoder_35 模塊實現(xiàn)的程序見附錄 A6 encoder_35 模塊程序仿真結(jié)果如圖 3.10 所示: 圖 3.10 encoder_35 仿真圖 該仿真是通過設置 p=0,q=0,v=0,來實現(xiàn)的,結(jié)果為 e=1,其余為 0

45、; led 模塊的設計 數(shù)碼管接成共陽極,只有當?shù)碗娖綍r才有效。Led-out 為段選信號,led-bie 為位選 信號。m,n,o 鏈接 p,q,v 根據(jù)輸入的信號,選擇 a5,b5,c5,d5 的結(jié)合形式。具 體功能如下: 表表 3.23.2 ledled 模塊功能模塊功能 輸入信號結(jié)合形式 p(m)q(n)v(o) 000 x=8*d5+4*c5+2*b5+1*a5 001x=8*d5+4*c5+2*b5+1*a5 010 x=8*d5+4*c5+2*b5+1*a5 011x=2*d5+1*c5,y=2*b5+1*a5 100 x=2*d5+1*c5,y=2*b5+1*a5 101無操作

46、 110無操作 111無操作 led 的實現(xiàn)程序見附錄 A7 led 模塊程序仿真結(jié)果如圖 3.11 所示: 圖 3.11 led 仿真圖 從仿真結(jié)果可以看出: 當 m=0,n=0,o=0 時,選中的是偶數(shù)分頻,由于 d5 等于 1,故分頻系數(shù)為 8,3 個數(shù)碼顯示的順序為 0,不顯示,8。 mux51 模塊的設計 mux51 模塊的作用是:根據(jù)輸入的信號,選擇輸出的信號是那種分頻形式,并點 亮相應的發(fā)光二極管。mux51 模塊的實現(xiàn)程序見附錄 A8 mux51 模塊程序仿真結(jié)果如圖 3.12 所示: 圖 3.12 mux-51 仿真圖 從仿真結(jié)果可以看出: 該仿真結(jié)果是通過設置 e=1(第一

47、種分頻選中) ,其結(jié)果為第一個發(fā)光二極管亮,y 輸出第一種分頻。 結(jié)論 通過各種方式查閱大量資料,首先了解已經(jīng)很成熟的分頻技術(shù),大致上都是先將 不同分頻形式的分頻器列舉出來,然后創(chuàng)建一個模塊,將不同形式的分頻器集成在一 起。本次設計不同于其他的分頻器設計,本設計繼承了將不同分頻集成在一起的思想, 但是本設計完全運用了模塊設計,并且通過按鈕,撥碼開關可以選擇分頻器和分頻系 數(shù),做到隨意的變頻。而數(shù)碼管則可以顯示分頻的系數(shù),發(fā)光二極管則可以顯示何種 分頻器讓人一幕了然。本課題大大降低了分頻工作的工作量,方便了分頻器的使用。 本設計還有不足之處,分頻系數(shù)設置的小,導致分頻系數(shù)的輸入存在局限性,而時鐘

48、 頻率設置的較小,導致輸出頻率低。通過改變分頻系數(shù)的設置和調(diào)高時鐘頻率從而擴 大分頻系數(shù)的輸入范圍提高輸出頻率。 致謝 本次設計,在陳萬里老師的幫助下順利的完成了設計,在設計的過程中,陳老師 給我提了很多的設計思想和一些資料,剛開始的時候,我只會設計單一功能的分頻器, 后來在陳老師的幫助下完成了本次設計,讓我有了進一步學習設計的機會。再此要謝 謝陳萬里老師給予的幫助,如果沒有老師的幫助,這次設計很難完成。 參考文獻 1 擦光輝.CPLD/TPGA 的開發(fā)與應用M. 北京:電于工業(yè)出版社,2002. 2 吳玉呂,胡水強,王文娟.基于 CPLD/FPGA 的多功能分頻器的設計與實現(xiàn)L.世 界電子元

49、器件,2007(03). 3 潘松,黃繼業(yè).EDA技術(shù)實用教程(第三版)M.北京:科學出版社,2006. 4 何賓.EDA 原理及應用.北京:清華大學出版社,2010. 5 李洪偉,袁斯華.基于 Quartus II 的 FPGA/CPLD 設計.北京:電子工業(yè)出版社, 2006. 6 ALTERA,Introduction to Quartus,2007. 7 張靜亞.FPGA 系統(tǒng)設計中資源分配的分析和研究 J.信息化研究,2009,35(3): 37239. 8 聶小燕.數(shù)字電路 EDA 設計與應用. 北京:人民郵電出版社,2010. 9 白雪皎基于 CPLD 半整數(shù)分頻器的設計J長春大

50、學學報,2006,116(1):13 15 10 趙雅興.FPGA 原理、設計與應用,天津大學出版社, 2005. 11 Robert K. Dueck 編著.數(shù)字系統(tǒng)設計: CPLD 應用與 VHDL 編程,清華大學出 版社,2006 12 Liu Yanfei,Sen P C.Digital Control of Switching Power Converters.IEEE Conference on Control Applications Toronto,Canada,August.28-31,2005:635-640. 附錄 A VHDL 源程序 附錄 A1:偶數(shù)分頻實現(xiàn)的程序 l

51、ibrary ieee; entity fenpin_e is port ( clkin,rst:in std_logic; a,b,c,d:in integer range 1 downto 0; sel:in std_logic; clkout:out std_logic ); end fenpin_e; architecture rtl of fenpin_e is signal temp:integer range 16 downto 0; signal count:integer range 16 downto 0; begin count=8*d+4*c+2*b; process(

52、clkin) begin if rst=1 then if(sel=1) then if (clkin event and clkin = 1) then if temp = count-1 then temp = 0; else temp = temp + 1; end if; end if; else null; end if; else null; end if; end process; process(temp) begin if rst=1 then if(sel=1) then if temp count/2 then clout = 1; else clout = 0; end

53、 if; else null; end if; else clout = 0; end if; end process; end rtl; 附錄 A2 奇數(shù)分頻實現(xiàn)的程序 library ieee; entity fenpin_o is port( clk,rst:in std_logic; sel:in std_logic; a2,b2,c2,d2:in integer range 1 downto 0; clkout1:out std_logic ); end fenpin_o; architecture rtl of fenpin_o is signal p,q ,count1:inte

54、ger range 18 downto 0; begin count1=8*d2+4*c2+2*b2+1*a2; process(clk) begin if rst=1 then if(sel=1) then if (clkevent and clk = 1 ) then if p=count1-1 then p=0; else p=p+1; end if; end if; else null; end if; else p=count1-1; end if; end process; process(clk) begin if rst=1 then if(sel=1) then if (cl

55、k event and clk = 0 ) then if q=count1-1 then q=0; else q=q+1; end if; end if; else null; end if; else q=count1-1; end if; end process; clkout1 = 1 when p (count1-1)/2 or q(count1-1)/2 else 0; end rtl; 附錄 A3 半整數(shù)分頻實現(xiàn)的程序 library ieee; entity fenpin_m is port( clkin,rst:in std_logic; sel:in std_logic;

56、a3,b3,c3,d3:in integer range 1 downto 0; clkout3:buffer std_logic ); end fenpin_m; architecture rtl of fenpin_m is signal clk, div2:std_logic; signal count:integer range 0 to 16 ; signal set:integer range 16 downto 0 ; begin set=8*d3+4*c3+2*b3+1*a3; clk = clkin xor div2; process(clk) begin if rst=1

57、then if sel=1 then if (clk event and clk = 1) then if (count = 0 ) then count = set-1; clkout3 = 1; else count = count - 1; clkout3 = 0; end if; end if; else count=1; end if; else null; end if; end process; process(clkout3) begin if sel=1 then if (clkout3event and clkout3=1) then div2 = not div2; en

58、d if; else null; end if; end process; end rtl; 附錄 A4 占空比可調(diào)的分頻實現(xiàn)的程序 library ieee; entity fenpin_h is port( clk,rst:in std_logic; sel:in std_logic; a4,b4,c4,d4:in integer range 1 downto 0; clkout2:out std_logic ); end fenpin_h; architecture rtl of fenpin_h is signal temp,m1,n1:integer range 5 downto 0

59、; begin m1=2*d4+1*c4; n1=2*b4+1*a4; process(clk,temp,sel) begin if rst=1 then if sel = 1 then if rising_edge(clk) then if temp = n1 -1 then temp = 0; else temp = temp +1; end if; end if; else null; end if; else temp=n1-1; end if; end process; clkout2 = 1 when temp m1 else 0; end rtl; 附錄 A5 小數(shù)分頻實現(xiàn)的程序

60、 library ieee; use ieee.std_logic_1164. all; use ieee.std_logic_unsigned. all; entity fenpin_x is port( clkin: in std_logic; rst:in std_logic; sel1:in std_logic; a,b,c,d:in integer range 1 downto 0; clk_out:out std_logic ); end fenpin_x; architecture arch of fenpin_x is component number port( n : in

溫馨提示

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

評論

0/150

提交評論