查找表(Look-Up-Table)簡(jiǎn)稱為L(zhǎng)UT,其本質(zhì)就是一個(gè)RAM。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有4位地址線的16×1的RAM。當(dāng)用戶通過(guò)原理圖或HDL語(yǔ)言描述了一個(gè)邏輯電路以后,PLD/FPGA開(kāi)發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能的結(jié)果,并把結(jié)果事先寫入RAM。這樣,每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就相當(dāng)于輸入一個(gè)地址進(jìn)行查表,找出地址對(duì)應(yīng)的內(nèi)容,然后將其輸出即可。
我們知道,一個(gè)n輸入的邏輯運(yùn)算,不管是與或非運(yùn)算還是異或運(yùn)算,最多只可能存在2 n 種結(jié)果,如表1-1的4輸入與門共有16種輸出結(jié)果。這樣就將實(shí)際邏輯電路轉(zhuǎn)換成了LUT結(jié)構(gòu)。
表1-1 4輸入與門的真值表
A,B,C,D由FPGA芯片的引腳輸入后進(jìn)入可編程連線,然后作為地址線連到LUT。LUT中已經(jīng)事先寫入了所有可能的邏輯結(jié)果,通過(guò)地址查找到相應(yīng)的數(shù)據(jù),然后將其輸出,這樣就實(shí)現(xiàn)了組合邏輯。該電路中 D 觸發(fā)器是直接利用 LUT 后面的 D觸發(fā)器來(lái)實(shí)現(xiàn)的。時(shí)鐘信號(hào)CLK由I/O腳輸入后進(jìn)入芯片內(nèi)部的時(shí)鐘專用通道,直接連接到觸發(fā)器的時(shí)鐘端。觸發(fā)器的輸出端與 I/O 腳相連,把結(jié)果輸出到芯片引腳,這樣PLD就完成了圖1-7所示電路的功能(以上步驟都是由軟件自動(dòng)完成的,不需要人為干預(yù))。
圖1-7 4輸入與門的邏輯實(shí)現(xiàn)
這個(gè)電路是一個(gè)很簡(jiǎn)單的例子,只需要一個(gè)LUT加一個(gè)觸發(fā)器就可以完成。對(duì)于一個(gè)LUT無(wú)法完成的電路,需要通過(guò)進(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工藝,這種FPGA就不需要外加專用的配置芯片。
由于需要反復(fù)燒寫,F(xiàn)PGA實(shí)現(xiàn)組合邏輯的基本結(jié)構(gòu)不可能像ASIC那樣通過(guò)固定的與非門來(lái)完成,而只能采用一種易于反復(fù)配置的結(jié)構(gòu)。查找表可以很好地滿足這一要求,目前主流FPGA都采用了基于SRAM工藝或基于FLASH工藝的查找表結(jié)構(gòu),通過(guò)每次燒寫改變查找表內(nèi)容的方法實(shí)現(xiàn)對(duì)FPGA的重復(fù)配置。
聯(lián)系客服