可編程邏輯器件原理_第1頁
可編程邏輯器件原理_第2頁
可編程邏輯器件原理_第3頁
可編程邏輯器件原理_第4頁
可編程邏輯器件原理_第5頁
已閱讀5頁,還剩91頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、可編程邏輯器件原理可編程邏輯器件原理可編程邏輯器件原理可編程邏輯器件原理1.1 FPGA的基本概念的基本概念 1.2 可編程邏輯技術發展簡介可編程邏輯技術發展簡介 1.3 FPGA器件編程技術器件編程技術 1.4 通用通用FPGA的構成結構的構成結構 1.5 Xilinx FPGA的開發流程的開發流程 可編程邏輯器件原理可編程邏輯器件原理1.1 FPGA的基本概念的基本概念顧名思義,現場可編程邏輯門陣列(FPGA)是由可編程可編程配置配置的邏輯塊組成的數字集成電路,這些邏輯塊之間有著邏輯塊之間有著豐富的可配置的互連資源豐富的可配置的互連資源,設計者可以通過對這些資源進行不同的配置和編程來達到自

2、己所要實現的目標。我們要從如下幾個方面來理解FPGA的特性。 可編程邏輯器件原理可編程邏輯器件原理首先,FPGA名稱中的“現場可編程現場可編程”是指編程“在現場”進行(與那些內部功能已被制造商固化的器件內部功能已被制造商固化的器件正相反)。這意味著FPGA的編程具有更強的靈活性和創新性更強的靈活性和創新性,我們可以在實驗室進行配置,或者可以對已經應用于實際的電子系統中的某些功能進行改進,或者可以根據用戶需求,實現新的協議或者標準來對當前應用作進一步的完善和改進。總而言之,FPGA的現場可編程特性滿足了用戶實現任意數字邏實現任意數字邏輯的愿望輯的愿望,成為用戶靈活“武裝”自己產品的最有效的武器。

3、 可編程邏輯器件原理可編程邏輯器件原理其次,FPGA名稱中的“邏輯門陣列”不僅僅指的是傳統意義上的邏輯門陣列。FPGA是可編程邏輯器件是可編程邏輯器件(PLD)和專用集成和專用集成電路電路(ASIC)技術發展到一定程度的產物技術發展到一定程度的產物。PLD能夠實現靈活的邏輯可編程功能,但是其可編程規模小,無法實現復雜的邏輯功能,而ASIC雖然能夠實現復雜的邏輯功能,但是昂貴的工藝過程和巨額的流片費用,在很多時候令大家望而卻步。FPGA的誕生恰好彌合了PLD和ASIC之間的這道鴻溝,其邏輯規??梢赃_到邏輯規模可以達到ASIC的級別的級別,而且不必承擔如ASIC開發帶來的數額巨大的不可重現工程(N

4、RE)成本。隨著FPGA技術的不斷發展,FPGA器件逐漸變成一種數字化平臺系統數字化平臺系統,其 “邏輯門”已經不再和PLD或者ASIC一樣,而是包含了現代FPGA中的各種資源,如可編程邏輯塊、RAM資源、數字信號處理模塊、微處理器等。 可編程邏輯器件原理可編程邏輯器件原理1.2 可編程邏輯技術發展簡介可編程邏輯技術發展簡介 1.2.1 可編程技術發展演變過程可編程技術發展演變過程世界上第一款可編程邏輯器件是第一款可編程邏輯器件是1970年以年以PROM的形式進入人們視野的,但當時還非常簡單,僅僅到20世紀70年代末,復雜實用的復雜實用的PLD器件便應用在工程當中了。為了在復雜程度上進行區分,

5、后來出現了新的名詞即簡單可編程邏簡單可編程邏輯器件輯器件(SPLD)和復雜可編程邏輯器件和復雜可編程邏輯器件(CPLD)。SPLD至今依然有人沿用,而CPLD成為當今PLD器件的代名詞。PLD器件經歷了在結構上的不斷改進,從一開始的從一開始的PROM器件,器件,到到PLA、PAL,再到后來的,再到后來的GAL,逐漸演變到今天通用的,逐漸演變到今天通用的CPLD結構。結構。 可編程邏輯器件原理可編程邏輯器件原理1PROM器件器件PROM(Programmable Read-Only Memory,可編程只讀存儲器)基本結構其實就是由與由與(AND)陣列函數驅動可編程陣列函數驅動可編程的或的或(O

6、R)陣列函數陣列函數。一個3輸入3輸出的基于PROM結構的可編程邏輯器件結構如圖1-1所示。圖中,“&”代表邏輯“與”;“!”代表邏輯“非”。 可編程邏輯器件原理可編程邏輯器件原理在OR門陣列中的可編程連線門陣列中的可編程連線可以用熔絲、用熔絲、EPROM晶晶體管或者體管或者E2PROM器件中的器件中的E2PROM晶體管等來實現晶體管等來實現。PROM器件可以用來實現任何組合邏輯塊,但是它。PROM器件最初主要作為存儲器來存器件最初主要作為存儲器來存放計算機程序和常數值,工程師也發現它可以用來實現簡放計算機程序和常數值,工程師也發現它可以用來實現簡單的邏輯功能,比如狀態機查找表等單的邏

7、輯功能,比如狀態機查找表等。隨著PROM的大量應用,其他在其基礎上改進的可編程器件也紛紛面世。 可編程邏輯器件原理可編程邏輯器件原理圖1-1 3輸入3輸出的基于PROM結構的可編程邏輯器件結構圖 可編程邏輯器件原理可編程邏輯器件原理2PLA器件器件由于PROM器件對地址有限制,可編程器件的下一步演化就是PLA(Programmable Logic Array,可編程邏輯陣列,可編程邏輯陣列)器件。PLA器件是可編程邏輯器件中用戶可配置性最好的,因為它的AND和和OR陣列都是可配置的陣列都是可配置的。正是由于AND陣列也可編程,因而AND陣列中的AND函數的數目便可以與器件的輸入數目獨立,只要引

