A. FPGA與CPLD的區別在哪
fpga與cpld的區別
fpga是現場可編程邏輯門陣列的簡稱,是電子設計的一個里程碑。cpld是復雜可變成邏輯器件的簡稱。盡管fpga和cpld都是可編程asic器件,有很多共同特點,但由於cpld和fpga結構上的差異,具有各自的特點:
1)、cpld更適合完成各種演算法和組合邏輯,fp
ga更適合於完成時序邏輯。換句話說,fpga更適合於觸發器豐富的結構,而cpld更適合於觸發器有限而乘積項豐富的結構。
2)、cpld的連續式布線結構決定了它的時序延遲是均勻的和可預測的,而fpga的分段式布線結構決定了其延遲的不可預測性。
3)、在編程上fpga比cpld具有更大的靈活性。cpld通過修改具有固定內連電路的邏輯功能來編程,fpga主要通過改變內部連線的布線來編程;fp
ga可在邏輯門下編程,而cpld是在邏輯塊下編程。
4)、fpga的集成度比cpld高,具有更復雜的布線結構和邏輯實現。
5)、cpld比fpga使用起來更方便。cpld的編程採用e2prom或fastflash技術,無需外部存儲器晶元,使用簡單。而fpga的編程信息需存放在外部存儲器上,使用方法復雜。
6)、cpld的速度比fpga快,並且具有較大的時間可預測性。這是由於fpga是門級編程,並且clb之間採用分布式互聯,而cpld是邏輯塊級編程,並且其邏輯塊之間的互聯是集總式的。
7)、在編程方式上,cpld主要是基於eeprom或flash存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。cpld又可分為在編程器上編程和在系統編程兩類。fpga大部分是基於sram編程,編程信息在系統斷電時丟失,每次上電時,需從器件外部將編程數據重新寫入sram中。其優點是可以編程任意次,可在工作中快速編程,從而實現板級和系統級的動態配置。
8)、cpld保密性好,fpga保密性差。
9)、一般情況下,cpld的功耗要比fpga大,且集成度越高越明顯。
B. 快要答辯了,我想問的是FIR數字濾波器的原理就是他所採用的演算法嗎
分布式演算法是FPGA過程中的演算法優化,根據FIR濾波器的結構特點,將加乘單元進行化簡,簡化計算單元,縮短計算時間。
FIR設計原理應該是用MATLAB的fir1()函數得到的系數,將系數直接應用到FPGA中,如用VHDL編寫代碼的話,可將系數設為常量。
FIR原理是濾波的原理,就是h(n)與輸入信號卷積後得到輸出序列y(n).
演算法是在設計過程中的優化,二者不同。
C. fpga實現可編程的原理是什麼,它的結構,性能各有什麼特點
盡管FPGA和CPLD都是可編程ASIC器件,有很多共同特點,但由於CPLD和FPGA結構上的差異,具有各自的特點: ①CPLD更適合完成各種演算法和組合邏輯,FP GA更適合於完成時序邏輯。換句話說,FPGA更適合於觸發器豐富的結構,而CPLD更適合於觸發器有限而乘積項豐富的結構。 ②CPLD的連續式布線結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式布線結構決定了其延遲的不可預測性。 ③在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內連電路的邏輯功能來編程,FPGA主要通過改變內部連線的布線來編程;FP GA可在邏輯門下編程,而CPLD是在邏輯塊下編程。 ④FPGA的集成度比CPLD高,具有更復雜的布線結構和邏輯實現。 ⑤CPLD比FPGA使用起來更方便。CPLD的編程採用E2PROM或FASTFLASH技術,無需外部存儲器晶元,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復雜。 ⑥CPLD的速度比FPGA快,並且具有較大的時間可預測性。這是由於FPGA是門級編程,並且CLB之間採用分布式互聯,而CPLD是邏輯塊級編程,並且其邏輯塊之間的互聯是集總式的。 ⑦在編程方式上,CPLD主要是基於E2PROM或FLASH存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。CPLD又可分為在編程器...
D. 對直流信號進行fir濾波。比如,直流3v,帶某種雜訊,ad采樣信號在3附近。如何利用fir濾波實現輸出最優值
在數字信號處理系統中,有限脈沖響應(finite impulse response,FIR)數字濾波器是一個非常重要的基本單元。近年來,由於FPGA具有高速度、高集成度和高可靠性的特點而得到快速發展。隨著現代數字通信系統對於高精度、高處理速度的需求,越來越多的研究轉向採用FPGA來實現FIR濾波器。而對於FIR濾波器要充分考慮其資源與運行速度的合理優化,各種不同的FIR濾波結構各具優缺點,在了解各種結構優缺點後才能更好地選擇合適結構來實現FIR濾波。
1 FIR數字濾波器
FIR數字濾波器由有限個采樣值組成,設計中在滿足幅值特性時,還能保證精確、嚴格的相位特性,因此在信號處理等領域得到廣泛的應用。
對於FIR濾波器,其輸出y(n)表示為如下形式:
式中:N為濾波器的階數(或抽頭數);x(i)表示第i時刻的輸入樣本;h(i)為FIR濾波器的第i級抽頭系數。
由於FIR濾波器的沖擊響應為一個有限序列,其系統函數可表示為:
FIR濾波器的基本結構如圖1所示。FIR濾波器只在原點處存在極點,所以這使得FIR濾波器具有全局穩定性。同時FIR濾波器滿足線性相位條件,其沖擊響應序列為實數且滿足奇對稱或偶對稱條件,即:
2 實現方法
運用FPGA來實現FIR數字濾波器的結構多種多樣,但是主要有以下幾類:串列結構、並行結構、轉置型結構、基於FFT演算法結構、分布式結構。其他類型的FIR濾波器結構都可以由以上幾種結構衍生而來。
2.1 串列結構
由表達式(1)可知,FIR濾波器實質是做一個乘累加運算,其濾波器的階數決定了一次乘累加的次數,其串列結構如圖2所示。
串列結構的FIR濾波器結構簡單,硬體資源佔用少,只需要復用1個乘法器和1個加法器,所以成本較低。但是,這種結構的FIR濾波器要經過多個時鍾周期才有輸出,同時,內部時鍾周期還受到乘法器運算速度的影響,所以該結構的FIR濾波器處理速度慢,只適用於濾波階數較低且處理速度要求低的系統。
2.2 並行結構
將串列結構的FIR濾波器展開就可以得到並行結構的FIR濾波器,並行FIR濾波器結構又稱作直接型FIR濾波器結構,這種結構是直接根據圖1的濾波器結構,用多個乘法器和加法器並行實現。通常考慮到其濾波器系數的對稱性,先對輸入值進行加法運算,再進行乘法運算,最後累加輸出,以此來減少乘法器的個數,其結構如圖3所示。
並行結構的FIR濾波器在1個周期內可以完成1次濾波,運行速度快,雖然利用濾波系數對稱性,但仍要佔用大量的乘法器和加法器,特別對於濾波階數高的濾波器,其資源佔用較多,如對於256階的濾波器,其需要128個乘法器來實現。為提高濾波器速度,常引入流水線結構,即在每次加法或者乘法運算後加入1個寄存器存儲數據,使得濾波器可以運行在更高的頻率上。
2.3 轉置型結構
根據轉置定理,如果將網路中所有的支路方向倒轉,並將輸入x(n)和輸出y(n)相互交換,則其系統函數H(z)不變。通過轉置定理,將並行結構的FIR濾波器變換就可以得到轉置型FIR濾波器,其結構如圖4所示。
基於並行結構的轉置型FIR濾波器實現了數據的並行輸入,在1個周期內就能完成1次濾波,並且各級結構相同,在每個階段都可以讀出數據,可以對濾波階數進行擴展或者縮減,實現任意階數的濾波器。但是由於基於的是並行結構,便有著並行結構的一些缺點,主要是對於高階的濾波器,其資源佔用量是巨大的,設計成本高。雖然這樣,轉置型FIR濾波器仍是應用廣泛的一種濾波器。
2.4 基於FFT的結構
應用快速傅里葉變換(fast fourier transform,FFT)實現FIR濾波器是一種快速實現濾波演算法的重要途徑。由式(1)可知,FIR濾波器的輸出y(n)是輸入x(n)與系統沖擊響應序列h(n)的卷積,應用FFT可以快速實現卷積變換。如圖5所示,先將輸入信號x(n)通過FFT變換為它的頻譜采樣值X(k),然後再與FIR濾波器的頻響采樣值H(k)相乘,H(k)可事先存放在存儲器中,最後再將乘積X(k)H(k)通過快速傅里葉反變換(IF-FT)還原為時域序列,即得到輸出y(n)。
為實現FFT,根據兩有限長序列的線性卷積可用其循環卷積代替而不發生混疊,必須選擇循環卷積長度N≥N1+N2-1,即將x(n)和h(n)補零至長度為N的序列,即:
在基於FFT的FIR濾波器結構中,求X(k),H(k)以及反傅里葉變換y(n)需要的乘法次數均為N/2log2N,而計算X(k)H(k)需要N次乘法,所以基於FFT的總乘法次數為mf=3/2Nlog2N+N。由於h(n)滿足式(3)條件,所以直接卷積所需的乘法次數為md=1/2N1N2。假設N1=N2,則比較這兩種乘法計算量有:
從表1可知,當N1<42時,FFT法的運算量小於直接卷積的運算量,當N1=42時,FFT法的運算量與直接卷積的運算量相當,當N1>42時,FFT法的運算量大於直接卷積的運算量,並且隨著N1增加,FFT法的運算速度越來越快,特別是N1=8 192時,FFT法的運算速度與直接卷積相比快上將近100倍。
2.5 分布式結構
2.5.1 分布式演算法原理
分布式演算法(distributed arithmetic,DA)於1973年就由Croisier提出,但是直到FPGA出現,才廣泛的被應用於FPGA中計算乘累積和。
對於有符號數x(n)可以用下式的補碼形式表示:
對於式(7)中的h(i)xb(n-i)代表著輸入數據x(n-i)的第i位與抽頭系數h(i)的乘積,對於FIR濾波器,其系數h(i)是常數,所以可以事先構造一個查找表。該查找表存儲所有h(i)xb(n-i)的乘積值,通過輸入(xb(N-1),xb(N-2),…,xb(0))對該表定址,然後將查得的值乘上2b後移位累加便得到濾波器輸出y(n)。該查找表構造規則如表2所示。
2.5.2 基於分布式演算法的FIR濾波器結構
基於分布式演算法的FIR濾波器主要有3種結構類型。
(1)第一種結構為串列分布式結構。串列分布式FIR濾波器的原理為,首先用所有N個輸入量的最低位對DA查找表進行定址查值,得到一個部分積,將部分積右移一位即相當於除以2後放到寄存器中暫存。同時,N個輸入量的次低位開始對DA查找表進行定址查值,得到另一個部分積,把該部分積與上一個儲存在寄存器中的值進行相加,相加後的值再右移一位放到寄存器中。以此重復循環累加,直到所有位數都定址完
成,注意最高位定址後的部分積是相減,最後所得到的值就是所需要的結果。
當N過大,即FIR濾波器的濾波階數很高時,採用一個查找表來實現將使得存儲查找表的ROM變得十分龐大。為此可採用部分表結構,即將查找表劃分為多個部分,N個輸入量的同一位對應不同的部分表定址。圖6所示即為基於4輸入部分表結構的串列DA結構。
(2)第二種結構為並行分布式結構。並行分布式結構就是將N個輸入量的不同位進行同時查表,而相同位送入同一個ROM定址,不同位有不同的ROM。其結構如圖7所示。
第三種結構為串並結合分布式結構。它是一種折中方案,既要求速度不太高又要求資源佔用少。對於串列分布式演算法,是一次一位(one bit-at-a-time,1BAAT)查找表,而並行分布式演算法是一次B位(B bits-at-a-time)。所以串並結合分布式演算法採用一次多位,如2BAAT,3BA-AT。圖8所示為4BAAT查找表結構圖。
圖8中位數B是4的倍數,SRL為移位寄存器。SRL中第1行從右邊數第1列為數據的0位,第2列為數據的1位,第3列為數據的2位,第4列為數據的3位。類似地,第2行右數第1列為數據的4位,第2列為數據的5位,第3列為數據的6位,第4列為數據的7位。以後各行按相似的數位順序排列。在第一個時鍾周期,數據的0,4,…,B-4位同時進入查找表ROM中,查出所要的數據,第二個時鍾周期,1,5,…,B-3位同時進入ROM中,查出所要的數據,所查得的數據傳遞給下一級累加器進行累加,這樣依次對剩下的各數據位進行同樣的操作。由於每個塊之間相差4位,即16倍,為了對應位相加,所以乘16。FIR濾波器的分布式演算法結構比單獨用乘法器實現的速度快,特別是濾波階數越高,其優勢更加明顯。分布式結構中,串列結構是1次查詢1位,所以對B位的數據在不算上移位寄存等的時間,完成1次濾波需要B個時鍾周期;而並行結構只需要1個時鍾周期便完成濾波,所以並行結構是速度最優的結構,但是並行結構需要B個DA查找表,需要大量的ROM來儲存,加大了硬體資源的消耗,特別是階數越高,硬體規模將十分膨大;串並結構綜合兩種結構優勢,實現在速度和規模上的協調。實際應用中。需根據系統的要求來選擇合適的結構。
3 結語
本文定性地分析了各種FIR濾波器的FPGA實現方法。對於低階的FIR濾波器可採用串列結構、並行結構以及轉置型結構來實現,而並行結構和轉置型結構的FIR濾波器以犧牲資源損耗來實現了速度上優勢;對於高階的FIR濾波器,基於乘法器結構的串列結構、並行結構及轉置型結構在速度上難以達到高速處理的要求,而分布式演算法將乘法轉換為查表和累加的結構,使得分布式結構的FIR濾波器在速度上得到了提高,但三種不同形式的分布式結構要在綜合考慮資源以及速度的基礎上進行合理選擇;同樣採用FFT實現的FIR濾波器以減少運算量來獲得了速度上的提高,特別是濾波階數越高其速度提升越明顯。
現代工程技術領域對濾波系統的帶寬、高速、信號的實時性處理等方面要求越來越高,在運用FPGA來實現FIR濾波中,基於乘法器結構的FIR濾波器無法滿足以上要求,而分布式結構的FIR濾波器巧妙地運用ROM查找表來實現固定系數的乘累加運算,避免了乘法運算,並且在隨後的每級加法運算中引入流水線結構,提高了速度。因此採用分布式演算法實現FIR濾波器是目前研究的熱點,同時無論哪種分布式演算法都要使用ROM來做查找表,但是隨著濾波階數的增加,ROM的數量將會增加,在進一步提高速度的情況下如何減少ROM的數量是今後亟待解決的問題。
(本文轉自電子工程世界:http://www.eeworld.com.cn/FPGA/2011/0331/article_1969.html)
E. FPGA 查找表功能是如何實現的
FPGA 查找表功能實現:
查找表(Look-Up-Table)簡稱為LUT,LUT本質上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有4位地址線的16x1的RAM。當用戶通過原理圖或HDL語言描述了一個邏輯電路以後,PLD/FPGA開發軟體會自動計算邏輯電路的所有可能的結果,並把結果事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等於輸入一個地址進行查表,找出地址對應的內容,然後輸出即可。
CPLD更適合完成各種演算法和組合邏輯,FPGA更適合於完成時序邏輯。換句話說,FPGA更適合於觸發器豐富的結構,而CPLD更適合於觸發器有限而乘積項豐富的結構。
CPLD的連續式布線結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式布線結構決定了其延遲的不可預測性。
在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內連電路的邏輯功能來編程,FPGA主要通過改變內部連線的布線來編程;FPGA可在邏輯門下編程,而CPLD是在邏輯塊下編程。
FPGA的集成度比CPLD高,具有更復雜的布線結構和邏輯實現。
CPLD比FPGA使用起來更方便。CPLD的編程採用E2PROM或FASTFLASH技術,無需外部存儲器晶元,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復雜。
CPLD的速度比FPGA快,並且具有較大的時間可預測性。這是由於FPGA是門級編程,並且CLB之間採用分布式互聯,而CPLD是邏輯塊級編程,並且其邏輯塊之間的互聯是集總式的。
在編程方式上,CPLD主要是基於E2PROM或FLASH存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。CPLD又可分為在編程器上編程和在系統編程兩類。FPGA大部分是基於SRAM編程,編程信息在系統斷電時丟失,每次上電時,需從器件外部將編程數據重新寫入SRAM中。其優點是可以編程任意次,可在工作中快速編程,從而實現板級和系統級的動態配置。
CPLD保密性好,FPGA保密性差。
一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。
F. CPLD與FPGA有何區別
******FPGA基於SRAM的架構,集成度高,以LE(包括查找表、觸發器及其他)為基本單元,有內嵌Memory、DSP等,支持IO標准豐富。具有易揮發性,需要有上電載入過程。在實現復雜演算法、隊列調度、數據處理、高性能設計、大容量緩存設計等領域中有廣泛應用,如Altera Stratix系列。
******CPLD基於EEPROM工藝,集成度低,以MicroCell(包括組合部分與寄存器)為基本單元。具有非揮發特性,可以重復寫入。在粘合邏輯、地址解碼、簡單控制、FPGA載入等設計中有廣泛應用,如Altera MAX3000A系列。
********詳細比較:盡管FPGA和CPLD都是可編程ASIC器件,有很多共同特點,但由於CPLD和FPGA結構上的差異,具有各自的特點
①CPLD更適合完成各種演算法和組合邏輯,FP GA更適合於完成時序邏輯。換句話說,FPGA更適合於觸發器豐富的結構,而CPLD更適合於觸發器有限而乘積項豐富的結構。
②CPLD的連續式布線結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式布線結構決定了其延遲的不可預測性。
③在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內連電路的邏輯功能來編程,FPGA主要通過改變內部連線的布線來編程;FP GA可在邏輯門下編程,而CPLD是在邏輯塊下編程。
④FPGA的集成度比CPLD高,具有更復雜的布線結構和邏輯實現。
⑤CPLD比FPGA使用起來更方便。CPLD的編程採用E2PROM或FASTFLASH技術,無需外部存儲器晶元,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復雜。
⑥CPLD的速度比FPGA快,並且具有較大的時間可預測性。這是由於FPGA是門級編程,並且CLB之間採用分布式互聯,而CPLD是邏輯塊級編程,並且其邏輯塊之間的互聯是集總式的。
⑦在編程方式上,CPLD主要是基於E2PROM或FLASH存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。CPLD又可分為在編程器上編程和在系統編程兩類。FPGA大部分是基於SRAM編程,編程信息在系統斷電時丟失,每次上電時,需從器件外部將編程數據重新寫入SRAM中。其優點是可以編程任意次,可在工作中快速編程,從而實現板級和系統級的動態配置。
⑧CPLD保密性好,FPGA保密性差。
⑨一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。
G. cpld與fpga工作原理有什麼不同
盡管FPGA和CPLD都是可編程ASIC器件,有很多共同特點,但由於CPLD和FPGA結構上的差異,具有各自的特點:
①CPLD更適合完成各種演算法和組合邏輯,FP GA更適合於完成時序邏輯。換句話說,FPGA更適合於觸發器豐富的結構,而CPLD更適合於觸發器有限而乘積項豐富的結構。
②CPLD的連續式布線結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式布線結構決定了其延遲的不可預測性。
③在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內連電路的邏輯功能來編程,FPGA主要通過改變內部連線的布線來編程;FP GA可在邏輯門鹵喑?而CPLD是在邏輯塊下編程。
④FPGA的集成度比CPLD高,具有更復雜的布線結構和邏輯實現。
⑤CPLD比FPGA使用起來更方便。CPLD的編程採用E2PROM或FASTFLASH技術,無需外部存儲器晶元,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復雜。
⑥CPLD的速度比FPGA快,並且具有較大的時間可預測性。這是由於FPGA是門級編程,並且CLB之間採用分布式互聯,而CPLD是邏輯塊級編程,並且其邏輯塊之間的互聯是集總式的。
⑦在編程方式上,CPLD主要是基於E2PROM或FLASH存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。CPLD又可分為在編程器上編程和在系統編程兩類。FPGA大部分是基於SRAM編程,編程信息在系統斷電時丟失,
每次上電時,需從器件外部將編程數據重新寫入SRAM中。其優點是可以編程任意次,可在工作中快速編程,從而實現板級和系統級的動態配置。
⑧CPLD保密性好,FPGA保密性差。
⑨一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。
===================================================================
但這些區別都是性能問題,通常不用太關心
你可以近似認為cpld和fpga是一回事
H. FPGA和CPLD的區別
FPGA與CPLD的概念及其區別
一、FPGA與CPLD的基本概念
1.CPLD
CPLD主要是由可編程邏輯宏單元(LMC,Logic Macro Cell)圍繞中心的可編程互連矩陣單元組成,其中LMC邏輯結構較復雜,並具有復雜的I/O單元互連結構,可由用戶根據需要生成特定的電路結構,完成一定的功能。由於 CPLD內部採用固定長度的金屬線進行各邏輯塊的互連,所以設計的邏輯電路具有時間可預測性,避免了分段式互連結構時序不完全預測的缺點。到90年代,CPLD發展更為迅速,不僅具有電擦除特性,而且出現了邊緣掃描及在線可編程等高級特性。較常用的有Xilinx公司的EPLD和Altera公司的CPLD。
2. FPGA
FPGA通常包含三類可編程資源:可編程邏輯功能塊、可編程I/O塊和可編程互連。可編程邏輯功能塊是實現用戶功能的基本單元,它們通常排列成一個陣列,散布於整個晶元;可編程I/O塊完成晶元上邏輯與外部封裝腳的介面,常圍繞著陣列排列於晶元四周;可編程內部互連包括各種長度的連線線段和一些可編程連接開關,它們將各個可編程邏輯塊或I/O塊連接起來,FPGA在可編程邏輯塊的規模,內部互連線的結構和採用的可編程元件上存在較大的差異。較常用的有Altera、Xinlinx和Actel公司的FPGA。FPGA一 般用於邏輯模擬。電路設計工程師設計一個電路首先要確定線路,然後進行軟體模擬及優化,以確認所設計電路的功能及性能。然而隨著電路規模的不斷增大,工作 頻率的不斷提高,將會給電路引入許多分布參數的影響,而這些影響用軟體模擬的方法較難反映出來,所以有必要做硬體模擬。FPGA就可以實現硬體模擬以做成模型機。將軟體模擬後的線路經一定處理後下載到FPGA,就可容易地得到一個模型機,從該模型機,設計者就很直觀地測試其邏輯功能及性能指標。
二、FPGA與CPLD區別
盡管FPGA和CPLD都是可編程ASIC器件,有很多共同特點,但由於CPLD和FPGA結構上的差異,具有各自的特點:
①CPLD更適合完成各種演算法和組合邏輯,FPGA更適合於完成時序邏輯。換句話說,FPGA更適合於觸發器豐富的結構,而CPLD更適合於觸發器有限而乘積項豐富的結構。
②CPLD的連續式布線結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式布線結構決定了其延遲的不可預測性。
③在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內連電路的邏輯功能來編程,FPGA主要通過改變內部連線的布線來編程;FPGA可在邏輯門下編程,而CPLD是在邏輯塊下編程。
④FPGA的集成度比CPLD高,具有更復雜的布線結構和邏輯實現。
⑤CPLD比FPGA使用起來更方便。CPLD的編程採用E2PROM或FASTFLASH技術,無需外部存儲器晶元,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復雜。
⑥CPLD的速度比FPGA快,並且具有較大的時間可預測性。這是由於FPGA是門級編程,並且CLB之間採用分布式互聯,而CPLD是邏輯塊級編程,並且其邏輯塊之間的互聯是集總式的。
⑦在編程方式上,CPLD主要是基於E2PROM或FLASH存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。CPLD又可分為在編 程器上編程和在系統編程兩類。FPGA大部分是基於SRAM編程,編程信息在系統斷電時丟失,每次上電時,需從器件外部將編程數據重新寫入SRAM中。其 優點是可以編程任意次,可在工作中快速編程,從而實現板級和系統級的動態配置。
⑧CPLD保密性好,FPGA保密性差。
⑨一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。
隨著復雜可編程邏輯器件(CPLD)密度的提高,數字器件設計人員在進行大型設計時,既靈活又容易,而且產品可以很快進入市常許多設計人員已經感受到 CPLD容易使用。時序可預測和速度高等優點,然而,在過去由於受到CPLD密度的限制,他們只好轉向FPGA和ASIC。現在,設計人員可以體會到密度 高達數十萬門的CPLD所帶來的好處。
I. CPLD和FPGA在應用上有什麼不同
FPGA是現場可編程邏輯門陣列的簡稱,是電子設計的一個里程碑。CPLD是復雜可變成邏輯器件的簡稱。盡管FPGA和CPLD都是可編程ASIC器件,有很多共同特點,但由於CPLD和FPGA結構上的差異,具有各自的特點:
1)、CPLD更適合完成各種演算法和組合邏輯,FP GA更適合於完成時序邏輯。換句話說,FPGA更適合於觸發器豐富的結構,而CPLD更適合於觸發器有限而乘積項豐富的結構。
2)、CPLD的連續式布線結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式布線結構決定了其延遲的不可預測性。
3)、在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內連電路的邏輯功能來編程,FPGA主要通過改變內部連線的布線來編程;FP GA可在邏輯門下編程,而CPLD是在邏輯塊下編程。
4)、FPGA的集成度比CPLD高,具有更復雜的布線結構和邏輯實現。
5)、CPLD比FPGA使用起來更方便。CPLD的編程採用E2PROM或FASTFLASH技術,無需外部存儲器晶元,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復雜。
6)、CPLD的速度比FPGA快,並且具有較大的時間可預測性。這是由於FPGA是門級編程,並且CLB之間採用分布式互聯,而CPLD是邏輯塊級編程,並且其邏輯塊之間的互聯是集總式的。
7)、在編程方式上,CPLD主要是基於EEPROM或FLASH存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。CPLD又可分為在編程器上編程和在系統編程兩類。FPGA大部分是基於SRAM編程,編程信息在系統斷電時丟失,每次上電時,需從器件外部將編程數據重新寫入SRAM中。其優點是可以編程任意次,可在工作中快速編程,從而實現板級和系統級的動態配置。
8)、CPLD保密性好,FPGA保密性差。
9)、一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。
隨著FPGA門數以及性能的提高,可以將現在的許多數字電路部分下載到FPGA上,實現硬體的軟體化,包括51核,DSP核以及其他的一些數字模塊,到最後一個系統板子就剩下電源、模擬電路部分,介面部分以及一塊FPGA。FPGA可以說是晶元級的PCB板,在一個晶元里設計原來的電子系統的所有數字電路部分。現在也有將ARM核嵌入到FPGA裡面的,比如Altera公司的Nois核。Nois是一個軟核,是有軟體編寫的一個32位處理器,並不是硬體上存在的處理核,該核工作頻率為50HZ,現在用於許多圖像處理以及其他的很多網路設備。利用鎖相環技術可以將頻率成倍提升,一般的ARM核是將鎖相環做到晶元裡面的,在變成的時候可以對某個寄存器進行設置從而達到分頻和倍頻的目的。而將DSP核嵌入到FPGA裡面去實現強大的計算功能是Altera公司近期推出的一系列晶元的一個優點。Altera公司的Stratix II系列晶元採用內嵌的DSP核,但是其DSP核的計算速度比現在業界上最快的DSP晶元還要快幾個數量級。
關於編程方式,目前的 CPLD主要是基於E2 PROM或 FLASH存儲器編程 ,編程次數達 1萬次。其優點是在系統斷電後 ,編程信息不丟失。CPLD又可分為在編程器上編程和在系統編程 (ISP) CPLD兩種。 ISP器件的優點是不需要編程器 ,可先將器件裝焊於印製板 ,再經過編程電纜進行編程,編程、調試和維護都很方便。FPGA大部分是基於 SRAM編程 ,其缺點是編程數據信息在系統斷電時丟失 ,每次上電時 ,需從器件的外部存儲器或計算機中將編程數據寫入 SRAM中。其優點是可進行任意次數的編程,並可在工作中快速編程 ,實現
J. vhdl在fpga上實現流水燈程序有問題,請高手幫忙
process(clk)
begin
if(rising_edge(clk)) then
count<=count+'1';
end if;
if(count(30)='1') then
led<=num;
count<=(others=>'0');
num<=num(6 downto 0) &num(7); --循環移位
end if;
end process;
你的第一個程序,下面一個if並沒有在敏感列表的clk下。其實相當於2個進程:
process(clk)
begin
if(rising_edge(clk)) then
count<=count+'1';
end if;
end process;
process
if(count(30)='1') then
led<=num;
count<=(others=>'0');
num<=num(6 downto 0) &num(7); --循環移位
end if;
end process;
這樣就不能在邊進行觸發了。所以寫程序的時候還是嚴格一點比較好。按照下面的格式,所有的邏輯關系要寫在--your logic 的位置。
process(clk,rst)
begin
if rst = '1' then
elsif rising_edge(clk) then
--your logic
end if;
end process;
這樣一個格式才和verilog中的
always @ (posedge clk or posedge rst) begin
if (rst) begin
end
else begin
//your logic
end
end
相同。