查找表(Look-Up-Table)簡(jiǎn)稱為L(zhǎng)UT,,LUT本質(zhì)上就是一個(gè)RAM,。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有4位地址線的16x1的RAM,。當(dāng)用戶通過原理圖或HDL語言描述了一個(gè)邏輯電路以后,,PLD/FPGA開發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能的結(jié)果,并把結(jié)果事先寫入RAM,這樣,,每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查表,,找出地址對(duì)應(yīng)的內(nèi)容,然后輸出即可,。 下面是一個(gè)4輸入與門的例子,,
實(shí)際邏輯電路 LUT的實(shí)現(xiàn)方式 a,b,c,d 輸入 邏輯輸出 地址 RAM中存儲(chǔ)的內(nèi)容 0000 0 0000 0 0001 0 0001 0 … 0 … 0 1111 1 1111 1 二。PLDFPGA基于查找表(LUT)的FPGA的結(jié)構(gòu) 我們看一看xilinx Spartan-II的內(nèi)部結(jié)構(gòu),,如下圖:
xilinx Spartan-II 芯片內(nèi)部結(jié)構(gòu) Slices結(jié)構(gòu) Spartan-II主要包括CLBs,,I/O塊,RAM塊和可編程連線(未表示出),。在spartan-II中,,一個(gè)CLB包括2個(gè)Slices,每個(gè)slices包括兩個(gè)LUT,兩個(gè)觸發(fā)器和相關(guān)邏輯,。Slices可以看成是SpartanII實(shí)現(xiàn)邏輯的最基本結(jié)構(gòu) (xilinx其他系列,,如SpartanXL,Virtex的結(jié)構(gòu)與此稍有不同,具體請(qǐng)參閱數(shù)據(jù)手冊(cè)) altera的FLEX/ACEX等芯片的結(jié)構(gòu)如下圖:
altera FLEX/ACEX 芯片的內(nèi)部結(jié)構(gòu)
邏輯單元(LE)內(nèi)部結(jié)構(gòu) FLEX/ACEX的結(jié)構(gòu)主要包括LAB,,I/O塊,,RAM塊(未表示出)和可編程行/列連線。在FLEX/ACEX中,,一個(gè)LAB包括8個(gè)邏輯單元(LE),,每個(gè)LE包括一個(gè)LUT,一個(gè)觸發(fā)器和相關(guān)的相關(guān)邏輯,。LE是FLEX/ACEX芯片實(shí)現(xiàn)邏輯的最基本結(jié)構(gòu)(altera其他系列,,如APEX的結(jié)構(gòu)與此基本相同,具體請(qǐng)參閱數(shù)據(jù)手冊(cè)) 二。PLDFPGA 查找表結(jié)構(gòu)的FPGA邏輯實(shí)現(xiàn)原理 我們還是以這個(gè)電路的為例:
A,B,C,D由FPGA芯片的管腳輸入后進(jìn)入可編程連線,,然后作為地址線連到到LUT,,LUT中已經(jīng)事先寫入了所有可能的邏輯結(jié)果,通過地址查找到相應(yīng)的數(shù)據(jù)然后輸出,,這樣組合邏輯就實(shí)現(xiàn)了,。該電路中D觸發(fā)器是直接利用LUT后面D觸發(fā)器來實(shí)現(xiàn)。時(shí)鐘信號(hào)CLK由I/O腳輸入后進(jìn)入芯片內(nèi)部的時(shí)鐘專用通道,,直接連接到觸發(fā)器的時(shí)鐘端,。觸發(fā)器的輸出與I/O腳相連,把結(jié)果輸出到芯片管腳,。這樣PLD就完成了圖3所示電路的功能,。(以上這些步驟都是由軟件自動(dòng)完成的,不需要人為干預(yù)) 這個(gè)電路是一個(gè)很簡(jiǎn)單的例子,,只需要一個(gè)LUT加上一個(gè)觸發(fā)器就可以完成,。對(duì)于一個(gè)LUT無法完成的的電路,就需要通過進(jìn)位邏輯將多個(gè)單元相連,,這樣FPGA就可以實(shí)現(xiàn)復(fù)雜的邏輯,。 由于LUT主要適合SRAM工藝生產(chǎn),所以目前大部分FPGA都是基于SRAM工藝的,,而SRAM工藝的芯片在掉電后信息就會(huì)丟失,,一定需要外加一片專用配置芯片,在上電的時(shí)候,,由這個(gè)專用配置芯片把數(shù)據(jù)加載到FPGA中,,然后FPGA就可以正常工作,由于配置時(shí)間很短,,不會(huì)影響系統(tǒng)正常工作,。也有少數(shù)FPGA采用反熔絲或Flash工藝,對(duì)這種FPGA,,就不需要外加專用的配置芯片,。 三。PLDFPGA 其他類型的FPGA和PLD 隨著技術(shù)的發(fā)展,,在2004年以后,,一些廠家推出了一些新的PLD和FPGA,這些產(chǎn)品模糊了PLD和FPGA的區(qū)別,。例如Altera最新的MAXII系列PLD,,這是一種基于FPGA(LUT)結(jié)構(gòu),集成配置芯片的PLD,,在本質(zhì)上它就是一種在內(nèi)部集成了配置芯片的FPGA,但由于配置時(shí)間極短,上電就可以工作,,所以對(duì)用戶來說,,感覺不到配置過程,可以傳統(tǒng)的PLD一樣使用,,加上容量和傳統(tǒng)PLD類似,,所以altera把它歸作PLD。還有像LatTIce的XP系列FPGA,,也是使用了同樣的原理,,將外部配置芯片集成到內(nèi)部,在使用方法上和PLD類似,,但是因?yàn)槿萘看?,性能和傳統(tǒng)FPGA相同,也是LUT架構(gòu),,所以LatTIce仍把它歸為FPGA,。 四。PLDFPGA基于乘積項(xiàng)(Product-Term)結(jié)構(gòu)CPLD CPLD多是基于乘積項(xiàng)(Product-Term)的結(jié)構(gòu),。采用這種結(jié)構(gòu)的CPLD芯片有:Altera的MAX7000,,MAX3000系列(EEPROM工藝),Xilinx的XC9500系列(Flash工藝)和LatTIce,,Cypress的大部分產(chǎn)品(EEPROM工藝) 我們先看一下這種CPLD的總體結(jié)構(gòu)(以MAX7000為例,,其他型號(hào)的結(jié)構(gòu)與此都非常相似):
圖1 基于乘積項(xiàng)的CPLD內(nèi)部結(jié)構(gòu) 這種CPLD可分為三塊結(jié)構(gòu):宏單元(Marocell),可編程連線(PIA)和I/O控制塊,。宏單元是CPLD的基本結(jié)構(gòu),,由它來實(shí)現(xiàn)基本的邏輯功能。圖1中蘭色部分是多個(gè)宏單元的集合(因?yàn)楹陠卧^多,,沒有一一畫出),。可編程連線負(fù)責(zé)信號(hào)傳遞,,連接所有的宏單元,。I/O控制塊負(fù)責(zé)輸入輸出的電氣特性控制,比如可以設(shè)定集電極開路輸出,,擺率控制,,三態(tài)輸出等。圖1 左上的INPUT/GCLK1,,INPUT/GCLRn,,INPUT/OE1,INPUT/OE2 是全局時(shí)鐘,,清零和輸出使能信號(hào),,這幾個(gè)信號(hào)有專用連線與PLD中每個(gè)宏單元相連,信號(hào)到每個(gè)宏單元的延時(shí)相同并且延時(shí)最短。 宏單元的具體結(jié)構(gòu)見下圖:
圖2 宏單元結(jié)構(gòu) 左側(cè)是乘積項(xiàng)陣列,,實(shí)際就是一個(gè)與或陣列,,每一個(gè)交叉點(diǎn)都是一個(gè)可編程熔絲,如果導(dǎo)通就是實(shí)現(xiàn)“與”邏輯,。后面的乘積項(xiàng)選擇矩陣是一個(gè)“或”陣列,。兩者一起完成組合邏輯。圖右側(cè)是一個(gè)可編程D觸發(fā)器,,它的時(shí)鐘,,清零輸入都可以編程選擇,可以使用專用的全局清零和全局時(shí)鐘,,也可以使用內(nèi)部邏輯(乘積項(xiàng)陣列)產(chǎn)生的時(shí)鐘和清零,。如果不需要觸發(fā)器,也可以將此觸發(fā)器旁路,,信號(hào)直接輸給PIA或輸出到I/O腳,。
更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<