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