<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > FPGA重點知識13條,助你構(gòu)建完整“邏輯觀”之一

          FPGA重點知識13條,助你構(gòu)建完整“邏輯觀”之一

          作者: 時間:2018-02-11 來源:網(wǎng)絡(luò) 收藏

            3、比較

          本文引用地址:http://www.ex-cimer.com/article/201802/375718.htm

            一.基于乘積項(Product-Term)的PLD結(jié)構(gòu)

            采用這種結(jié)構(gòu)的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工藝),Xilinx的XC9500系列(Flash工藝)和Lattice,Cypress的大部分產(chǎn)品(EEPROM工藝)

            我們先看一下這種PLD的總體結(jié)構(gòu)(以MAX7000為例,其他型號的結(jié)構(gòu)與此都非常相似):


            圖1 基于乘積項的PLD內(nèi)部結(jié)構(gòu)

            這種PLD可分為三塊結(jié)構(gòu):宏單元(Marocell),可編程連線 (PIA)和I/O控制塊。 宏單元是PLD的基本結(jié)構(gòu),由它來實現(xiàn)基本的邏輯功能。圖1中蘭色部分是多個宏單元的集合(因為宏單元較多,沒有一一畫出)??删幊踢B線負(fù)責(zé)信號傳遞,連 接所有的宏單元。I/O控制塊負(fù)責(zé)輸入輸出的電氣特性控制,比如可以設(shè)定集電極開路輸出,擺率控制,三態(tài)輸出等。 圖1 左上的INPUT/GCLK1,

            INPUT/GCLRn,INPUT/OE1,INPUT/OE2 是全局時鐘,清零和輸出使能信號,這幾個信號有專用連線與PLD中每個宏單元相連,信號到每個宏單元的延時相同并且延時最短。

            宏單元的具體結(jié)構(gòu)見下圖:


            圖2 宏單元結(jié)構(gòu)

            左側(cè)是乘積項陣列,實際就是一個與或陣列,每一個交叉點都是一個可編程 熔絲,如果導(dǎo)通就是實現(xiàn)“與”邏輯。后面的乘積項選擇矩陣是一個“或”陣列。兩者一起完成組合邏輯。圖右側(cè)是一個可編程D觸發(fā)器,它的時鐘,清零輸入都可 以編程選擇,可以使用專用的全局清零和全局時鐘,也可以使用內(nèi)部邏輯(乘積項陣列)產(chǎn)生的時鐘和清零。如果不需要觸發(fā)器,也可以將此觸發(fā)器旁路,信號直接 輸給PIA或輸出到I/O腳。

            二.乘積項結(jié)構(gòu)PLD的邏輯實現(xiàn)原理

            下面我們以一個簡單的電路為例,具體說明PLD是如何利用以上結(jié)構(gòu)實現(xiàn)邏輯的,電路如下圖:


            圖3

            假設(shè)組合邏輯的輸出(AND3的輸出)為f,則f=(A+B)*C*(!D)=A*C*!D + B*C*!D ( 我們以!D表示D的“非”)

            PLD將以下面的方式來實現(xiàn)組合邏輯f:


            圖4

            A,B,C,D由PLD芯片的管腳輸入后進(jìn)入可編程連線陣列 (PIA),在內(nèi)部會產(chǎn)生A,A反,B,B反,C,C反,D,D反8個輸出。圖中每一個叉表示相連(可編程熔絲導(dǎo)通),所以得到:f= f1 + f2 = (A*C*!D) +

            (B*C*!D) 。這樣組合邏輯就實現(xiàn)了。 圖3電路中D觸發(fā)器的實現(xiàn)比較簡單,直接利用宏單元中的可編程D觸發(fā)器來實現(xiàn)。時鐘信號CLK由I/O腳輸入后進(jìn)入芯片內(nèi)部的全局時鐘專用通道,直接連接 到可編程觸發(fā)器的時鐘端??删幊逃|發(fā)器的輸出與I/O腳相連,把結(jié)果輸出到芯片管腳。這樣PLD就完成了圖3所示電路的功能。(以上這些步驟都是由軟件自 動完成的,不需要人為干預(yù))

            圖3的電路是一個很簡單的例子,只需要一個宏單元就可以完成。但對于一個復(fù)雜的電路,一個宏單元是不能實現(xiàn)的,這時就需要通過并聯(lián)擴展項和共享擴展項將多個宏單元相連,宏單元的輸出也可以連接到可編程連線陣列,再做為另一個宏單元的輸入。這樣PLD就可以實現(xiàn)更復(fù)雜邏輯。

            這種基于乘積項的PLD基本都是由EEPROM和Flash工藝制造的,一上電就可以工作,無需其他芯片配合。

            PGA的基本工作原理

            是在PAL、GAL、EPLD、等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為ASIC領(lǐng)域中的一種半定制電路而出現(xiàn)的,即解決了定制電路的不足,又克服了原有可編程器件門電路有限的缺點。

            由于需要被反復(fù)燒寫,它實現(xiàn)組合邏輯的基本結(jié)構(gòu)不可能像ASIC那樣通過固定的與非門來完成,而只能采用一種易于反復(fù)配置的結(jié)構(gòu)。查找表可以很好地滿足這一要求,目前主流FPGA都采用了基于SRAM工藝的查找表結(jié)構(gòu),也有一些軍品和宇航級FPGA采用Flash或者熔絲與反熔絲工藝的查找表結(jié)構(gòu)。通過燒寫文件改變查找表內(nèi)容的方法來實現(xiàn)對FPGA的重復(fù)配置。

            根據(jù)數(shù)字電路的基本知識可以知道,對于一個n輸入的邏輯運算,不管是與或非運算還是異或運算等等,最多只可能存在2n種結(jié)果。所以如果事先將相應(yīng)的結(jié)果存放于一個存貯單元,就相當(dāng)于實現(xiàn)了與非門電路的功能。FPGA的原理也是如此,它通過燒寫文件去配置查找表的內(nèi)容,從而在相同的電路情況下實現(xiàn)了不同的邏輯功能。

            查找表的原理與結(jié)構(gòu)

            查找表(Look-Up-Table)簡稱為LUT,LUT本質(zhì)上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有4位地址線的的RAM。當(dāng)用戶通過原理圖或HDL語言描述了一個邏輯電路以后,

            PLD/FPGA開發(fā)軟件會自動計算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)事先寫入RAM,這樣,每輸入一個信號進(jìn)行邏輯運算就等于輸入一個地址進(jìn)行查表,找出地址對應(yīng)的內(nèi)容,然后輸出即可。

            下面給出一個四輸入與非門電路的例子來說明LUT實現(xiàn)邏輯功能的原理。

            表給出一個使用LUT實現(xiàn)四輸入與門電路的真值表。


            表 輸入與門的真值表

            從中可以看到,LUT具有和邏輯電路相同的功能。實際上,LUT具有更快的執(zhí)行速度和更大的規(guī)模。

            3.1.2查找表結(jié)構(gòu)的FPGA邏輯實現(xiàn)原理

            我們還是以這個電路的為例:


            圖 四輸入與門電路圖

            A,B,C,D由FPGA芯片的管腳輸入后進(jìn)入可編程連線,然后作為地址線連到到LUT,LUT中已經(jīng)事先寫入了所有可能的邏輯結(jié)果,通過地址查找到相應(yīng)的數(shù)據(jù)然后輸出,這樣組合邏輯就實現(xiàn)了。該電路中D觸發(fā)器是直接利用LUT后面D觸發(fā)器來實現(xiàn)。時鐘信號CLK由I/O腳輸入后進(jìn)入芯片內(nèi)部的時鐘專用通道,直接連接到觸發(fā)器的時鐘端。觸發(fā)器的輸出與I/O腳相連,把結(jié)果輸出到芯片管腳。這樣PLD就完成了圖所示電路的功能。(以上這些步驟都是由軟件自動完成的,不需要人為干預(yù))

            這個電路是一個很簡單的例子,只需要一個LUT加上一個觸發(fā)器就可以完成。對于一個LUT無法完成的的電路,就需要通過進(jìn)位邏輯將多個單元相連,這樣FPGA就可以實現(xiàn)復(fù)雜的邏輯。

            因為基于LUT的FPGA具有很高的集成度,其器件密度從數(shù)萬門到數(shù)千萬門不等,可以完成極其復(fù)雜的時序與邏輯組合邏輯電路功能,所以適用于高速、高密度的高端數(shù)字邏輯電路設(shè)計領(lǐng)域。其組成部分主要有可編程輸入/輸出單元、基本可編程邏輯單元、內(nèi)嵌SRAM、豐富的布線資源、底層嵌入功能單元、內(nèi)嵌專用單元等,主要設(shè)計和生產(chǎn)廠家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家。

            4、比較Xilinx和Altera

            要比較Xilinx和Altera的FPGA,就要清楚兩個大廠FPGA的結(jié)構(gòu),由于各自設(shè)計的不同,兩家的FPGA結(jié)構(gòu)各不相同,參數(shù)也各不相同,但可以統(tǒng)一到LUT(Look-Up-Table)查找表上。

            下圖就是A家的Cyclone IV系列片子的參數(shù):


            Altera Cyclone IV 系列資源比較

            可以看到,A家的片子,用的是LE這個術(shù)語。

            而下圖是X家的Spartan-6 片子資料:


            Xilinx Spartan-6 系列資源比較

            X家用的是CLB這個術(shù)語作為基本單元。

            再看看兩家的基本單元有何不同:

            A家的LE如下圖:


            Cyclone LE 結(jié)構(gòu)

            就是一個4輸入LUT+FF構(gòu)成

            而X家的CLB如下:

            xilinx CLB 結(jié)構(gòu)


            一個CLB由2個SLICE構(gòu)成,一個SLICE含有4個6輸入LUT,所以LUT=8*CLB。

            Xilinx CLB 包含的 Slices LUT FF


            這樣的話,可以較比一下。EP4CE6基本就和XC6SLX9一個級別。。。。當(dāng)然A家的片子是4輸入LUT遠(yuǎn)比不上X家的6輸入LUT。而X家的S-6片子,一個Slice內(nèi)部有4個lut,8個FF。簡而言之,一個Slice=四個LE。要注意的是A家C5以下的片子是4輸入LUT而X家的是6輸入LUT,差別也較大。如果不考慮FF,那么一個X家的slice=4個A家的LE。例如XC6SLX16含有2278個slices=EP4CE10(9000LE)的樣子。當(dāng)然,S-6的FF多一倍,達(dá)到了18224個。

            在Virtex-5中(我們的設(shè)計大部分是Virtex,V5V6V7),一個Slice包含了4個LUT和4個FF。所以單純從邏輯資源來看,S-6一個Slice比V-5的Slice強。當(dāng)然V5的GTPGTX等等還有IO數(shù)量是S-6趕不上的。當(dāng)然,A家的Cyclone V系列的片子,內(nèi)部和前幾代完全不同,采用了從高端的Stratix系列下放的技術(shù).

            5、分布式RAM和Block ram

            以下分析基于xilinx 7系列

            CLB是xilinx基本邏輯單元,每個CLB包含兩個slices,每個slices由4個(A,B,C,D)6輸入LUT和8個寄存器組成。

            同一CLB中的兩片slices沒有直接的線路連接,分屬于兩個不同的列。每列擁有獨立的快速進(jìn)位鏈資源。


            slice分為兩種類型 SLICEL, SLICEM . SLICEL可用于產(chǎn)生邏輯,算術(shù),ROM。 SLICEM除以上作用外還可配置成分布式RAM或32位的移位寄存器。每個CLB可包含兩個SLICEL或者一個SLICEL與一個SLICEM.

            7系列的LUT包含6個輸入 A1 -A6 , 兩個輸出 O5 , O6 .

            可配置成6輸入查找表,O6此時作為輸出?;蛘邇蓚€5輸入的查找表,A1-A5作為輸入 A6拉高,O5,O6作為輸出。

            一個LUT包含6個輸入,邏輯容量為2^6bit,為實現(xiàn)7輸入邏輯需要2^7容量,對于更多輸入也一樣。每個SLICES有4個LUT,256bit容量能夠?qū)崿F(xiàn)最多8bit輸入的邏輯。為了實現(xiàn)此功能,每個SLICES還包括3個MUX(多路選擇器)

            F7AMUX 用于產(chǎn)生7輸入的邏輯功能,用于連接A,B兩個LUT

            F7BMUX 用于產(chǎn)生7輸入的邏輯功能, 用于連接C,D兩個LUT

            F8MUX 用于產(chǎn)生8輸入的邏輯功能, 用于連接4個LUT

            對于大于8輸入的邏輯需要使用多個SLICES, 會增加邏輯實現(xiàn)的延時。

            一個SLICES中的4個寄存器可以連接LUT或者M(jìn)UX的輸出,或者被直接旁路不連接任何邏輯資源。寄存器的置位/復(fù)位端為高電平有效。只有CLK端能被設(shè)置為兩個極性,其他輸入若要改變電平需要插入邏輯資源。例如低電平復(fù)位需要額外的邏輯資源將rst端輸入取反。但設(shè)為上升/下降沿觸發(fā)寄存器不會帶來額外消耗。

            分布式RAM

            SLICEM可以配置成分布式RAM,一個SLICEM可以配置成以下容量的RAM


            多bit的情況需要增加相應(yīng)倍數(shù)的LUT進(jìn)行并聯(lián)。

            分布式RAM和 BLOCK RAM的選擇遵循以下方法:

            1. 小于或等于64bit容量的的都用分布式實現(xiàn)

            2. 深度在64~128之間的,若無額外的block可用分布式RAM。要求異步讀取就使用分布式RAM。數(shù)據(jù)寬度大于16時用block ram。

            3. 分布式RAM有比block ram更好的時序性能。 分布式RAM在邏輯資源CLB中。而BLOCK RAM則在專門的存儲器列中,會產(chǎn)生較大的布線延遲,布局也受制約。

            移位寄存器(SLICEM)

            SLICEM中的LUT能在不使用觸發(fā)器的情況下設(shè)置成32bit的移位寄存器,4個LUT可級聯(lián)成128bit的移位寄存器。并且能夠進(jìn)行SLICEM間的級聯(lián)形成更大規(guī)模的移位寄存器。


            MUX

            一個LUT可配置成4:1MUX.

            兩個LUT可配置成最多8:1 MUX

            四個LUT可配置成16個MUX


            同樣可以通過連接多個SLICES達(dá)成更大規(guī)模設(shè)計,但是由于SLICE沒有直接連線,需要使用布線資源,會增加較大延遲。

            進(jìn)位鏈

            每個SLICE有4bit的進(jìn)位鏈。每bit都由一個進(jìn)位MUX(MUXCY)和一個異或門組成,可在實現(xiàn)加法/減法器時生成進(jìn)位邏輯。該MUXCY與XOR也可用于產(chǎn)生一般邏輯。



          關(guān)鍵詞: FPGA CPLD

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();