8、入更多的行,便可在陣列中形成額外的AND函數。類似地,OR陣列也是與AND陣列獨立的,引入更多的列就可以形成更多的列函數。如果我們要用PLA器件完成下面三個公式,則可以按圖1-2所示的連線方式進行編程: 可編程邏輯器件原理可編程邏輯器件原理w(a &c)|(!b&!c) (1-1) x(!a &!b&!c)|(!b&!c) (1-2) y!a &!b&!c (1-3) PLA的優點是它對于大型設計非常有用,因為它可以實現大量公共乘積項,可用于多個輸出。而PLA的缺點是信號缺點是信號通過可編程連線所花費的時間相對更長,所以整個器件的速通過可

9、編程連線所花費的時間相對更長,所以整個器件的速度受到很大的影響。度受到很大的影響。 可編程邏輯器件原理可編程邏輯器件原理圖1-2 PLA編程示意圖 可編程邏輯器件原理可編程邏輯器件原理3PAL器件器件PAL(Programmable Array Logic,可編程陣列邏輯,可編程陣列邏輯)器件便是為了解決PLA的速度問題而產生的,其結構示意圖如圖1-3所示。 圖1-3 PAL結構示意圖 可編程邏輯器件原理可編程邏輯器件原理從圖1-3中可以看到,PAL的結構與PROM的正好相反,體現在PAL是由一個可編程可編程AND陣列陣列和一個預定義的預定義的OR陣陣列列組成的,相對于相對于PLA器件速度要快

10、得多,但是它只允許器件速度要快得多,但是它只允許有限數量的乘積項相或有限數量的乘積項相或,對器件的應用靈活性又一次進行制約。要解決這些問題,需要跳出PROM器件的陰影,不再針對PROM器件做結構上簡單的改進,而是采用新的方法,也就是下面我們討論的GAL器件。 可編程邏輯器件原理可編程邏輯器件原理4GAL以及以及CPLD器件器件GAL(Generic Array Logic,通用邏輯陣列)器件是Lattice公司于1985年推出的新型的可編程邏輯器件,GAL器件的器件的輸出端輸出端不再是簡單采用或陣列實現,而是采用了邏輯宏單邏輯宏單元元(OLMC),通過編程可以將可以將OLMC設置成不同的輸出方

11、式設置成不同的輸出方式。這樣,采用同一型號的GAL器件就可以實現可以實現PAL器件所有的器件所有的輸出電路工作模式輸出電路工作模式,使GAL器件成為通用可編程邏輯器件。 可編程邏輯器件原理可編程邏輯器件原理GAL系列器件誕生之后很長時間受到工程師的青睞,其在數字系統中的粘合邏輯粘合邏輯功能方面,對原來傳統意義上的74系列器件提出了挑戰。GAL器件器件不僅在性能上有很大的提高,而且還附加了很多獨有的功能附加了很多獨有的功能。比如,電子標簽電子標簽,方便了用戶的文檔管理;加密單元加密單元,防止他人抄襲電路;采用高性能的E2COMS工藝,保證了GAL器件的高速度和低高速度和低功耗等功耗等。但是GAL

12、器件依然屬于,僅相當于幾十個門電路。 可編程邏輯器件原理可編程邏輯器件原理真正的可編程時代的到來應該是伴隨著真正的可編程時代的到來應該是伴隨著CPLD(Complex Programmable Logic Device,復雜可編程邏輯器件,復雜可編程邏輯器件)的誕生的誕生。在20世紀90年代前后,目前世界著名的可編程邏輯器件公司如Xilinx、Altera、Lattice、Actel公司等都爭相研究新型的復雜可編程邏輯器件。CPLD一般都是基于乘積項結構的,如Xilinx公司的XC9500、CoolRunner系列器件,Altera的MAX7000、MAX3000以及MAX-系列器件,Latt

13、ice的ispMACH4000、ispMACH5000系列器件等,都是基于乘積項的CPLD。CPLD采采用的理念是一個普通的器件中包括一定數量的基本邏輯塊,分享用的理念是一個普通的器件中包括一定數量的基本邏輯塊,分享一個公共的可編程互連矩陣。一個公共的可編程互連矩陣??傮w來說,CPLD的結構由四個部分組成:可編程可編程I/O單元、單元、可編程基本邏輯單元可編程基本邏輯單元(CLB)、可編程布線資源、可編程布線資源(布線池、布線矩陣布線池、布線矩陣)和其他輔助模塊和其他輔助模塊(時鐘資源時鐘資源),如圖1-4所示。 可編程邏輯器件原理可編程邏輯器件原理圖1-4 CPLD的結構示意圖 可編程邏輯器

14、件原理可編程邏輯器件原理1.2.2 FPGA技術技術約在20世紀80年代早期,ASIC(Application Specific Integrated Circuit,專用集成電路)技術已經在飛速發展。但是在很多應用場合,昂貴的昂貴的ASIC費用費用不是廣大客戶所想要的,而且ASIC流片的風險太大,周期太長流片的風險太大,周期太長,。而CPLD技術雖然有飛躍,但是依然不能實現復雜的功能,尤其是無法實現無法實現復雜邏輯運算的功能復雜邏輯運算的功能。ASIC與CPLD之間的鴻溝越來越明顯。幸運的是,1984年世界上首款FPGA在Xilinx誕生。首款FPGA基于CMOS工藝,并且采用采用SRAM單

15、元單元,最小單元最小單元由一個3輸入查找表輸入查找表(LUT)與寄存器與寄存器組成。首款FPGA的誕生,已經給人們發出了一個信息,除了ASIC和CPLD之外,另外一種新型結構的可編程邏輯器件一種新型結構的可編程邏輯器件會給邏輯設計帶來新的活力??删幊踢壿嬈骷砜删幊踢壿嬈骷鞦PGA剛開始剛開始大部分用來作粘合邏輯、中等復雜程度的來作粘合邏輯、中等復雜程度的狀態機和相對有限的數據處理任務狀態機和相對有限的數據處理任務。在20世紀90年代,FPGA的規模和復雜度開始增加,市場擴展到通訊和網絡領擴展到通訊和網絡領域,而且都涉及到大量數據的處理域,而且都涉及到大量數據的處理。21世紀初,FPGA

