【導(dǎo)讀】采用這種結(jié)構(gòu)的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工藝),Xilinx的XC9500系列(Flash工藝)和Lattice,Cypress的大部分產(chǎn)品(EEPROM工藝)。
一.基于乘積項(xiàng)(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 基于乘積項(xiàng)的PLD內(nèi)部結(jié)構(gòu)
這種PLD可分為三塊結(jié)構(gòu):宏單元(Marocell),可編程連線 (PIA)和I/O控制塊。 宏單元是PLD的基本結(jié)構(gòu),由它來實(shí)現(xiàn)基本的邏輯功能。圖1中蘭色部分是多個宏單元的集合(因?yàn)楹陠卧^多,沒有一一畫出)??删幊踢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è)是乘積項(xiàng)陣列,實(shí)際就是一個與或陣列,每一個交叉點(diǎn)都是一個可編程 熔絲,如果導(dǎo)通就是實(shí)現(xiàn)“與”邏輯。后面的乘積項(xiàng)選擇矩陣是一個“或”陣列。兩者一起完成組合邏輯。圖右側(cè)是一個可編程D觸發(fā)器,它的時鐘,清零輸入都可 以編程選擇,可以使用專用的全局清零和全局時鐘,也可以使用內(nèi)部邏輯(乘積項(xiàng)陣列)產(chǎn)生的時鐘和清零。如果不需要觸發(fā)器,也可以將此觸發(fā)器旁路,信號直接 輸給PIA或輸出到I/O腳。
二.乘積項(xiàng)結(jié)構(gòu)PLD的邏輯實(shí)現(xiàn)原理
下面我們以一個簡單的電路為例,具體說明PLD是如何利用以上結(jié)構(gòu)實(shí)現(xiàn)邏輯的,電路如下圖:
圖3
假設(shè)組合邏輯的輸出(AND3的輸出)為f,則f=(A+B)*C*(!D)=A*C*!D + B*C*!D ( 我們以!D表示D的“非”)
PLD將以下面的方式來實(shí)現(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) 。這樣組合邏輯就實(shí)現(xiàn)了。 圖3電路中D觸發(fā)器的實(shí)現(xiàn)比較簡單,直接利用宏單元中的可編程D觸發(fā)器來實(shí)現(xiàn)。時鐘信號CLK由I/O腳輸入后進(jìn)入芯片內(nèi)部的全局時鐘專用通道,直接連接 到可編程觸發(fā)器的時鐘端??删幊逃|發(fā)器的輸出與I/O腳相連,把結(jié)果輸出到芯片管腳。這樣PLD就完成了圖3所示電路的功能。(以上這些步驟都是由軟件自 動完成的,不需要人為干預(yù))
圖3的電路是一個很簡單的例子,只需要一個宏單元就可以完成。但對于一個復(fù)雜的電路,一個宏單元是不能實(shí)現(xiàn)的,這時就需要通過并聯(lián)擴(kuò)展項(xiàng)和共享擴(kuò)展項(xiàng)將多個宏單元相連,宏單元的輸出也可以連接到可編程連線陣列,再做為另一個宏單元的輸入。這樣PLD就可以實(shí)現(xiàn)更復(fù)雜邏輯。
這種基于乘積項(xiàng)的PLD基本都是由EEPROM和Flash工藝制造的,一上電就可以工作,無需其他芯片配合。