官术网_书友最值得收藏!

1.1.3 CPLD/FPGA的結(jié)構(gòu)與原理

微課1-2

CPLD FPGA的結(jié)構(gòu)與原理

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

采用基于乘積項結(jié)構(gòu)的PLD芯片有:Altera公司的MAX7000、MAX3000系列(E2PROM工藝),Xilinx公司的XC9500系列(Flash工藝)和Lattice、Cypress公司的大部分產(chǎn)品(E2PROM工藝)。

基于乘積項的PLD總體內(nèi)部結(jié)構(gòu)如圖1-3所示(以MAX7000為例,其他型號的結(jié)構(gòu)與此非常相似)。

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

這種PLD可分為3塊結(jié)構(gòu),即宏單元(Macrocell)、可編程連線(Programmable Interface Adapter,PIA)和I/O腳控制塊。宏單元是PLD的基本結(jié)構(gòu),由它來實現(xiàn)基本的邏輯功能。圖中只給出了4個宏單元的集合(因為宏單元較多,故沒有一一畫出)。可編程連線負(fù)責(zé)信號傳遞,連接所有的宏單元。I/O腳控制塊負(fù)責(zé)輸入/輸出的電氣特性控制,比如可以設(shè)定集電極開路輸出、擺率控制及三態(tài)輸出等。圖中左上的INPUT/GCLK1(全局時鐘信號),INPUT/GCLRn(清零信號),INPUT/OE1和INPUT/OE2(輸出使能信號)有專用連線與PLD中每個宏單元相連,信號到每個宏單元的延時相同并且延時最短。宏單元的具體結(jié)構(gòu)如圖1-4所示。

圖1-4 宏單元的具體結(jié)構(gòu)

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

下面以一個簡單的電路為例,具體說明PLD是如何利用以上結(jié)構(gòu)實現(xiàn)邏輯的,組合邏輯如圖1-5所示。

圖1-5 組合邏輯

【例1-1】假設(shè)組合邏輯的輸出(AND3的輸出)為f,則f=(A+B)*C*(!D)=A*C*!D+B*C*!D。請用PLD實現(xiàn)此功能。

解:PLD實現(xiàn)組合邏輯f的方式如圖1-6所示。

圖1-6 實現(xiàn)組合邏輯f

A、B、C、D由PLD芯片的引腳輸入后進入可編程連線陣列(PIA),在內(nèi)部會產(chǎn)生A、、B、、C、、D、共8個輸出。圖中每一個叉表示相連(可編程熔絲導(dǎo)通),所以得到:f=f1+f2=A*C*!D+B*C*!D。這樣組合邏輯就實現(xiàn)了。在AND3的輸出電路中,D觸發(fā)器的實現(xiàn)比較簡單,直接利用宏單元中的可編程D觸發(fā)器即可。時鐘信號CLK由I/O腳輸入后進入芯片內(nèi)部的全局時鐘專用通道,直接連接到可編程觸發(fā)器的時鐘端。可編程觸發(fā)器的輸出與I/O腳相連,把結(jié)果輸出到芯片引腳。這樣,PLD就完成了以上電路的功能(這些步驟都是由軟件自動完成的,不需要人為干預(yù))。

圖1-6中的電路是一個很簡單的例子,只需要一個宏單元就可以完成。但對于一個復(fù)雜的電路,一個宏單元是不能實現(xiàn)的,這時就需要通過并聯(lián)擴展項和共享擴展項將多個宏單元相連,宏單元的輸出也可以連接到可編程連線陣列,再作為另一個宏單元的輸入。這樣,PLD就可以實現(xiàn)更復(fù)雜的邏輯功能。這種基于乘積項的PLD基本都是由E2PROM和Flash工藝制造的,一上電就可以工作,無須其他芯片配合。

2.查找表(Look-Up-Table,LUT)的原理與結(jié)構(gòu)

也可以將采用基于乘積項結(jié)構(gòu)的PLD芯片稱為FPGA,如Altera公司的ACEX、APEX系列,Xilinx公司的Spartan、Virtex系列等。

查找表本質(zhì)上就是一個RAM。目前FPGA中多使用4輸入的LUT,因此可以把每一個LUT看成一個有4位地址線的16×1的RAM。在用戶通過原理圖或HDL語言描述了一個邏輯電路后,PLD/FPGA會自動計算邏輯電路的所有可能的結(jié)果,并把結(jié)果事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,找出地址對應(yīng)的內(nèi)容,然后輸出即可。表1-2為一個4輸入與門的例子。

表1-2 一個4輸入與門的例子

(1)基于查找表的FPGA結(jié)構(gòu)

Xilinx Spartan-Ⅱ的內(nèi)部結(jié)構(gòu)如圖1-7所示。

圖1-7 Xilinx Spartan-Ⅱ的內(nèi)部結(jié)構(gòu)

Spartan-Ⅱ主要包括CLBs、I/O塊、RAM塊和可編程連線(未表示出)。在Spartan-Ⅱ中,一個CLB包括兩個Slice(Slice是XilinX元器件的基本邏輯單元),每個Slice包括兩個LUT、兩個觸發(fā)器和相關(guān)邏輯。Slice可以看成是Spartan-Ⅱ?qū)崿F(xiàn)邏輯的最基本結(jié)構(gòu)。

Altera公司的FLEX/ACEX等芯片的結(jié)構(gòu)如圖1-8所示。Altera FLEX/ACEX芯片的內(nèi)部結(jié)構(gòu)如圖1-9所示。

圖1-8 FLEX/ACEX等芯片的結(jié)構(gòu)

圖1-9 Altera FLEX/ACEX芯片的內(nèi)部結(jié)構(gòu)

FLEX/ACEX主要包括LAB、I/O塊、RAM塊(未表示出)和可編程行/列連線。在FLEX/ACEX中,一個LAB包括8個邏輯單元(LE),每個LE包括一個LUT、一個觸發(fā)器和相關(guān)的邏輯關(guān)系。LE是FLEX/ACEX芯片實現(xiàn)邏輯的最基本結(jié)構(gòu)。

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

此處還是以圖1-5這個電路為例來解釋查找表結(jié)構(gòu)的FPGA邏輯實現(xiàn)原理。

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

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

LUT主要適合SRAM工藝生產(chǎn),目前大部分FPGA都是基于SRAM工藝的,而SRAM工藝的芯片在掉電后信息就會丟失,因此,一定需要外加一片專用配置芯片。在上電的時候,由這個專用配置芯片把數(shù)據(jù)加載到FPGA中,然后FPGA就可以正常工作了。由于配置時間很短,不會影響系統(tǒng)正常工作。也有少數(shù)FPGA采用反熔絲或Flash工藝,對這種FPGA來講,就不需要外加專用的配置芯片。

主站蜘蛛池模板: 西乡县| 丰城市| 阿图什市| 南投市| 赣州市| 阳山县| 芜湖县| 信宜市| 灌云县| 丰都县| 海晏县| 萨嘎县| 吴堡县| 大田县| 外汇| 漯河市| 辛集市| 乌兰浩特市| 都江堰市| 巫溪县| 昭觉县| 太仓市| 祁阳县| 岳普湖县| 汪清县| 同心县| 黔江区| 隆林| 三江| 嫩江县| 福贡县| 建始县| 灌阳县| 寻乌县| 霸州市| 调兵山市| 扶绥县| 布尔津县| 大理市| 永和县| 长岭县|