16、在消費類產品,如汽車和工業領域的應用也經歷了爆炸式的增長,發展到現在,FPGA的黃金時代已經到來。ASIC驗證、微處驗證、微處理器核的嵌入、系統級的解決方案理器核的嵌入、系統級的解決方案,這些FPGA不斷創新的理念逐漸適應了目前市場的需求。 可編程邏輯器件原理可編程邏輯器件原理對于對于ASIC公司來說,公司來說,FPGA經常用于提供一個硬件驗經常用于提供一個硬件驗證平臺來驗證新算法新協議的物理層實現證平臺來驗證新算法新協議的物理層實現。比如,許多行業的開創性公司使用FPGA制定新的協議標準,并進行產品化,迎來市場的新增值點。同時,FPGA為許多小型公司帶為許多小型公司帶來機遇來機遇。這些公司利

17、用FPGA開發低成本高智力投入的產品并快速推向市場,迎來新的發展機遇。FPGA技術的發展將將創造性的邏輯設計任務從昂貴的創造性的邏輯設計任務從昂貴的ASIC公司搬到了普通的工公司搬到了普通的工作室。作室。 可編程邏輯器件原理可編程邏輯器件原理市場給了FPGA極大的機會,也給FPGA自身的發展帶來了挑戰。數千萬門的數千萬門的FPGA器件器件中集成了內嵌微處理器核、內嵌微處理器核、數字信號處理器數字信號處理器(DSP)、高速的輸入、高速的輸入/輸出輸出(I/O)接口接口等。FPGA正在蠶食著4個主要的市場個主要的市場:ASIC、DSP、嵌入式微、嵌入式微處理器處理器以及物理層通信芯片物理層通信芯片

18、。另外,FPGA還在創建自己的獨立市場,如可重配置計算技術可重配置計算技術(RC)。RC技術即由技術即由FPGA提供的固有的并行性和可重配置性來實現軟件算法的提供的固有的并行性和可重配置性來實現軟件算法的“硬硬件加速件加速”,許多公司在建立以FPGA為基礎的可重配置計算引擎,來完成從硬件仿真到密碼分析等任務。 可編程邏輯器件原理可編程邏輯器件原理從另外一個角度來說,FPGA技術的不斷推進,對于電子系統來說,產生了新的設計思想新的設計思想,即“軟軟”設計設計。這里的“軟”可以理解為“嵌入式軟件設計和可編程邏輯設嵌入式軟件設計和可編程邏輯設計計”,我們使用可編程邏輯器件用軟件的方法搭建硬件平可編程

19、邏輯器件用軟件的方法搭建硬件平臺臺,然后配合嵌入式軟件進行系統功能的設計嵌入式軟件進行系統功能的設計,FPGA成功成為這種新型設計方法的不可替代的載體。這種新型的設計方法具有非常多的優勢非常多的優勢,比如更容易保護知識產權更容易保護知識產權不被復制,因為我們知道在這個世界上,在知識產權的保護上原創者往往都要花費很大的精力在這方面,而;另外,增強了產品的智能化增強了產品的智能化,基于純“軟”設計方法設計的產品,在硬件不變的情況下,在硬件不變的情況下,更容易對產品進行改進和升級更容易對產品進行改進和升級,并為客戶新產品贏取及早面市的時間。 可編程邏輯器件原理可編程邏輯器件原理1.3 FPGA器件編

20、程技術器件編程技術 1.3.1 熔絲互連編程技術熔絲互連編程技術在FPGA的可編程技術中,最容易理解的可編程技術就是熔絲互連技術,下面我們舉例說明熔絲互連技術的原理。可編程邏輯器件原理可編程邏輯器件原理提起“熔絲熔絲”,我們不由地想起家里面的經??梢钥吹降闹惖臇|西,比如電視機,在出現某些危險時(比如電視功率突然變大),保險絲就會熔斷,結果使得電路開路,避免剩下的電路被繼續燒壞;在集成電路里面,道理其實是一樣的,只不過沒有那么直觀,熔絲的尺度小到顯微熔絲的尺度小到顯微鏡下才可以看到,其熔斷的方式也不是用大功率電壓來實鏡下才可以看到,其熔斷的方式也不是用大功率電壓來實現的,而是靠一定的工藝來確定

21、的。現的,而是靠一定的工藝來確定的。 可編程邏輯器件原理可編程邏輯器件原理圖1-5 未編程的熔絲連接圖 可編程邏輯器件原理可編程邏輯器件原理雖然,但是對理解新型FPGA可編程技術還是非常有用的,在這里我們僅做簡單的介紹。當拿到一個基于熔絲互連技術的可編程器件時,所有的熔絲都是完好的,保持著連接的狀態,參見圖1-5。此時,與門的輸出一直保持為0,其原理非常的簡單:當a為0時,與門輸入端為0,輸出必然為0;當a為1時,a的非門輸出為0,與門輸入端仍為0,輸出必然還是0。同樣的情況對于b來說也是一樣的。那么我們可以通過在輸入端加上相當大的電流和電壓脈沖,熔斷不需要的熔絲相當大的電流和電壓脈沖,熔斷不

22、需要的熔絲,與門的輸出邏輯值才可以變化,比如我們熔斷Faf和Fbt,如圖1-6所示。 可編程邏輯器件原理可編程邏輯器件原理圖1-6 編程之后的熔絲連接圖 可編程邏輯器件原理可編程邏輯器件原理這樣,輸入a的非門輸出和輸入b的原值都和與門輸入端斷開,那么對應的這兩個信號相連的負載就起了作用對應的這兩個信號相連的負載就起了作用,將與門的輸入值拉高而變成邏輯1,器件表現為新的功能,即 y=a&(!b) 以上過程詳細描述了熔絲連接實現可編程邏輯器件的原理。需要注意的是,這種通過熔斷熔絲的方法實現器件編程,通過熔斷熔絲的方法實現器件編程,是不能再恢復原狀的,所以這種器件為一次性可編程器件是不能再恢

23、復原狀的,所以這種器件為一次性可編程器件,即OTP(One Time Programmable,一次性可編程,一次性可編程)器件器件。熔絲互連技術已經不被當前任何器件作為一種可編程器件技術而使用?,F代FPGA編程器件一般基于以下三種技術一般基于以下三種技術:反熔絲、反熔絲、SRAM和和FLASH或或EPROM。 可編程邏輯器件原理可編程邏輯器件原理1.3.2 基于反熔絲的編程技術基于反熔絲的編程技術與熔絲連接技術相反,反熔絲技術是在每個可配置的輸入端上都有反熔絲的連接;當處于未編程狀態時,反熔絲當處于未編程狀態時,反熔絲的電阻非常高,可以認為是開路的電阻非常高,可以認為是開路,如圖1-7所示,

