一種嵌入式存儲(chǔ)器emb配置鏈結(jié)構(gòu)和配置方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及集成電路設(shè)計(jì)技術(shù)領(lǐng)域,特別是一種嵌入式存儲(chǔ)器EMB配置鏈結(jié)構(gòu)和 配置方法。
【背景技術(shù)】
[0002] 對(duì)于現(xiàn)場(chǎng)可編程邏輯門(mén)陣列(Field Programmable Gate Array, FPGA)芯片來(lái)說(shuō), FPGA芯片中的嵌入式存儲(chǔ)器(EMB)是很重要的一個(gè)模塊。一般來(lái)說(shuō),EMB的核心是雙端口 的靜態(tài)隨機(jī)存儲(chǔ)器(SRAM),SRAM外部會(huì)有很多的選擇器(MUX)來(lái)配置SRAM的工作模式,包 括位寬、位深、時(shí)鐘(clock)選擇、輸出寄存選擇等功能。
[0003] FPGA芯片上電之后有兩種模式:配置模式和用戶(hù)模式。通常情況下,配置模式時(shí), 需要將FPGA芯片內(nèi)部的各個(gè)可配置模塊配置成為期望的狀態(tài),其中也包括對(duì)EMB的配置。 通常做法是將EMB的配置端口連接到FPGA內(nèi)部的配置控制模塊進(jìn)行控制。EMB的配置包 括兩部分:EMB工作模式的配置和對(duì)SRAM初始值的配置。其中EMB工作模式的配置可能采 用移位寄存器鏈進(jìn)行配置,也可能使用配置存儲(chǔ)器進(jìn)行配置。但是對(duì)SRAM初始值的配置是 不能采用配置存儲(chǔ)器進(jìn)行配置的,這是因?yàn)镾RAM的寫(xiě)必須遵照要求的時(shí)序才能完成初始 值的配置,而使用配置存儲(chǔ)器是不能直接完成期望的配置時(shí)序;另外初始值的配置長(zhǎng)度與 SRAM本身的大小有關(guān),比如18Kbit,如此大量的配置數(shù)據(jù)是不適合使用配置存儲(chǔ)器對(duì)其進(jìn) 行配置的。
[0004] FPGA的配置數(shù)據(jù)可以存儲(chǔ)在片外非易失存儲(chǔ)器中,上電之后,F(xiàn)PGA內(nèi)部的配置 控制器讀取片外非易失存儲(chǔ)器的數(shù)據(jù),分析之后按照約定的接口時(shí)序分發(fā)到不同的配置接 □ 〇
[0005] 但是隨著FPGA芯片規(guī)模的不斷擴(kuò)大,EMB模塊的數(shù)目也不斷增大,如果將每一個(gè) EMB的配置端口都連接到配置控制模塊進(jìn)行控制,這些連線(xiàn)的數(shù)量將是非常巨大的,非常不 利于FPGA芯片頂層的集成。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明提供了一種嵌入式存儲(chǔ)器EMB配置鏈結(jié)構(gòu)和配置方法,將EMB以配置鏈的 級(jí)聯(lián)結(jié)構(gòu)集成起來(lái),能夠有效減少配置控制器與EMB之間的接口線(xiàn)數(shù)量,由此減少了芯片 頂層的連線(xiàn),降低了設(shè)計(jì)的復(fù)雜度。
[0007] 本發(fā)明實(shí)施例提供了一種FPGA芯片中嵌入式存儲(chǔ)器EMB配置鏈結(jié)構(gòu),包括:級(jí)聯(lián) 連接的至少兩個(gè)EMB ;
[0008] 每個(gè)所述EMB包括:配置控制器和靜態(tài)隨機(jī)存儲(chǔ)器SRAM ;
[0009] 根據(jù)所述每個(gè)EMB的所述配置控制器的控制,將所述EMB配置鏈的配置數(shù)據(jù)輸入 端口的輸入數(shù)據(jù)寫(xiě)入相應(yīng)的SRAM ;并根據(jù)當(dāng)前EMB的所述配置控制器的控制將當(dāng)前EMB的 所述SRAM中存儲(chǔ)的數(shù)據(jù)輸出給級(jí)聯(lián)的下一個(gè)EMB,或者通過(guò)所述EMB配置鏈的配置數(shù)據(jù)輸 出端口輸出。
[0010] 優(yōu)選的,所述配置控制器包括:配置模式寄存器;
[0011]當(dāng)配置模式選擇使能信號(hào)cf_ms有效時(shí),每個(gè)所述配置模式寄存器接收所述EMB 配置鏈的配置數(shù)據(jù)輸入端口串行輸入的輸入數(shù)據(jù),并分別存儲(chǔ)為配置模式選擇信號(hào)。
[0012] 進(jìn)一步優(yōu)選的,所述配置控制器還包括:旁路寄存器、配置數(shù)據(jù)寄存器、SRAM寫(xiě)數(shù) 據(jù)寄存器、SRAM讀數(shù)據(jù)寄存器和位置數(shù)據(jù)寄存器;
[0013] 當(dāng)使能信號(hào)cf-en有效時(shí),根據(jù)當(dāng)前EMB的所述配置模式選擇信號(hào)選擇所述旁路 寄存器、配置數(shù)據(jù)寄存器、SRAM寫(xiě)數(shù)據(jù)寄存器、SRAM讀數(shù)據(jù)寄存器或位置數(shù)據(jù)寄存器中的 任一個(gè)寄存器工作。
[0014] 進(jìn)一步優(yōu)選的,所述位置數(shù)據(jù)寄存器中存儲(chǔ)的位置數(shù)據(jù)用于指示所述EMB在所述 EMB配置鏈中的位置信息。
[0015] 進(jìn)一步優(yōu)選的,當(dāng)根據(jù)所述配置模式選擇信號(hào)選擇所述SRAM寫(xiě)數(shù)據(jù)寄存器工作 時(shí),所述SRAM寫(xiě)數(shù)據(jù)寄存器從所述位置數(shù)據(jù)的下一比特位的輸入數(shù)據(jù)開(kāi)始,檢測(cè)所述輸入 數(shù)據(jù)的位寬;
[0016] 當(dāng)所述位寬達(dá)到指定寬度時(shí),將檢測(cè)所述位寬范圍內(nèi)的輸入數(shù)據(jù)寫(xiě)入SRAM中;
[0017] 其中,每執(zhí)行一次寫(xiě)入,向SRAM中寫(xiě)入數(shù)據(jù)的存儲(chǔ)地址遞增1。
[0018] 進(jìn)一步優(yōu)選的,當(dāng)根據(jù)所述配置模式選擇信號(hào)選擇所述SRAM讀數(shù)據(jù)寄存器工作 時(shí),所述SRAM讀數(shù)據(jù)寄存器檢測(cè)從SRAM的一個(gè)存儲(chǔ)地址中讀取一定位寬的數(shù)據(jù),并轉(zhuǎn)為串 行輸出;
[0019] 其中,每執(zhí)行一次讀取,從SRAM中讀取數(shù)據(jù)的存儲(chǔ)地址遞增1。
[0020] 第二方面,本發(fā)明實(shí)施例提供了一種如上述第一方面所述的嵌入式存儲(chǔ)器EMB配 置鏈的配置方法,所述方法包括:
[0021] 對(duì)位置數(shù)據(jù)寄存器進(jìn)行配置,確定所述EMB配置鏈中各EMB的級(jí)聯(lián)關(guān)系;
[0022] 當(dāng)配置模式選擇使能信號(hào)cf_ms有效時(shí),對(duì)配置模式寄存器進(jìn)行配置;
[0023] 根據(jù)配置模式寄存器輸出的配置模式選擇信號(hào)和使能信號(hào)cf-en,選擇對(duì)配置數(shù) 據(jù)寄存器進(jìn)行配置,或通過(guò)SRAM寫(xiě)數(shù)據(jù)寄存器對(duì)SRAM進(jìn)行配置,或選擇讀取配置數(shù)據(jù)寄存 器中的數(shù)據(jù),或通過(guò)SRAM讀數(shù)據(jù)寄存器讀取SRAM中的數(shù)據(jù)。
[0024] 優(yōu)選的,當(dāng)所述EMB配置鏈中,一個(gè)EMB根據(jù)當(dāng)前EMB中的配置模式寄存器輸出的 配置模式選擇信號(hào)和使能信號(hào)cf-en,選擇通過(guò)當(dāng)前EMB中所述SRAM寫(xiě)數(shù)據(jù)寄存器對(duì)所述 SRAM進(jìn)行配置,或通過(guò)所述SRAM讀數(shù)據(jù)寄存器讀取所述SRAM中的數(shù)據(jù)時(shí),所述方法還包 括:
[0025] 將所述EMB配置鏈中,除所述當(dāng)前EMB之外的其它EMB的配置模式寄存器中的配 置模式選擇信號(hào)配置為用于選擇旁路寄存器工作的配置模式選擇信號(hào)。
[0026] 本發(fā)明實(shí)施例提供的嵌入式存儲(chǔ)器EMB配置鏈結(jié)構(gòu)和配置方法,通過(guò)將EMB以配 置鏈的級(jí)聯(lián)結(jié)構(gòu)集成起來(lái),能夠有效減少配置控制器與EMB之間的接口線(xiàn)數(shù)量,由此減少 了芯片頂層的連線(xiàn),降低了設(shè)計(jì)的復(fù)雜度。
【附圖說(shuō)明】
[0027] 圖1為本發(fā)明實(shí)施例提供的EMB配置鏈結(jié)構(gòu)示意圖;
[0028] 圖2為本發(fā)明實(shí)施例提供的EMB的內(nèi)部結(jié)構(gòu)示意圖;
[0029] 圖3為本發(fā)明實(shí)施例提供的配置控制器的結(jié)構(gòu)示意圖;
[0030] 圖4為本發(fā)明實(shí)施例提供的SRAM寫(xiě)入的邏輯示意圖。
【具體實(shí)施方式】
[0031] 下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
[0032] 本發(fā)明實(shí)施例提供的EMB配置鏈由級(jí)聯(lián)的至少兩個(gè)EMB組成。圖1為本發(fā)明實(shí)施 例提供的一種FPGA芯片中,EMB配置鏈結(jié)構(gòu)的示意圖。在如圖1所示的例子中,EMB配置鏈 包括16個(gè)依次級(jí)聯(lián)的EMB。
[0033] EMB配置鏈中時(shí)鐘信號(hào)cf_clk、配置模式選擇使能信號(hào)cf_ms、使能信號(hào)cf-en、復(fù) 位信號(hào)cf_rstn通過(guò)緩存器一級(jí)一級(jí)如圖中所示從右向左進(jìn)行傳輸,配置數(shù)據(jù)輸入端口的 輸入數(shù)據(jù)cf_in在時(shí)鐘信號(hào)cf_clk的采樣下,根據(jù)配置模式選擇使能信號(hào)cf_ms和使能信 號(hào)cf-en的設(shè)置,進(jìn)行相應(yīng)EMB工作模式或者SRAM初始值配置模式下的配置數(shù)據(jù)寫(xiě)入,或 者進(jìn)行相應(yīng)EMB工作模式或者SRAM初始值配置模式下的配置數(shù)據(jù)讀取等。
[0034] 與現(xiàn)有FPGA的EMB不同的是,本發(fā)明EMB配置鏈結(jié)構(gòu)中的EMB內(nèi)部包括一些控制 邏輯。為更好的理解本發(fā)明,首先對(duì)本發(fā)明實(shí)施例提供的EMB配置鏈結(jié)構(gòu)中的每個(gè)EMB的 內(nèi)部結(jié)構(gòu)進(jìn)行介紹。
[0035] 如圖2所示,本發(fā)明實(shí)施例的EMB包括:配置控制器USRAM 2和用戶(hù)控制接口 3。
[0036] 用戶(hù)控制接口 3與外部的用戶(hù)接口相連接。
[0037] 配置控制器1與外部的配置接口相連接,用于接收通過(guò)配置接口輸入的控制邏 輯,用于選擇在配置控制器1內(nèi)執(zhí)行配置數(shù)據(jù)寄存器的讀寫(xiě)邏輯、SRAM寫(xiě)控制邏輯或者 SRAM讀控制邏輯。這些邏輯可以具體通過(guò)設(shè)置一個(gè)配置模式寄存器以及相應(yīng)的使能信號(hào)來(lái) 實(shí)現(xiàn),后面會(huì)進(jìn)行詳述。
[0038] 通過(guò)圖中的二選一選通器mux的輸出連接到SRAM的輸入端,為SRAM提供時(shí)鐘、使 能、數(shù)據(jù)輸入等信號(hào)。其中,mux可以選通配置控制器1的SRAM寫(xiě)控制邏輯或用戶(hù)控制接 口 3連接到SRAM的數(shù)據(jù)輸入引腳,SRAM的數(shù)據(jù)輸出引腳連接到配置控制器1的SRAM讀控 制邏輯以及用戶(hù)控制接口 3。EMB配置鏈可以根據(jù)每個(gè)EMB的配置控制器1的控制,將EMB 配置鏈的配置數(shù)據(jù)輸入端口的輸入數(shù)據(jù)寫(xiě)入相應(yīng)的SRAM 2 ;并根據(jù)當(dāng)前EMB的配置控制器 1的控制將當(dāng)前EMB的SRAM 2中存儲(chǔ)的數(shù)據(jù)輸出給級(jí)聯(lián)的下一個(gè)EMB,或者通過(guò)EMB配置 鏈的配置數(shù)據(jù)輸出端口輸出。
[0039] 配置控制器1的內(nèi)部結(jié)構(gòu)可以具體如圖3所示,包括配置模式寄存器11、旁路寄存 器12、配置數(shù)據(jù)寄存器13、SRAM寫(xiě)數(shù)據(jù)寄存器14、SRAM讀數(shù)據(jù)寄存器15、位置數(shù)據(jù)寄存器 16和一個(gè)多路選擇器17 ;
[0040] 當(dāng)配置模式選擇使能信號(hào)CfjIis有效時(shí),一個(gè)EMB的配置模式寄存器11被選中, 同時(shí)多路選擇器17被控制選中配置模式寄存器11的輸出,并級(jí)聯(lián)到下一個(gè)EMB的配置模 式寄存器11的輸入,使EMB配置鏈中的配置模式寄存器級(jí)聯(lián)形成配置模式寄存器鏈,串聯(lián) 在cf_in和cf_out之間,此時(shí)外部的配置模塊可以將期望的值傳送到EMB的配置模式寄存 器11中。然后當(dāng)使能信號(hào)cf-en有效時(shí),根據(jù)當(dāng)前EMB的配置模式選擇信號(hào)選擇旁路寄存 器12、配置數(shù)據(jù)寄存器13、SRAM寫(xiě)數(shù)據(jù)寄存器14、SRAM讀數(shù)據(jù)寄存器15或位置數(shù)據(jù)寄存 器16中的任一個(gè)寄存器工作。
[0041] 在對(duì)其他寄存器進(jìn)行配置之前,首先需要對(duì)位置數(shù)據(jù)寄存器16進(jìn)行配置。這是因 為EMB在EMB配置鏈中的級(jí)聯(lián)關(guān)系,是通過(guò)對(duì)位置數(shù)據(jù)寄存器16的配置來(lái)決定的。位置數(shù) 據(jù)寄存器16中存儲(chǔ)的配置值,即為該EMB在EMB配置鏈中所處的位置。
[0042] 對(duì)位置數(shù)據(jù)寄存器16的配置可以采用串行數(shù)據(jù)輸入的方法,一次性的對(duì)EMB配置 鏈中所有EMB的位置數(shù)據(jù)寄存器16進(jìn)行配置。具體可以是當(dāng)cf-en有效時(shí),配置模式寄存 器11經(jīng)配置輸出的配置模式選擇信號(hào)控制多路選擇器17選擇將位置數(shù)據(jù)寄存器16全部 串聯(lián)在cf-in和cf-out之間,通過(guò)串行數(shù)據(jù)輸入進(jìn)行配置。在位置數(shù)據(jù)寄存器16配置完 成后,就可以對(duì)EMB工作模式進(jìn)行配置或者對(duì)SRAM進(jìn)行配置了。
[0043] 需要說(shuō)明的是,為了保證沒(méi)有保持時(shí)間違背,在本實(shí)施例中定義每個(gè)EMB內(nèi)部的 cf_in是通過(guò)cf_clk的上升沿來(lái)采集,cf_out是通過(guò)cf_clk的下降沿往當(dāng)前EMB外部傳 送。當(dāng)然,本發(fā)明的時(shí)鐘控制方式并不限于上述這種,僅在本實(shí)施例中以上述方式為例進(jìn)行 說(shuō)明。
[0044] 假設(shè)在一個(gè)具體的實(shí)現(xiàn)方案中,配置選擇信號(hào)與相應(yīng)寄存器的配置模式選擇的定 義如下表1所示。
[0046] 表 1
[0047] 基于上述表1,對(duì)各個(gè)寄存器的配置方法可以分別如下述幾種情況所述。
[0048] 第一種情況,對(duì)位置數(shù)據(jù)寄存器的配置過(guò)程,可以