本發(fā)明涉及硬件設(shè)計技術(shù)領(lǐng)域,尤其涉及一種流水級的實現(xiàn)方法、流水級及流水線。
背景技術(shù):
流水線是硬件設(shè)計中常用的控制策略。它對比狀態(tài)機的控制有更高的效率,因而受到資深硬件工程師們的青睞。
現(xiàn)有的流水線設(shè)計是以流水線為整體進行設(shè)計,這種設(shè)計主要存在以下問題:設(shè)計時沒有統(tǒng)一標準,特別是共同開發(fā)時,很難查看維護別人的代碼;以流水線作為整體設(shè)計時,流水線級數(shù)和流水控制策略(控制協(xié)議,比如為實現(xiàn)預(yù)定的功能,給規(guī)定的變量賦值、數(shù)據(jù)的運算等)進行了綁定,都是先在文檔中規(guī)劃好,再去做RTL(register transfer level,指的是用寄存器這一級別的描述方式來描述電路的數(shù)據(jù)流方式)設(shè)計,當需要改變流水線級數(shù)時,需要對應(yīng)的修改流水控制策略。這種修改以流水線作為整體進行修改,往往改動較大,甚至需要重新設(shè)計,驗證也要重新做,耗時耗力。不利于流水線的升級。
技術(shù)實現(xiàn)要素:
發(fā)明人經(jīng)過大量研究發(fā)現(xiàn),現(xiàn)有流水線設(shè)計存在上述問題的根本原因是目前還沒有獨立工作的流水級,以致現(xiàn)有流水線不能實現(xiàn)模塊化設(shè)計,只能整體進行設(shè)計。本發(fā)明實施例提供了一種流水級的實現(xiàn)方法、流水級及流水線,設(shè)計實現(xiàn)一種獨立存在的流水級,在流水級的基礎(chǔ)上采用統(tǒng)一的連接方式實現(xiàn)流水線的模塊化設(shè)計,為流水線的設(shè)計提供一種統(tǒng)一的設(shè)計標準,使得流水線的結(jié)構(gòu)具有通用性、擴展性,方便進行流水級的插入及裁剪,以及流水線的后期維護和升級,降低流水線的設(shè)計難度。
有鑒于此,本發(fā)明第一方面提供一種流水級的實現(xiàn)方法,包括:
所述流水級中數(shù)據(jù)的存儲深度為1;流水級的狀態(tài)為滿時,寫出使能信號有效;流水級為滿且寫出準備信號有效或流水級為空時,寫入準備信號有效;則所述方法包括:
判斷流水級的狀態(tài),若為空,且寫入使能信號有效,則寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
若為滿,且寫出準備信號有效,則寫入準備信號有效,寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號;若寫入使能信號有效,則寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
優(yōu)選的,所述判斷流水級的狀態(tài)包括:
判斷用于指示流水級狀態(tài)的第一比特位和第二比特位的數(shù)值是否相等,若相等,則流水級狀態(tài)為空;反之為滿;其中,第一比特位在寫入使能信號與寫入準備信號均有效時翻轉(zhuǎn);第二比特位在寫出使能信號與寫出準備信號均有效時翻轉(zhuǎn)。
本發(fā)明實施例還提供一種流水級的實現(xiàn)方法,所述流水級中數(shù)據(jù)的存儲深度大于1;流水級的狀態(tài)為非滿時,寫入準備信號有效;流水級為非空時,寫出使能信號有效;則所述方法包括:
判斷流水級的狀態(tài),若流水級的狀態(tài)為既非空又非滿,且寫入使能信號有效,則按照先進先出機制向流水級寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;若寫出準備信號有效,則按照先進先出機制從流水級寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
若為空,且寫入使能信號有效,則按照先進先出機制向流水級寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
若為滿,且寫出準備信號有效,則按照先進先出機制從流水級寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
優(yōu)選的,所述判斷流水級的狀態(tài)包括:
判斷指示流水級狀態(tài)的第一雙比特與第二雙比特中的低位數(shù)值是否相等;
若低位數(shù)值不相等,則流水級的狀態(tài)為既非空又非滿;若低位數(shù)值相等,則判斷第一雙比特與第二雙比特中的高位數(shù)值是否相等;
若高位數(shù)值相等,則流水級為空;若高位數(shù)值不相等,則流水級為滿;其中,第一雙比特在寫入使能信號與寫入準備信號均有效時數(shù)值加1;第二雙比特在寫出使能信號與數(shù)據(jù)寫出準備信號均有效時數(shù)值加1。
本發(fā)明實施例還提供一種流水級,包括:所述流水級中數(shù)據(jù)的存儲深度為1;流水級的狀態(tài)為滿時,寫出使能信號有效;流水級為空或流水級為滿且寫出準備信號有效時,寫入準備信號有效;則所述流水級包括:
第一判斷模塊,用于判斷流水級的狀態(tài);
第一寫入模塊,用于第一判斷模塊判定流水級狀態(tài)為空時,若寫入使能信號有效,寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
第一寫出模塊,用于第一判斷模塊判定流水級為滿時,若寫出準備信號有效,寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
第一確定模塊,用于第一判斷模塊判定流水級為滿時,確定寫入準備信號有效;
第二寫入模塊,用于第一確定模塊判定寫入使能信號有效時,若數(shù)據(jù)寫出成功,寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
本發(fā)明實施例還提供一種流水級,所述流水級中數(shù)據(jù)的存儲深度大于1;流水級的狀態(tài)為非滿時,寫入準備信號有效;流水級為非空時,寫出使能信號有效;則所述流水級包括:
第二判斷模塊,用于判斷流水級的狀態(tài);
第三寫入模塊,用于流水級的狀態(tài)為既非空又非滿時,若寫入使能信號有效,則按照先進先出機制向流水級寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
第二寫出模塊,用于流水級的狀態(tài)為既非空又非滿時,若寫出準備信號有效,按照先進先出機制從流水級寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
第四寫入模塊,用于流水級為空時,若寫入使能信號有效,按照先進先出機制向流水級寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
第三寫出模塊,用于流水級為滿時,若寫出準備信號有效,按照先進先出機制從流水級寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
本發(fā)明實施例還提供一種流水線,所述流水線包括:上述任一所述的存儲深度為1的多個流水級和/或上述任一所述的存儲深度大于1的多個流水級;
前一流水級連接至少一個下一級流水級,前一級流水級通過選通信號選擇下一級流水級;
相鄰兩級的流水級之間的連接如下:前一級流水級的寫出使能信號輸入至后一級流水級,作為下一級流水級的寫入使能信號;前一級流水級的寫出控制信號輸入至后一級流水級,作為后一級流水級的寫入控制信號;前一級流水級寫出的數(shù)據(jù)輸入至后一級流水級,作為后一級流水級的輸入數(shù)據(jù);后一級流水級的寫入準備信號輸入至前一級流水級,作為前一級流水級的寫出準備信號。
優(yōu)選的,當前一級流水級連接多個下一級流水級時,對應(yīng)數(shù)據(jù)的控制信號中攜帶數(shù)據(jù)流向的下一級流水級的標識,以及數(shù)據(jù)的順序標識。
優(yōu)選的,部分流水級的寫入準備信號與寫出準備信號在流水級內(nèi)部通過寄存器隔離,以達到流水線對時序的要求。
從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
本發(fā)明實施例為流水級提供了一種獨立的工作邏輯,在此工作邏輯下,流水級可以看作一個獨立的模塊進行工作。
進一步的,在得到具有獨立工作邏輯的流水級后,將流水級看作一個模塊,在級聯(lián)成流水線時,除后一級流水級的數(shù)據(jù)寫入準備信號輸入至前一級 流水級,作為前一級流水級的數(shù)據(jù)寫出準備信號之外,只需前級流水級的輸出類信號連接至下級流水級作為輸入信號。上述連接方式為流水級級聯(lián)提供了一種通用的連接方式。按照上述方式,可以對流水線進行流水級的裁剪以及插入,實現(xiàn)簡單,使得流水線的工作非常靈活。
附圖說明
圖1為本發(fā)明實施例中一種流水級的實現(xiàn)方法實施例1的流程圖;
圖2為本發(fā)明實施例中一種流水級實施例1的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實施例對應(yīng)的一種流水級的時序圖;
圖4為本發(fā)明實施例中一種流水級的實現(xiàn)方法實施例2的流程圖;
圖5為本發(fā)明實施例中一種流水級實施例2的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實施例對應(yīng)的另一種流水級時序圖;
圖7為本發(fā)明實施例中一個單向條狀流水線示意圖;
圖8為本發(fā)明實施例中一個網(wǎng)狀流水線示意圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的,所有其他實施例,都應(yīng)當屬于本發(fā)明保護的范圍。
下面對本發(fā)明實施例的技術(shù)方案做詳細、公開的描述。
首先介紹一下流水級設(shè)置的端口信號,主要包括時鐘信號(clk)、復(fù)位信號(rst)、寫入使能信號(upen)、寫入準備信號(uprdy)、寫入控制信號(upctrl)、寫入數(shù)據(jù)信號(upda)、寫出使能信號(dnen)、寫出準備信號(dnrdy)、寫出控制信號(dnctrl)、寫出數(shù)據(jù)信號(dnda)。
其中時鐘信號(clk)、復(fù)位信號(rst)為系統(tǒng)級信號。寫入使能信號(upen)和寫入準備信號(uprdy)為流水級寫入數(shù)據(jù)時的依據(jù),當二者均有效時,流水級才能寫入數(shù)據(jù)(寫入數(shù)據(jù)信號(upda))。同理,寫出使能信號(dnen)、 寫出準備信號(dnrdy)為流水級寫出數(shù)據(jù)時的依據(jù),當二者均有效時,流水級才能寫出數(shù)據(jù)(寫出數(shù)據(jù)信號(dnda))。
與數(shù)據(jù)信號(寫入數(shù)據(jù)信號、寫出數(shù)據(jù)信號)對應(yīng)的為控制信號(寫入控制信號(upctrl)、寫出控制信號(dnctrl)),控制信號根據(jù)具體實現(xiàn)的功能設(shè)置,即在流水級的基礎(chǔ)上具體實現(xiàn)某種功能時設(shè)定的數(shù)據(jù)運算或者傳輸協(xié)議,比如在某一具體功能下,做如下控制協(xié)議:當寫入的數(shù)據(jù)大于某一設(shè)定數(shù)值時,將數(shù)據(jù)減去設(shè)定數(shù)值。
以下實施例中出現(xiàn)的信號參考上述描述,不再贅述。
本發(fā)明提供一種流水級的實現(xiàn)方法實施例1,參考圖1所示的流程圖,本實施例所述的流水級中數(shù)據(jù)的存儲深度為1,所述存儲深度是指流水級可以存儲一定長度的數(shù)據(jù)的個數(shù),比如,流水級中設(shè)定的存儲數(shù)據(jù)為32位,若流水級中數(shù)據(jù)的存儲深度為1,則流水級能只存儲1個32位的數(shù)據(jù),若流水級中數(shù)據(jù)的存儲深度為3,則流水級能存儲3個32位的數(shù)據(jù)。
本實施例具體可以包括如下步驟:
S11、判斷流水級的狀態(tài);
本實施例中所述的流水級中數(shù)據(jù)的存儲深度為1,故其狀態(tài)有兩種:空(流水級中沒有數(shù)據(jù))和滿(流水級中有數(shù)據(jù))。
當流水級的狀態(tài)為空時,即流水級中沒有數(shù)據(jù),則可以向流水級中寫入數(shù)據(jù),此時寫入準備信號有效,以便于為向流水級中寫入數(shù)據(jù)做準備。
當流水級的狀態(tài)為滿時,可以從流水級中讀數(shù)據(jù),寫出使能信號有效,以便于為從流水級中寫出數(shù)據(jù)做準備。若此時寫出準備信號也有效,則可以從流水級中寫出數(shù)據(jù),一旦數(shù)據(jù)被寫出,則流水級處于空的狀態(tài),所以在這種情況下,即流水級為滿且寫出準備信號有效時,寫入準備信號有效,以便于在數(shù)據(jù)被寫出后,為向流水級中寫入數(shù)據(jù)做準備。
當本步驟中判定流水級狀態(tài)為空時,進入步驟S12,流水級狀態(tài)為滿時, 進入步驟S14。
S12、判斷寫入使能信號是否有效;
流水級的狀態(tài)為空時,可以向流水級中寫入數(shù)據(jù),此時寫出使能信號無效,寫入準備信號有效。由于寫出使能信號與寫出準備信號均有效時,才會輸出數(shù)據(jù),所以,當寫出使能信號無效時,無需再判斷寫出準備信號是否有效,只需判斷寫入使能信號是否有效。
當寫入準備信號有效且寫入使能信號有效時,則執(zhí)行步驟S13,向流水級中寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號。若此時寫入準備信號有效,而寫入使能信號無效,則寫入數(shù)據(jù)失敗。
其中,本實施例中所指的信號有效是說信號是處于高電平還是低電平,至于高電平有效還是低電平有效,可以由用戶自定義設(shè)置,這里不再贅述。
S13、寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
S14、判斷寫出準備信號是否有效;
流水級的狀態(tài)為滿時,可以從流水級中讀出數(shù)據(jù),寫出使能信號有效,需要判斷判斷寫出準備信號是否有效。
當寫出使能信號有效且寫出準備信號有效時,進入步驟S15。當寫出使能信號有效而寫出準備信號無效時,寫出數(shù)據(jù)失敗。由于流水級的狀態(tài)是滿,所以,一旦數(shù)據(jù)寫出失敗,則無論此時寫入相關(guān)的信號是否有效,寫入數(shù)據(jù)均是失敗的。
S15、寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
在流水級的狀態(tài)為滿的情況下,當寫出準備信號均有效時,寫入準備信號也有效,所以執(zhí)行完步驟S15之后,進入步驟S16確定是否可以寫入數(shù)據(jù)。
S16、判斷寫入使能信號是否有效;
基于步驟S15的結(jié)果可知,寫入準備信號也有效,若此時寫入使能信號也有效,則可以寫入數(shù)據(jù),進入步驟S17。
S17、寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
當流水級的狀態(tài)為空時,則只能接收輸入的數(shù)據(jù)(寫入準備信號有效),不能向外寫出數(shù)據(jù)(寫出使能信號無效);當流水級狀態(tài)為滿時,則可以向外寫出數(shù)據(jù)(寫出使能信號有效),同時能不能接收寫入的數(shù)據(jù)則由流水級寫出數(shù)據(jù)是否成功決定。
由于現(xiàn)有技術(shù)中沒有獨立的流水級,所以流水線在設(shè)計時是以整體進行設(shè)計的,不方便后期的升級。本實施例提供的技術(shù)方案,主要為實現(xiàn)一種獨立的流水級提供一種可行的方法,為流水線的模塊化設(shè)計奠定基礎(chǔ)。
優(yōu)選的,在實施例1的基礎(chǔ)上,在判斷流水級的狀態(tài)時,可以通過設(shè)置指示位的方式指示流水級的狀態(tài),比如,設(shè)置兩個比特位分別記為第一比特位和第二比特位,當?shù)谝槐忍匚缓偷诙忍匚坏臄?shù)值相等時(比如均為“0”或均為“1”),指示流水級狀態(tài)為空,反之為滿。當然,也可以設(shè)定第一比特位和第二比特位的數(shù)值相等時,流水級狀態(tài)為滿,反之為空,這里不作具體限定。
本領(lǐng)域技術(shù)人員可以理解,流水級狀態(tài)的指示可以由設(shè)計人員自定義實現(xiàn),并不局限于上述方式。
在流水級的正常工作過程中,隨著數(shù)據(jù)的寫入與寫出,流水級的狀態(tài)是實時變化的,所以指示流水級狀態(tài)的指示位應(yīng)當能夠?qū)崟r的反應(yīng)流水級的真實狀態(tài),本實際操作中可以通過如下方式實現(xiàn):
當寫入使能信號與寫入準備信號均有效時,第一比特位翻轉(zhuǎn);寫出使能信號與寫出準備信號均有效時,第二比特位翻轉(zhuǎn)。
在流水級工作過程中,實時根據(jù)指示位的數(shù)值狀態(tài)判斷流水級的狀態(tài),依據(jù)判斷結(jié)果進行數(shù)據(jù)的寫入或者寫出。流水級一旦被復(fù)位,則流水級回到初始狀態(tài),指示流水級狀態(tài)的指示位賦值為0。
相應(yīng)的,本發(fā)明實施例還提供一種流水級實施例1,參考圖2所示,為對 應(yīng)的結(jié)構(gòu)示意圖,其中,所述流水級中數(shù)據(jù)的存儲深度為1;流水級的狀態(tài)為滿時,寫出使能信號有效;流水級為滿且寫出準備信號有效或流水級為空時,寫入準備信號有效,則所述流水級包括:
第一判斷模塊21,用于判斷流水級的狀態(tài);
第一寫入模塊22,用于第一判斷模塊判定流水級狀態(tài)為空時,若寫入使能信號有效,寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
第一寫出模塊23,用于第一判斷模塊判定流水級為滿時,若寫出準備信號有效,寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
第一確定模塊24,用于第一判斷模塊判定流水級為滿時,確定寫入準備信號有效;
第二寫入模塊25,用于第一確定模塊判定寫入使能信號有效時,若數(shù)據(jù)寫出成功,寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
優(yōu)選的,流水級狀態(tài)的判斷可以參考上述對設(shè)置指示位的描述,這里不再贅述。
為了便于對本發(fā)明實施例提供的技術(shù)方案的理解,下面通過舉例對上述內(nèi)容進行簡要說明。
參考表1所示,為流水級的端口設(shè)計參考,參考前述流水級的端口設(shè)置,在實際操作中,設(shè)置時鐘信號(clk)、復(fù)位信號(rst)、寫入使能信號(upen)、寫入控制信號(upctrl)、待寫入的數(shù)據(jù)和寫出準備信號(dnrdy)為流水線工作過程中接收的輸入信號。寫入控制信號(upctrl)、待寫入的數(shù)據(jù)一起被寫入流水級。
表1 流水級的端口設(shè)計
對應(yīng)的工作邏輯參考表2所示,以第一比特位為wp1、第二比特位為rp1示意說明,其中wp1和rp1在實際應(yīng)用中可以用寄存器實現(xiàn)。
表2 流水級工作邏輯說明
表2描述的邏輯對應(yīng)的真值表參考表3所示,其中用“1”表示信號的狀態(tài)為有效,用“0”表示信號的狀態(tài)為無效。
表3 表2對應(yīng)的流水級邏輯的真值表
在對應(yīng)的邏輯設(shè)計下,舉例說明根據(jù)表1和表2的邏輯設(shè)計得到的一個具體的時序圖,參考圖3所示。表4為對應(yīng)的時序說明。
表4 對應(yīng)圖3所示的時序說明
在實施例1的基礎(chǔ)上,本發(fā)明還提供一種流水級的實現(xiàn)方法實施例2,參考圖4所示的流程圖,其中,所述流水級中數(shù)據(jù)的存儲深度大于1;設(shè)定流水級的狀態(tài)為非滿時,寫入準備信號有效;流水級為非空時,寫出使能信號有效;則本實施例主要包括:
S401、判斷流水級的狀態(tài);
與上述方法實施例1不同的是,本實施例中流水級的存儲深度大于1,所以流水級的狀態(tài)除了空和滿之外,還有既非滿又非空。比如,流水級中數(shù)據(jù) 的存儲深度為3,而流水級中存儲的數(shù)據(jù)只有2個。
如果流水級的狀態(tài)為既非空又非滿,進入步驟S402,若流水級的狀態(tài)為空,進入步驟S404,若流水級的狀態(tài)為滿,進入步驟S405。
S402、若寫入使能信號有效,則按照先進先出機制向流水級寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
流水級處于非空也非滿的狀態(tài)時,既可以進行數(shù)據(jù)的寫入也可以進行數(shù)據(jù)的寫出,同時根據(jù)設(shè)定的內(nèi)容可知,流水級處于非空也非滿的狀態(tài)時,寫入準備信號與寫出使能信號均有效。在寫入準備信號有效時,寫入使能信號也有效,則可以進行數(shù)據(jù)的寫入,由于流水級中數(shù)據(jù)的存儲深度大于1,所以優(yōu)選的,這里采用先進先出機制進行數(shù)據(jù)的寫入與讀出,保證數(shù)據(jù)的有序性。反之,若寫入使能信號無效,則寫入數(shù)據(jù)失敗。
S403、若寫出準備信號有效,按照先進先出機制從流水級寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
在寫出使能信號有效時,若寫出準備信號無效,則寫出數(shù)據(jù)失敗。當寫出使能信號有效且寫出準備信號有效時,則按照先進先出機制從流水級寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
由于流水級的狀態(tài)為既非空又非滿時,可以進行數(shù)據(jù)的寫入也可以進行數(shù)據(jù)的寫出,所以本領(lǐng)域技術(shù)人員可以理解,步驟S402和S403之間并無固定的先后執(zhí)行順序。
S404、若寫入使能信號有效,則按照先進先出機制向流水級寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
在步驟中流水級為空,可以等效的理解為一種特殊的非滿狀態(tài),則寫入準備信號有效,若此時寫入使能信號也有效,則按照先進先出機制向流水級寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號。若寫入使能信號無效,則寫入數(shù)據(jù)失敗。
流水級的狀態(tài)為空,則不能寫出數(shù)據(jù),只能寫入數(shù)據(jù),所以寫出使能信 號無效。
S405、若寫出準備信號有效,則按照先進先出機制從流水級寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
根據(jù)設(shè)定的邏輯可知,在本實施例中流水級的狀態(tài)為滿時(看作一種非空狀態(tài)),寫出使能信號有效,如果寫出準備信號也有效,則按照先進先出機制從流水級寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
本實施例具體可以為實現(xiàn)存儲深度大于1的流水級提供一種可行的方法。
優(yōu)選的,在所述方法實施例2的基礎(chǔ)上,設(shè)置兩個兩位的比特位來標識流水級的狀態(tài),比如,將兩個比特位記為第一雙比特位和第二雙比特位,兩比特的數(shù)值包括“00、01、10、11”四種,具體在實際操作中,流水級狀態(tài)的判斷過程可以采用如下方式:
判斷第一雙比特與第二雙比特中的低位數(shù)值是否相等;若低位數(shù)值不相等,則判定流水級的狀態(tài)為既非空又非滿;若低位數(shù)值相等,則判斷第一雙比特與第二雙比特中的高位數(shù)值是否相等;若高位數(shù)值相等,則判定流水級的狀態(tài)為空;若高位數(shù)值不相等,則判定流水級的狀態(tài)為滿。
為了能夠?qū)崟r的指示流水級的狀態(tài),在流水級寫入和寫出數(shù)據(jù)時,指示位也要相應(yīng)的進行變化,具體的采用如下方式:寫入使能信號與寫入準備信號均有效時,第一雙比特位數(shù)值加1;寫出使能信號與數(shù)據(jù)寫出準備信號均有效時,第二雙比特位數(shù)值加1。
對應(yīng)的,本發(fā)明實施例還提供一種流水級實施例2,如圖5所示,其中,所述流水級中數(shù)據(jù)的存儲深度大于1;設(shè)定流水級的狀態(tài)為非滿時,寫入準備信號有效;流水級為非空時,寫出使能信號有效;則所述流水級包括:
第二判斷模塊51,用于判斷流水級的狀態(tài);
第三寫入模塊52,用于流水級的狀態(tài)為既非空又非滿時,若寫入使能信號有效,則按照先進先出機制向流水級寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
第二寫出模塊53,用于流水級的狀態(tài)為既非空又非滿時,若寫出準備信號有效,按照先進先出機制從流水級寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
第四寫入模塊54,用于流水級為空時,若寫入使能信號有效,按照先進先出機制向流水級寫入數(shù)據(jù)以及該數(shù)據(jù)的控制信號;
第三寫出模塊55,用于流水級為滿時,若寫出準備信號有效,按照先進先出機制從流水級寫出數(shù)據(jù)以及該數(shù)據(jù)的控制信號。
優(yōu)選的,本實施例中,第二判斷模塊可以通過設(shè)置兩個兩位的比特位來確定流水級的狀態(tài),比如,將兩個比特位記為第一雙比特位和第二雙比特位,兩比特的數(shù)值包括“00、01、10、11”四種,具體在實際操作中,判斷過程可以采用如下方式:
判斷第一雙比特與第二雙比特中的低位數(shù)值是否相等;若低位數(shù)值不相等,則流水級的狀態(tài)為既非空又非滿;若低位數(shù)值相等,則判斷第一雙比特與第二雙比特中的高位數(shù)值是否相等;若高位數(shù)值相等,則流水級的狀態(tài)為空;若高位數(shù)值不相等,則流水級的狀態(tài)為滿。
為了可以實時的指示流水級的變化,指示位的狀態(tài)也要隨著流水級寫入數(shù)據(jù)或?qū)懗鰯?shù)據(jù)變化,具體為:寫入使能信號與寫入準備信號均有效時,第一雙比特位數(shù)值加1;寫出使能信號與數(shù)據(jù)寫出準備信號均有效時,第二雙比特位數(shù)值加1。參考前述例子,本例中以第一雙比特位為wp2、第二雙比特位為rp2標識流水級的狀態(tài)。本實施例中,流水級的工作邏輯如下:
表5 流水級工作邏輯說明
表5描述的邏輯對應(yīng)的時序圖可以參考圖6給出的一種示例。對應(yīng)的真值表參考表6所示:
表6 表5描述的邏輯對應(yīng)的真值表
本發(fā)明實施例還提供一種流水線實施例,包括多個如上述流水級實施例1所述的流水級和/或多個如上述流水級實施例2所述的流水級。前一流水級連接至少一個下一級流水級,前一級流水級通過選通信號選擇下一級流水級;
相鄰兩級的流水級之間的連接如下:
前一級流水級的寫出使能信號輸入至后一級流水級,作為下一級流水級的寫入使能信號;前一級流水級的寫出控制信號輸入至后一級流水級,作為 后一級流水級的寫入控制信號;前一級流水級寫出的數(shù)據(jù)輸入至后一級流水級,作為后一級流水級的輸入數(shù)據(jù);后一級流水級的寫入準備信號輸入至前一級流水級,作為前一級流水級的寫出準備信號。
流水線可以是一個單向的條狀系統(tǒng),如圖7所示,把第n個gppipe(流水級)的輸出端和第n+1個gppipe的輸入端相連,就可以完成流水級的級聯(lián),形成完整的流水線。流水線也可以是一個網(wǎng)絡(luò)形態(tài),比如,前一流水級連接多個下一級流水級時,其中,前一級流水級通過選通信號(比如可以通過開關(guān)實現(xiàn)信號的選通)選擇下一級流水級。由于對應(yīng)數(shù)據(jù)的控制信號中攜帶了數(shù)據(jù)流向的下一級流水級的標識,以及數(shù)據(jù)的順序標識,即使當前流水級連接多個下一級流水級,當前流水級也能根據(jù)數(shù)據(jù)中的控制信號信息將數(shù)據(jù)傳輸?shù)秸_的流水級中。
如圖8所示,流水級1(記為nod1)與流水級2(記為nod2)和流水級3(記為nod3)構(gòu)成一個網(wǎng)絡(luò),流水級1(記為nod1)的上一級有一流水數(shù)據(jù)d0->d1->d2->d3流到nod1。nod1根據(jù)數(shù)據(jù)中的控制信號將將d0、d2分到nod2,d1、d3分到nod3,nod2的數(shù)據(jù)最后流到nod3,nod3將數(shù)據(jù)按照d0->d1->d2->d3的順序流到下級。
本實施例提供的技術(shù)方案,所述流水線基于上述方法實施例得到的流水級級聯(lián)而成,每一級流水級的連接方式類似,除后一級流水級的數(shù)據(jù)寫入準備信號輸入至前一級流水級,作為前一級流水級的數(shù)據(jù)寫出準備信號之外,只需前級流水級的輸出類信號連接至下級流水級作為輸入信號,為流水級級聯(lián)提供了一種通用的連接方式。按照上述方式,可以將每一個流水級作為一個獨立的模塊,進行流水級的裁剪以及插入,按照統(tǒng)一的接口連接方式連接即可,實現(xiàn)了流水線的模塊化設(shè)計,使得流水線的設(shè)計非常靈活。
上述實施例所述的流水線,dnrdy會串聯(lián)到uprdy中,時序串聯(lián)的方向是流水的反方向,如果流水級個數(shù)很多,流水過長,會出現(xiàn)timing(時序)不夠 的情況。為了進一步優(yōu)化流水線的時序,優(yōu)選的,可以進一步將部分流水級的寫入準備信號與寫出準備信號在流水級內(nèi)部通過寄存器隔離,將數(shù)據(jù)的時序從輸入到輸出變?yōu)椋簭妮斎氲郊拇嫫?、從寄存器到寄存器、從寄存器到輸出。實現(xiàn)時序的優(yōu)化,且在優(yōu)化時序的同時沒有改變流水線的端口設(shè)計以及內(nèi)部的工作邏輯。
需要說明的是,設(shè)計人員在實際操作時可以根據(jù)實際需要隨機選擇部分流水級的寫入準備信號與寫出準備信號在流水級內(nèi)部通過寄存器隔離,只要最終的流水線能夠達到時序的要求即可。
以上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。