24、即反熔絲器件未編程之前的狀態。 圖1-7 未編程的反熔絲連接原理圖 可編程邏輯器件原理可編程邏輯器件原理我們可以通過對器件編程,而使輸入端反熔絲“變長”,例如,可以加在輸入a的非門和輸入b的原值所對應的反熔絲上讓其“變長”,器件將實現函數y=(!a)&b的功能。編程后的反熔絲結構如圖1-8所示。 圖1-8 編程之后的反熔絲連接圖 可編程邏輯器件原理可編程邏輯器件原理反熔絲開始時是連接兩個金屬連線的微型非晶硅反熔絲開始時是連接兩個金屬連線的微型非晶硅,在處于未編程狀態時,非晶硅表現為電阻超過非晶硅表現為電阻超過109 的絕緣體的絕緣體。在發生編程行為之后,絕緣體的非晶硅轉化成導電的多晶編

25、程行為之后,絕緣體的非晶硅轉化成導電的多晶硅硅而實現了電流的導通,如圖1-9所示。圖1-9 反熔絲的編程過程 可編程邏輯器件原理可編程邏輯器件原理具有反熔絲結構的器件的特點是速度極快,功耗極低。速度極快,功耗極低?;诜慈劢z的FPGA器件使用專門的器件編程器來進行編程,目前來說,Actel公司的主要FPGA產品都是基于反熔絲結構的,因為這種器件有許多優勢許多優勢:(1) 基于反熔絲結構反熔絲結構的FPGA器件是非易失性是非易失性的,因為其配置的數據在系統斷電之后仍能保持配置的數據在系統斷電之后仍能保持,如果數據已經配置過,那么在系統上電之后立刻就能執行代碼在系統上電之后立刻就能執行代碼,所以相

26、對我們后面要介紹的SRAM結構器件來說(每次上電都需要配置數據),上電后執行代碼速度快,幾乎沒有延時,而且省去上電后執行代碼速度快,幾乎沒有延時,而且省去外圍的配置存儲器,電路設計也相對簡單了。外圍的配置存儲器,電路設計也相對簡單了。 可編程邏輯器件原理可編程邏輯器件原理(2) 反熔絲結構器件反熔絲結構器件更為卓越的優勢在于其內部互連結其內部互連結構是天生構是天生“防輻射防輻射”的,它相對來說不受電磁輻射的影響,這對軍事和宇航應用具有特別的吸引力。因為在外界環境比較惡劣的情況下,基于基于SRAM元件的配置單元被射線擊中時元件的配置單元被射線擊中時可能會發生翻轉,因為在地球外層中有大量的射線可能

27、會發生翻轉,因為在地球外層中有大量的射線,相比之下,反熔絲結構的FPGA是不會受這個條件影響的。 可編程邏輯器件原理可編程邏輯器件原理(3) 基于反熔絲結構的器件配置數據與器件是融合在一基于反熔絲結構的器件配置數據與器件是融合在一起的起的。我們了解一下反熔絲器件的編程過程:在默認情況下編程器編程時,首先測試反熔絲是否被編程,然后持續進行驗證,并把其狀態與配置文件中定義的狀態進行對比。所以編程器是可以讀取器件的每個單元狀態的,但是一旦編程之一旦編程之后,就會設置一個專門的反熔絲,來防止隨后從器件中讀后,就會設置一個專門的反熔絲,來防止隨后從器件中讀取任何配置數據。取任何配置數據。因此,即使器件被

28、破壞,編程和未編程的器件的反熔絲顯示也完全一樣,實際上所有的反熔絲都嵌入內部的金屬層,讓讓“逆向工程逆向工程”根本不可能實現根本不可能實現。 可編程邏輯器件原理可編程邏輯器件原理(4) 反熔絲結構反熔絲結構的器件還有其他的優勢其他的優勢,比如在功耗上功耗上。實際上基于反熔絲結構的器件只消耗等價的基于只消耗等價的基于SRAM結構結構器件功耗的20%,這樣的數字確實非常讓人興奮。同時,反熔絲器件的面積也是非常的小面積也是非常的小,它的內部互連延遲非常的小內部互連延遲非常的小,比同等的SRAM單元節省了大量的面積。反熔絲結構的器件。其優勢總會給自己帶來麻煩,就像能量守恒定律一樣,也許自然界的規律都是

29、這樣的。反熔絲器件相對SRAM器件來說,制造工藝復雜的多制造工藝復雜的多,由于這個原因,反熔絲器件總是落后于基于SRAM工藝器件至少一代。另外,反熔絲工藝還有一個不足之處在于它是它是OTP器件器件,一旦編程編程完畢完畢,其功能就固定了,不能再進行改變不能再進行改變,這將導致在開發初期的難度非常高。 可編程邏輯器件原理可編程邏輯器件原理1.3.3 基于基于SRAM的可編程技術的可編程技術半導體RAM有兩種類型,一種為動態動態RAM (DRAM),另外一種為靜態靜態RAM(SRAM)。對于,每個單元是由一個“晶體管晶體管電容電容”組構成的,這也是其稱為動態的原因:需要不斷給電容充電,才能保持數據需

30、要不斷給電容充電,才能保持數據。每個單元必須周期性地補充電荷,這種操作習慣上稱為“刷新刷新”。DRAM雖然需要復雜的刷新電路需要復雜的刷新電路才能工作,但是其優點在優點在于可以將存儲容量做得非常大于可以將存儲容量做得非常大。然而,對于我們所討論的可編程邏輯器件來說,DRAM沒有任何吸引力,而SRAM反而成為可編程技術的重要實現反而成為可編程技術的重要實現方式,也是目前主流方式,也是目前主流FPGA所采用的技術。所采用的技術。可編程邏輯器件原理可編程邏輯器件原理SRAM即靜態靜態RAM,一旦將值寫入SRAM單元,只要不放只要不放電,除非被刻意修改,其值是不會改變的電,除非被刻意修改,其值是不會改

