本發(fā)明涉及電子技術(shù)領(lǐng)域,尤其涉及一種查找表工藝映射方法。
背景技術(shù):
現(xiàn)場可編程門陣列((Field-Programmable Gate Array,簡稱FPGA)是一種具有豐富硬件資源、強大并行處理能力和靈活可配置能力的邏輯器件。這些特征使得FPGA在數(shù)據(jù)處理、通信、網(wǎng)絡(luò)等很多領(lǐng)域得到了越來越廣泛的應(yīng)用。隨著FPGA的應(yīng)用越來越廣泛,對于FPGA芯片上的器件要求也越來越高。利用FPGA芯片的設(shè)計越來越復(fù)雜,組合邏輯環(huán)出現(xiàn)的頻率也越來越頻繁,因此,對FPGA的綜合優(yōu)化能力的要求越來越高。傳統(tǒng)的工藝映射流程中,將邏輯門電路映射為查找表的前提是所處理的邏輯電路可抽象為一個有向無環(huán)圖。而在實際過程中,組合邏輯環(huán)經(jīng)常存在于邏輯電路中,具體如圖1所示,這些組合邏輯環(huán)的出現(xiàn),給查找表映射帶來了不必要的麻煩,因此,尋找一種能夠處理包含組合邏輯環(huán)的邏輯電路的方法,使其能等效抽象為有向無環(huán)圖,是亟待解決的問題。
技術(shù)實現(xiàn)要素:
為了解決上述問題,本發(fā)明提供一種查找表工藝映射方法。
第一方面,本發(fā)明提供了一種查找表工藝映射方法,所述方法包括:
當(dāng)確定邏輯電路存在組合邏輯環(huán)時,斷開邏輯電路中構(gòu)成組合邏輯環(huán)的第一邏輯門和第二邏輯門之間的一端電路連接;
在第一邏輯門被斷開連接的第一輸入端插入外部輸入,以及在第二邏輯門被斷開連接的第二輸出端插入外部輸出,其中外部輸入和外部輸出均等效于第一邏輯門的第一輸入端的輸入,或第二邏輯門的第二輸出端的輸出;
對斷開組合邏輯環(huán)后的邏輯電路進(jìn)行查找表映射;
恢復(fù)邏輯電路中的組合邏輯環(huán),并刪除外部輸入和外部輸出。
優(yōu)選的,斷開邏輯電路中構(gòu)成組合邏輯環(huán)的第一邏輯門和第二邏輯門之間的一端電路連接之前,該方法還包括:遍歷邏輯電路,查找邏輯電路中的組合邏輯環(huán)。
本發(fā)明提供的查找表工藝映射方法,在確定邏輯電路中存在組合邏輯環(huán)時,首先要斷開構(gòu)成組合邏輯環(huán)中第一邏輯門和第二邏輯門之間的一端連接,并在斷開連接處,分別插入外部輸入和外部輸出。然后對斷開組合邏輯環(huán)后的邏輯電路進(jìn)行查找映射。通過該方法,實現(xiàn)了對包含組合邏輯環(huán)的邏輯電路進(jìn)行查找表映射。
附圖說明
圖1為現(xiàn)有技術(shù)中的一個存在組合邏輯環(huán)的邏輯電路結(jié)構(gòu)示意圖;
圖2本發(fā)明實施例提供的一種查找表工藝映射方法流程示意圖;
圖3為本發(fā)明實施例提供的斷開邏輯電路中的組合邏輯環(huán),并插入外部輸入和外部輸出的邏輯結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施提供的,在圖1所示的邏輯電路基礎(chǔ)上,分別在輸入輸出端口加入緩沖器后的邏輯電路結(jié)構(gòu)示意圖;
圖5為本發(fā)明實施例提供的查找表映射后獲取的查找表結(jié)果示意圖;
圖6為本發(fā)明實施例提供的刪除外部輸入輸出,恢復(fù)組合邏輯環(huán)后的查找表結(jié)果示意圖。
具體實施方式
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
圖2本發(fā)明實施例提供的一種查找表工藝映射方法流程示意圖200。如圖所示2,該方法包括:
步驟210,當(dāng)確定邏輯電路存在組合邏輯環(huán)時,斷開邏輯電路中構(gòu)成組合邏輯環(huán)的第一邏輯門和第二邏輯門之間的一端電路連接。
具體的,如圖1所示的一個存在組合邏輯環(huán)的邏輯電路結(jié)構(gòu)示意圖,當(dāng)已經(jīng)確定存在組合邏輯環(huán)時,將構(gòu)成組合邏輯環(huán)中的第一邏輯門和第二邏輯門之間的一端電路連接斷開。
步驟220,在第一邏輯門被斷開連接的第一輸入端插入外部輸入,以及在第二邏輯門被斷開連接的第二輸出端插入外部輸出。
具體的,在第一邏輯門被斷開連接的第一輸入端插入外部輸入PI_A,在第二邏輯門被斷開鏈接的第二輸出端插入外部輸出PO_A,具體如圖3所示。
讀者應(yīng)理解,這里的PI_A和PO_A其實并沒有任何的實際意義,只是想說明將組合邏輯環(huán)中的一端電路,即“與”邏輯門A2的輸入端b和“與”邏輯門A3的輸出端之間的連接電路斷開,那么A2的b輸入端需要連接一個輸入總線,而A3的輸出端同樣需要連接一個輸出總線。而外部輸入端PI_A的輸入和外部輸出端PO_A的輸出正是等效于邏輯門A2的b輸入端的輸入,或邏輯門A3的輸出端的輸出。此時,邏輯環(huán)已經(jīng)被消除,可以完成查找表的映射過程了。具體如步驟230所述。
步驟230,對斷開組合邏輯環(huán)后的邏輯電路進(jìn)行查找表映射。
具體的,具體如圖5所示,這里將圖3中的邏輯門A0和A2映射到查找表(Look-Up-Table,簡稱LUT)LUT1上,而將邏輯門A0,A1和A3映射到查找表LUT2上。
具體過程包括:
因為圖3中的邏輯門A0和A2映射到圖5中的查找表LUT1中,邏輯門A0和A2一共包括了三個輸入端,輸入端D和輸入端C,以及第三輸入端PI_A,分別映射到查找表LUT1的三個輸入端,而輸出端Q映射到LUT1的輸出端;
圖3中的邏輯門A0,A1和A3映射到查找表LUT2上,邏輯門A0,A1和A3所包括的輸入端為輸入端D,輸入端C以及Q端,輸出端為NQ和PI_O。
當(dāng)然,本文中僅僅是舉了一個具體的將邏輯電路映射到查找表的例子,但是邏輯電路可以根據(jù)不同的組合,映射為不同的查找表,其他映射方式與本例類似,不再贅述。而具體的如何根據(jù)一個邏輯電路確定映射后的查找表,則根據(jù)查找表的掩碼值確定,即首先根據(jù)邏輯電路中的輸入值,獲取一個邏輯電路輸出值的真值表。而這個真值表正是查找表對應(yīng)的掩碼值。當(dāng)邏輯電路的輸入值不同時,可以確定不同的輸出值。那么根據(jù)這個輸出值來確定對應(yīng)的查找表。
當(dāng)然,斷開組合邏輯環(huán)就是為了實現(xiàn)邏輯電路到查找表的映射,在完成映射之后,仍然需要恢復(fù)原來邏輯電路中存在的組合邏輯環(huán)。因此,該方法還包括步驟240。
步驟240,恢復(fù)組合邏輯環(huán),并刪除外部輸入和外部輸出。
具體如圖6所示,恢復(fù)邏輯電路中的組合邏輯環(huán),并刪除外部輸入和外部輸出。
可選的,在斷開邏輯電路中構(gòu)成組合邏輯環(huán)的第一邏輯門和第二邏輯門之間的一端電路連接之前,該方法還包括:步驟205,遍歷邏輯電路,查找組合邏輯環(huán)。
具體過程為:
在本申請文件中,僅以圖1所示的邏輯電路為例進(jìn)行說明,其他邏輯電路類似,這里不再贅述。
首先,需要說明的是,查找組合邏輯環(huán)的方法是圖論中的典型方法,每個“邏輯器件”(在下文中均指block或block單元)都對應(yīng)圖(圖論中的圖)中的一個節(jié)點。因此為了表述方便,對于輸入輸出的接口,我們分別插入了一個緩沖器,其意義就是把接口轉(zhuǎn)化為一個等效的block,從而使得搜索與入隊出隊的元素都是block,即可將問題等效轉(zhuǎn)化為一個圖搜索的問題。
因此,步驟a,在邏輯電路的最初輸入輸出端口分別插入緩沖器bufferblock。具體如圖4所示。圖4為本發(fā)明實施例提供的,在圖1所示的邏輯電路基礎(chǔ)上,分別在輸入輸出端口加入緩沖器后的邏輯電路結(jié)構(gòu)示意圖。
首先,因為在查找組合邏輯環(huán)的思想是將所有的邏輯門都加入到先進(jìn)先出的隊列A中,然后查找每一個邏輯門的輸入輸出的block單元,當(dāng)確定某一個block單元所在的邏輯門,在查找過程中被標(biāo)記兩次時,則說明該block單元所在的邏輯門可能屬于構(gòu)成組合邏輯環(huán)的一個邏輯門。而為了能夠更好的實現(xiàn)查找到組合邏輯環(huán),在輸入端口D和C端分別插入輸入緩沖器,例如將其分別命名為IBUF0和IBUF1,而在輸出端口Q和NQ端分別插入輸出緩存器,并將其命名為OBUF0和OBUF1。
步驟b,將OBUF0和OBUF1加入到先進(jìn)先出隊列A中,并將IBUF0與IBUF1標(biāo)記為checked。查找組合邏輯環(huán)的思想是從輸出端查找到輸入端,所以需要首先將IBUF0和IBUF1標(biāo)記為checked,以便于確定查找的終點。
應(yīng)理解,這里所說的標(biāo)記為checked,表示該節(jié)點,以及該節(jié)點的全部輸入節(jié)點都已完成檢查且確定不包含在任何組合邏輯環(huán)中,而當(dāng)一個節(jié)點的全部輸入都已經(jīng)被標(biāo)記為checked時,則說明該節(jié)點可以被標(biāo)記為checked。
而在下文中,將會介紹到某一節(jié)點被標(biāo)記為checking,而checking表示該節(jié)點(在圖4中具體指的是邏輯門)以及該節(jié)點的全部輸入節(jié)點之前都已經(jīng)被訪問過,但是尚且不能夠確定該節(jié)點是否在組合邏輯環(huán)中。而存在組合邏輯環(huán)的充要條件是,一個被標(biāo)記為checking的節(jié)點被再次訪問到。
步驟c,按照先進(jìn)先出的原則,首先從先進(jìn)先出隊列A中取出緩沖器OBUF0,其中OBUF0的block單元并未有任何的標(biāo)記,包括已經(jīng)被訪問的標(biāo)記Checking或者已經(jīng)被檢查的標(biāo)記checked。那么,要首先確定其輸入端“與”門A2的block單元是否有被標(biāo)記,確定A2的block單元同樣沒有任何標(biāo)記,所以,暫時不能確定OBUF0是否存在組合邏輯環(huán),不能夠?qū)⑵涞腷lock單元標(biāo)記為checked,只能將其的block單元先標(biāo)記為checking。并將A2放入到隊列A中。
步驟d,從隊列A中取出OBUF1,類似的,OBUF1的block單元并沒有做過任何標(biāo)記,而OBUF1的輸入為“與”門A3,A3的block單元同樣沒有做過任何的標(biāo)記,那么暫時不能夠確定OBUF1是否存在組合邏輯環(huán),只能暫時將其標(biāo)記為checking。并從隊列A中取出OBUF1,且將其的輸入A3加入到隊列A中。
步驟e,從隊列A中取出A2,因為A2并未做過任何標(biāo)記,確定其輸入為“與”門A0和“與”門A3。A0和A3同樣未做過任何處理,所以,暫時將A2標(biāo)記為checking,并從隊列A中取出A2,且將A0和A3加入到隊列中。
步驟f,因為此時隊列中包括的是A3,A0和A3,這里,為了更好的區(qū)別,將隊列中第一次加入的A3命名為A3(1),將第二次加入的A3命名為A3(2)。根據(jù)先入先出的順序,需要取出A3(1),因為此時A3(1)同樣未做過任何處理,所以,確定其輸入分別為“與”門A1和“與”門A2,因為A1并未做過任何處理,而A2也僅僅標(biāo)記為checking,而不是checked,所以,同樣不能確定A3(1)是否屬于構(gòu)成組合邏輯環(huán)中的一個邏輯門,只能暫時將其標(biāo)記為checking,并將其從隊列中取出,將A1和A2加入到隊列中。
步驟g,按照先進(jìn)先出順序,從隊列A中取出A0,因為A0從未被做過任何標(biāo)記,所以確定其輸入為IBUF0和IBUF1,因為之前已經(jīng)分別標(biāo)記過IBUF0和IBUF1為checked,所以可以確定A0不屬于構(gòu)成組合邏輯環(huán)中的一個邏輯門,可以將其標(biāo)記為checked,將其從隊列中取出。
步驟h,從隊列中取出A3(2),因為,之前已經(jīng)將其標(biāo)記過checking,而此時又再次被取出,則說明A3(2)屬于構(gòu)成組合邏輯環(huán)中的一個邏輯門。即該邏輯電路中存在組合邏輯環(huán)。此時,查找完畢。
為了能夠更加方便讀者理解,這里再次對A3(1)和A3(2)做補充說明:在上述步驟中,A3在隊列中共出現(xiàn)兩次,第一次出現(xiàn)A3是在步驟d中,并可以將其命名為A3(1),第二次出現(xiàn)A3是在步驟e中,記為A3(2)。
那么,還原一下上文中所有邏輯門加入隊列A中順序應(yīng)該是:
OBF01和OBF02,A2,A3(1),A0和A3(2)。所以,在步驟g中確定A0不屬于構(gòu)成組合邏輯環(huán)的邏輯門之后,那么按照先進(jìn)先出的順序,所要取出進(jìn)行處理的邏輯門應(yīng)該是A3(2)。即在步驟h中重新取出A3。并且判斷出A3已經(jīng)在隊列中被標(biāo)記過checking,而此次又被取出,則說明A3屬于構(gòu)成組合邏輯環(huán)中的一個邏輯門。即該邏輯電路中存在組合邏輯環(huán),需要進(jìn)行下一步的處理,即消除組合邏輯環(huán),完成查找表的映射。具體消除組合邏輯環(huán)的步驟已經(jīng)在步驟210~220做了詳細(xì)介紹。
另外,讀者應(yīng)該理解,上述所舉的在一個具體的邏輯電路中查找組合邏輯環(huán),消除組合邏輯環(huán),完成查找表映射,以及恢復(fù)組合邏輯環(huán)的過程,僅僅是一個具體的實施方式。在其他邏輯電路中查找組合邏輯環(huán)、消除組合邏輯環(huán)完成查找表映射以及恢復(fù)組合邏輯環(huán)的過程與上文中所介紹的方式類似,這里不再贅述。
此外,還需要說明的是,上述說介紹的查找組合邏輯環(huán)的方法,當(dāng)其應(yīng)用到一個具體的邏輯電路中時,每次只能查詢到一個組合邏輯環(huán)。對應(yīng)的,消除組合邏輯環(huán)的方法也同樣是每執(zhí)行一次,消除一個組合邏輯環(huán)。因此,當(dāng)一個邏輯電路中存在多個組合邏輯環(huán)時,則需要重復(fù)執(zhí)行上述步驟。直到確認(rèn)邏輯電路中沒有組合邏輯環(huán)的存在為止,并且在消除組合邏輯環(huán)后,再將插入的IBUF和OBUF從邏輯電路中移除。
本發(fā)明提供的查找表工藝映射方法,在確定邏輯電路中存在組合邏輯環(huán)時,首先要斷開邏輯電路中構(gòu)成組合邏輯環(huán)中第一邏輯門和第二邏輯門之間的一端電路連接,并在斷開連接處,分別插入外部輸入和外部輸出。然后對斷開組合邏輯環(huán)后的邏輯電路進(jìn)行查找映射。通過該方法,實現(xiàn)了對包含組合邏輯環(huán)的邏輯電路進(jìn)行查找表映射。
專業(yè)人員應(yīng)該還可以進(jìn)一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機(jī)存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上所述的具體實施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。