31、變的。以單個基于SRAM技術的可編程單元來舉例,如圖1-10所示。整個單元包括一個多晶體管SRAM存儲元件,此元件的輸出驅動著一個額外的控制晶體管,根據存儲的內容為邏輯0或者1,晶體管將被置為關(OFF)或者開(ON)狀態。大部分的FPGA都采用SRAM結構。我們熟知的兩家FPGA公司Xilinx和Altera公司所有的FPGA都基于SRAM結構。 圖1-10 SRAM基本可編程單元 可編程邏輯器件原理可編程邏輯器件原理基于基于SRAM結構結構的FPGA的最大優勢在于可以非??焖僮畲髢瀯菰谟诳梢苑浅?焖俚乩每删幊碳夹g實施和驗證新的想法地利用可編程技術實施和驗證新的想法。更有創意的是,?;赟

32、RAM結構的FPGA的另外一個優勢在于這些器件能夠站在技術的最前沿能夠站在技術的最前沿。FPGA生產廠家可以利用許多其他利用許多其他的致力于存儲設備公司在工藝領域投入的巨大研發資源,的致力于存儲設備公司在工藝領域投入的巨大研發資源,擴大擴大FPGA的規模和提高的規模和提高FPGA的工藝水平的工藝水平,比如目前Xilinx公司最先進的FPGA工藝在40 nm,而Altera公司的FPGA最先進的工藝水平在45 nm。這一點容易理解,因為因為基于基于SRAM結構的結構的FPGA可以與其他存儲器件共享相同的工可以與其他存儲器件共享相同的工藝技術藝技術。 可編程邏輯器件原理可編程邏輯器件原理然而,基于

33、SRAM結構的FPGA其不足之處也是比較多的:(1) 每個存儲單元消耗大量的硅片面積每個存儲單元消耗大量的硅片面積,因為這些單元是由4個或6個晶體管配置成一個鎖存器而形成的。(2) 當系統掉電之后,所有配置的數據都會丟失系統掉電之后,所有配置的數據都會丟失,所以在系統重新上電之后需要重新進行配置。 可編程邏輯器件原理可編程邏輯器件原理(3) 基于基于SRAM的FPGA很難保護知識產權很難保護知識產權,因為配置文件一般都存儲在外部存儲器當中,所以很難保證別人不會很難保證別人不會讀出存儲器當中的數據讀出存儲器當中的數據。雖然目前沒有商業工具能夠讀取配置文件的內容并產生原理圖和網表文件,但是直接從存

34、儲直接從存儲器當中拷貝出數據然后再復原你的產品卻還不是超出這些器當中拷貝出數據然后再復原你的產品卻還不是超出這些“逆向工程師逆向工程師”的能力范圍的的能力范圍的,只是看是不是值得花費時間和精力。 可編程邏輯器件原理可編程邏輯器件原理幸好目前基于基于SRAM的FPGA支持比特流加密比特流加密,這種情況下,最終配置的數據經過加密之后存入外部存儲器件最終配置的數據經過加密之后存入外部存儲器件。密鑰本身經過密鑰本身經過FPGA的的JTAG端口載入一個端口載入一個FPGA內部專用內部專用基于基于SRAM的寄存器的寄存器,與一些相關邏輯配合,密鑰在加密配置比特流載入器件時對比特流解密運算。但是這也造成了一

35、定的不便,我們要保持這個存儲密鑰的寄存器有效,需要要保持這個存儲密鑰的寄存器有效,需要在電路板上面有一組備用電池在電路板上面有一組備用電池,而且這個電池模塊需要長期有效(比如10年),這樣也增加了電路板的面積。 可編程邏輯器件原理可編程邏輯器件原理1.3.4 基于基于FLASH或或E2PROM的可編程技術的可編程技術基于FLASH或E2PROM的FPGA器件與基于SRAM的器件一樣,所有的配置單元都連接在一條長的寄存器鏈上,所有的配置單元都連接在一條長的寄存器鏈上,這些器件可以離線用編程器進行編程這些器件可以離線用編程器進行編程,有些版本也可以使用在系統編程在系統編程(ISP),但是其編程時間

36、是基于編程時間是基于SRAM工藝的工藝的3倍左右倍左右。盡管如此,它也有自己的優勢:(1) 編程之后數據是非易失性編程之后數據是非易失性的,所以意味著器件上電上電之后可以立即執行,沒有延時之后可以立即執行,沒有延時。這個特性有助于系統組件的初始化、處理器喚醒緊急任務的執行緊急任務的執行,這也是基于FLASH的FPGA器件被廣泛應用于航天和軍事領域的原因被廣泛應用于航天和軍事領域的原因。 可編程邏輯器件原理可編程邏輯器件原理(2) 為了保護配置數據保護配置數據,這些器件中使用了多位的密鑰多位的密鑰,范圍可以從50位到幾百位。當你對器件編程后,可以載入你的用戶定義密鑰來確保配置數據的安全。載入密鑰

37、之后,從從器件中讀出數據或寫入新數據的唯一途徑是通過器件中讀出數據或寫入新數據的唯一途徑是通過JTAG端口端口載入你的密鑰的副本載入你的密鑰的副本,那么是不是還有破解的可能呢?目前JTAG的速度大約是幾十兆赫,這樣就意味著將所有的可的速度大約是幾十兆赫,這樣就意味著將所有的可能的值窮舉一遍來破解密鑰需要能的值窮舉一遍來破解密鑰需要10億年億年。(3) 雙晶體管E2PROM和FLASH單元的尺寸尺寸大約是單晶體管的2.5倍,但是它仍然比比SRAM的個頭要小的個頭要小,所以基于FLASH的器件的內部邏輯更加緊密,而且會減少互連延遲內部邏輯更加緊密,而且會減少互連延遲。 可編程邏輯器件原理可編程邏輯

38、器件原理(4) 基于FLASH的FPGA器件可以實現真正的單芯片解真正的單芯片解決方案決方案,因為它無需額外的配置芯片,所以可以在很多場無需額外的配置芯片,所以可以在很多場合替代合替代CPLD。基于FLASH器件的是其制作工藝其制作工藝除了標準的CMOS工藝之外,還需要大約5個額外的處理步驟,這樣,將落后于基于落后于基于SRAM工藝的器件至少一代;同時靜態功耗工藝的器件至少一代;同時靜態功耗也很大也很大,因為它需要維持大量的內部負載電阻。 可編程邏輯器件原理可編程邏輯器件原理所以,可以這樣總結FPGA的各種結構的特點各種結構的特點:(1) 基于FLASH結構的FPGA與反熔絲結構的FPGA不同

39、,但是與基于SRAM結構的FPGA一樣具有可重復編程性具有可重復編程性;(2) 基于FLASH結構的FPGA擁有和基于SRAM結構的FPGA同樣的制造過程,同時擁有基于反熔絲技術FPGA的同樣低的功耗低的功耗;(3) 基于FLASH結構的FPGA相對來說速度更快速度更快。 可編程邏輯器件原理可編程邏輯器件原理1.4 通用通用FPGA的構成結構的構成結構談起FPGA的結構,通常人們是這樣認為的:FPGA的的基本結構基本結構是由大量的相對較小大量的相對較小的可編程可編程邏輯塊邏輯塊“島島”嵌入在可編程可編程互連互連的的“海?!崩锩鏄嫵傻摹D敲催€有人會和ASIC 器件進行對比,提起FPGA都說是一種

40、中度顆粒的器件或者都說是一種中度顆粒的器件或者說是粗顆粒器件說是粗顆粒器件。其實,FPGA是在ASIC的基礎上發展起來的,一開始,FPGA的發明者還是按照ASIC的思維模式來設計新型的可編程邏輯器件的。從人們對FPGA顆粒的研究就可以了解FPGA新型結構演變的過程。 可編程邏輯器件原理可編程邏輯器件原理1.4.1 現代現代FPGA的基本邏輯單元的基本邏輯單元Xilinx公司的FPGA的基本邏輯單元稱為Slice(切片切片),而Altera公司的FPGA的基本邏輯單元稱為LE(Logic Element)。一個Slice包含兩個核心邏輯單元LC(Logic Cell)。Slice的結構圖如圖1-

41、11所示。一個LC是由一個4輸入的查找表輸入的查找表(LUT)、一個多路、一個多路復用器和一個寄存器復用器和一個寄存器組成的。其結構如圖1-12所示。圖1-11 Slice的基本結構圖(兩個LC) 圖1-12 LC的結構圖 可編程邏輯器件原理可編程邏輯器件原理MUX和D觸發器的作用都很熟悉,介紹查找表的原理。 查找表查找表(Look-Up-Table)簡稱簡稱LUT,其本質上為本質上為RAM,如4輸入LUT,即包括有4位地址線的161的RAM在數字電路中,n輸入的邏輯運算最多只能輸出2n個結果,同樣的道理,4輸入LUT共有16種輸出結果。若將這若將這16種結果全部存儲下來種結果全部存儲下來,就

42、可可以根據不同的地址輸入以根據不同的地址輸入“查找查找”出相應輸出結果出相應輸出結果。LUT實現4輸入與門的示例如表1-1所示。 可編程邏輯器件原理可編程邏輯器件原理可編程邏輯器件原理可編程邏輯器件原理下面我們舉例來理解查找表的概念。如圖1-13所示,a、b、c、d由由FPGA芯片的管腳輸入后進入可編程連線芯片的管腳輸入后進入可編程連線,然后作為地址線連到作為地址線連到LUT,LUT中已經事先寫入了所有可能的中已經事先寫入了所有可能的邏輯結果,通過地址查找到相應的數據然后輸出邏輯結果,通過地址查找到相應的數據然后輸出,這樣組組合邏輯就實現了合邏輯就實現了。該電路中D觸發器是直接利用LUT后面的

43、D觸發器來實現的。時鐘信號時鐘信號CLK由由I/O腳輸入后進入芯片腳輸入后進入芯片內部的時鐘專用通道,直接連接到觸發器的時鐘端內部的時鐘專用通道,直接連接到觸發器的時鐘端。觸發觸發器的輸出與器的輸出與I/O腳相連,把結果輸出到芯片管腳。腳相連,把結果輸出到芯片管腳。這樣PLD就完成了圖1-13所示電路的功能。(以上這些步驟都是由軟件自動完成的,不需要人為干預。) 可編程邏輯器件原理可編程邏輯器件原理圖1-13 查找表示例 可編程邏輯器件原理可編程邏輯器件原理這個電路是一個很簡單的例子,只需要一個LUT加上一個觸發器就可以完成。對于一個一個LUT無法完成的電路,就需要通無法完成的電路,就需要通過

44、進位邏輯將多個單元相連過進位邏輯將多個單元相連,這樣FPGA就可以實現復雜的邏就可以實現復雜的邏輯運算。輯運算。LUT僅僅是FPGA最基本的組成。目前來說,FPGA的復雜程度遠遠不能用LUT來描述。在Xilinx FPGA中,LUT組成組成LC,進一步形成進一步形成Slice(切片切片),。而Slice上一級是上一級是CLB(可配置邏輯塊可配置邏輯塊)。CLB的實際數量會根據器件的不同而不同,CLB之間的可編程互連是通過可配置的之間的可編程互連是通過可配置的開開關矩陣關矩陣組成的組成的,這樣可編程邏輯器件原理可編程邏輯器件原理Xilinx FPGA中,這樣在同一同一Slice的的LC之間有快速

45、互連之間有快速互連。在同一同一CLB中的中的Slice之之間稍慢些間稍慢些。接下來是接下來是CLB之間的互連之間的互連,這樣可以比較容易地把它們彼此連在一起,同時也不會增加太多的互連延遲,從而達到優化平衡。 可編程邏輯器件原理可編程邏輯器件原理1.4.2 Xilinx Spartan-3 FPGA的基本結構的基本結構查找表和多路復用器是查找表和多路復用器是FPGA的最基本的結構的最基本的結構。但是FPGA的結構不是僅僅這么簡單的,由于應用的不同,每款FPGA的內部結構都有所不同??傮w來說,現代FPGA由如下7個部分組成個部分組成:,如圖1-14所示。下面我們以Spartan-3系列FPGA為例

46、介紹主流基于中度顆粒FPGA的基本結構。可編程邏輯器件原理可編程邏輯器件原理圖1-14 FPGA結構圖 可編程邏輯器件原理可編程邏輯器件原理可編程邏輯器件原理可編程邏輯器件原理可編程邏輯器件原理可編程邏輯器件原理1可編程輸入可編程輸入/輸出單元輸出單元可編程輸入/輸出單元(I/O單元,IOB)是FPGA與外界電與外界電路的接口路的接口,用于完成不同的電器特性下對輸入完成不同的電器特性下對輸入/輸出信號的輸出信號的驅動以及匹配的要求驅動以及匹配的要求。如今FPGA的通用管腳數目達上千個,為了FPGA在電子設備中有更多的兼容性有更多的兼容性,可編程輸入/輸出單元還設計了許多巧妙且非常實用的功能:

47、可編程邏輯器件原理可編程邏輯器件原理(1) 通過軟件的編程,可以適配不同的電器標準以及物適配不同的電器標準以及物理特性理特性。不同器件廠商的不同系列FPGA所支持的I/O標準有所不同,常用的常用的I/O標準標準大部分器件都支持單端I/O標準LVCMOS、LVTTL、HSTL、SSTL、GTL、PCI等,差分I/O標準有:LVDS、HT、LVPECL、BLVDS、差分HSTL、SSTL等。另外,通過軟件編程可以配置可以配置FPGA每個接口塊每個接口塊的不同電壓標準的不同電壓標準,可支持1.8 V、2.5 V、3.3 V等。 可編程邏輯器件原理可編程邏輯器件原理(2) FPGA的I/O口單元支持一

48、些特殊的功能支持一些特殊的功能,包括可編程配置配置I/O口的驅動能力和上下拉電阻口的驅動能力和上下拉電阻等。在差分信號傳輸差分信號傳輸中中,為了使得輸入或輸出端能夠將接收器或者驅動器的阻抗阻抗匹配匹配,在I/O口單元增加了數控阻抗增加了數控阻抗(DCI)技術技術,DCI還具備補償溫度變化和供電電壓波動的功能。高性能的高性能的FPGA支持支持高級高級Select/IO資源,接收器的最高頻率可達到資源,接收器的最高頻率可達到11.2 Gb/s。I/O口的新的功能給FPGA的應用增添了很多亮點,使得FPGA在與ASIC的對抗中顯得更為靈活多變??删幊踢壿嬈骷砜删幊踢壿嬈骷?3) Sparta

49、n-3系列FPGA的I/O口管腳都有可編程控制的可編程控制的上下拉電阻上下拉電阻,可以在ISE實現過程中,通過約束管腳使其有效。另外,還可以約束管腳的驅動電流大小約束管腳的驅動電流大小,根據電平標準不同,可以支持的驅動電流值有所不同,還可以編程控制管腳的回轉快慢,每個編程控制管腳的回轉快慢,每個I/O管腳都有保持電路,在所有驅動都撤銷時,管腳還會保管腳都有保持電路,在所有驅動都撤銷時,管腳還會保持原來的值持原來的值。I/O管腳支持支持DCI,有效地降低了信號的反射,提高了信號,有效地降低了信號的反射,提高了信號的質量的質量。 可編程邏輯器件原理可編程邏輯器件原理2可配置邏輯塊可配置邏輯塊(CL

50、B)可配置邏輯塊是Xlinx FPGA內部的基本邏輯單元,也是實現時序電路和組合邏輯的主要資源實現時序電路和組合邏輯的主要資源。在Altera器件中,用邏輯陣列塊(LAB)代替CLB,實際上兩者之間沒有什么區別。CLB的實際數量和特性會根據器件的不同而不同,我們也可以理解CLB是反映是反映FPGA規模和能力的一個重要標志。規模和能力的一個重要標志。CLB以陣列形式排列在以陣列形式排列在FPGA中中,如圖1-15所示。 可編程邏輯器件原理可編程邏輯器件原理圖1-15 FPGA CLB 結構圖 可編程邏輯器件原理可編程邏輯器件原理在,每個每個CLB包括包括4個個Slice,同時包含一個可配置開關矩

51、陣可配置開關矩陣和一些其他資源,包括多路復用器、觸多路復用器、觸發器發器等。其中,開關矩陣不僅可以非常靈活地對其進行配開關矩陣不僅可以非常靈活地對其進行配置,而且提供了本置,而且提供了本CLB和別的和別的CLB之間的靈活互連之間的靈活互連。4個Slice分成兩組,每組Slice按列排布,如圖1-16所示,并且帶有獨立的進位鏈獨立的進位鏈。左邊的一組左邊的一組Slice主要完成邏輯和存主要完成邏輯和存儲功能,稱為儲功能,稱為SLICEM;右邊的一組右邊的一組Slice主要完成邏輯功能,主要完成邏輯功能,稱為稱為SLICEL。這樣一來,SLICEL降低了CLB的功耗和減少了CLB的空間,同時更有利

52、于SLICEM更好地發揮。所以每每個個CLB模塊不僅可以用于實現組合邏輯、時序邏輯,還可模塊不僅可以用于實現組合邏輯、時序邏輯,還可以配置為分布式以配置為分布式RAM和分布式和分布式ROM,如圖1-16所示??删幊踢壿嬈骷砜删幊踢壿嬈骷韴D1-16 Spartan-3E CLB結構圖 可編程邏輯器件原理可編程邏輯器件原理Slice是Xilinx公司定義的基本邏輯單位基本邏輯單位。一個Slice由兩個4輸入或者6輸入查找表函數、進位邏輯和存儲單元組成。不管是SLICEM還是SLICEL,都包括如下幾個部分:。SLICEM還包還包括兩個括兩個161的分布式的分布式RAM塊塊(RAM16)和兩

53、個和兩個16位的移位位的移位寄存器寄存器SRL16。 可編程邏輯器件原理可編程邏輯器件原理算術邏輯單元算術邏輯單元包括一個異或門和一個專用與門。一個一個異或門可以是一個異或門可以是一個Slice,實現,實現2位全加操作;專用與門可以位全加操作;專用與門可以用于提高乘法器的效率。用于提高乘法器的效率。進位邏輯單元由專用進位信號和函數復用器組成,用于實現快速算術加減法操作和提高用于實現快速算術加減法操作和提高CLB的處理速度的處理速度。4輸入函數發生器用于實現4輸入LUT、分布式RAM和16位移位寄存器。 可編程邏輯器件原理可編程邏輯器件原理3數字時鐘管理單元數字時鐘管理單元(DCM)FPGA內部

54、所有的同步數字邏輯都需要由時鐘信號來驅動。時鐘源需要從外部引入時鐘源需要從外部引入,通過專用的專用的FPGA時鐘輸入管時鐘輸入管腳腳進入FPGA,接著傳送到整個器件并連接到適當的寄存器當中。業界知名的FPGA都提供數字時鐘管理模塊??删幊踢壿嬈骷砜删幊踢壿嬈骷黼S著FPGA能夠處理的數字系統的能力越來越強,所需要的時鐘也越來越復雜,于是就有了時鐘樹時鐘樹的概念。時鐘樹就是在在FPGA中有主時鐘,同時存在由主時鐘產生的子時鐘,中有主時鐘,同時存在由主時鐘產生的子時鐘,這樣就形成一種這樣就形成一種“樹樹”一樣的結構一樣的結構,時鐘樹結構能保證所時鐘樹結構能保證所有觸發器接收到的信號盡可能地一

55、致有觸發器接收到的信號盡可能地一致。不過我們可以想象,為了解決這個問題,時鐘樹都采用專時鐘樹都采用專門的走線,與通用的可編程模塊分離,以避免抖動的產生門的走線,與通用的可編程模塊分離,以避免抖動的產生。這也是在FPGA設計原則中強調的原則之一,時鐘一定要走時鐘一定要走全局管腳。全局管腳。 可編程邏輯器件原理可編程邏輯器件原理關于時鐘還有一個重要的概念就是時鐘管理器時鐘管理器。在通常情況下,都是將外部時鐘接到時鐘專用管腳,然后通過專外部時鐘接到時鐘專用管腳,然后通過專用管腳連接的時鐘管理器模塊產生一定數量的子時鐘用管腳連接的時鐘管理器模塊產生一定數量的子時鐘。這些子時鐘可以用來驅動內部時鐘樹,或

56、者可以輸出作為系統別的器件的時鐘。不同系列的FPGA的時鐘管理器的能力有所不同,但是都有下面共有的特性: 可編程邏輯器件原理可編程邏輯器件原理1) 來自外部世界的理想時鐘信號在通過系統通道時理想時鐘信號在通過系統通道時,時時鐘沿將會有大小不一的抖動鐘沿將會有大小不一的抖動(即來的早一些或晚些即來的早一些或晚些),這樣在,這樣在某一個時鐘點上將是多個時鐘沿的重疊而產生一個某一個時鐘點上將是多個時鐘沿的重疊而產生一個“模糊模糊”時鐘時鐘,如圖1-17所示。FPGA的的時鐘管理器可以檢測并糾正時鐘管理器可以檢測并糾正抖動,提供一個抖動,提供一個“干凈干凈”的子時鐘信號的子時鐘信號。所以在設計FPGA

57、系統時,CLK要從專用時鐘管腳引入。如果要產生子時鐘,要從專用時鐘管腳引入。如果要產生子時鐘,則最好采用則最好采用DCM來產生來產生。例如有一個100 MHz的時鐘,在FPGA器件內部傳輸時是有延時的,雖然說電信號傳輸的速率很高,但是此的。例如,100 MHz信號的周期是信號的周期是10 ns,所以只要延時幾個納秒,所以只要延時幾個納秒,信號就會嚴重失真信號就會嚴重失真,而經過DCM之后就可以避免這種抖動的產生??删幊踢壿嬈骷砜删幊踢壿嬈骷韴D1-17 抖動示意圖 可編程邏輯器件原理可編程邏輯器件原理2) 在許多情況下,外部時鐘往往在頻率上滿足不了系統外部時鐘往往在頻率上滿足不了系統要求

58、。要求。這表現在兩個方面,一方面是時鐘的數量在兩個方面,一方面是時鐘的數量,比如系統需要若干個不同頻率的時鐘,如果都從外部管腳引入,則增加了很多成本;另一方面是時鐘頻率另一方面是時鐘頻率,如高頻率的時鐘高頻率的時鐘信號,在信號,在PCB板上傳輸極易受外界環境的影響,所以電路板上傳輸極易受外界環境的影響,所以電路板上的時鐘頻率盡量低一些板上的時鐘頻率盡量低一些,才能保障系統穩定工作。我們通過DCM就可以解決這兩個問題,FPGA管腳輸入的低管腳輸入的低頻率的時鐘信號可以通過頻率的時鐘信號可以通過DCM轉化成高頻率時鐘信號轉化成高頻率時鐘信號,比如說系統輸入時鐘為50 MHz,需要產生三個輸出時鐘:

59、40 MHz、25 MHz、200 MHz。那么用DCM對輸入時鐘進行五分之四、兩分頻、四之后,可分別產生所需時鐘,非常方便。 可編程邏輯器件原理可編程邏輯器件原理3) 相位調整在數字系統中應用得也很多,比如PCIE或者DDR控制器接口都需要內部時鐘與外部時鐘之間有相位偏控制器接口都需要內部時鐘與外部時鐘之間有相位偏移移。時鐘管理器允許在某些固定的相位進行調整某些固定的相位進行調整,比如120或者240等,在時鐘樹中也允許對每個子時鐘進行在時鐘樹中也允許對每個子時鐘進行相位調整相位調整,如圖1-18所示。 可編程邏輯器件原理可編程邏輯器件原理圖1-18 相位調整示意圖 可編程邏輯器件原理可編程

60、邏輯器件原理4) 設想在時鐘樹的子時鐘,經過DCM之后其相位和頻率都與輸入時鐘有關系,但是,經過時鐘管理器之后的時鐘經過時鐘管理器之后的時鐘一定有延時一定有延時,這時如果如果DCM沒有對此延時進行處理,子時沒有對此延時進行處理,子時鐘輸出稍晚于輸入時鐘鐘輸出稍晚于輸入時鐘,就會帶來很多問題,也就是。因而時鐘管理器就將子時鐘同時作為輸入,來比較兩個信號,并給子時鐘一個專門的延遲,使得子時鐘和主時使得子時鐘和主時鐘重新對齊鐘重新對齊,如圖1-19所示。 可編程邏輯器件原理可編程邏輯器件原理圖1-19 時鐘自動校正示意圖 可編程邏輯器件原理可編程邏輯器件原理Spartan-3采用DCM為數字設計提供了靈活、全面的時鐘資源,除了XC3S50僅有兩個DCM之外,其他Spar

溫馨提示

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

評論

0/150

提交評論