利用 IDDR 簡(jiǎn)化亞穩(wěn)態(tài)
圖1 同步器鏈的默認(rèn)布置圖
圖中,將寄存器鏈放置在兩個(gè)單元中:第一個(gè)為ILOGIC單元,而另外兩個(gè)寄存器放置在SLICE單元中(選擇具有相同時(shí)鐘的3個(gè)寄存器和鏈)。這是減少亞穩(wěn)態(tài)問(wèn)題的一種快速且非常簡(jiǎn)單的方法,還有其他一些方法不但可減少亞穩(wěn)態(tài)問(wèn)題,還可優(yōu)化性能。
使用賽靈思邏輯塊的IDDR方法
在Virtex-4和Virtex-5 FPGA中,賽靈思將其ILOGIC模塊直接放置在I/O驅(qū)動(dòng)器和接收器的后面。該模塊包括4個(gè)存儲(chǔ)元件寄存器和1個(gè)可編程絕對(duì)延遲元件。
Virtex-4與Virtex-5器件均采用這4個(gè)寄存器來(lái)實(shí)現(xiàn)雙倍數(shù)據(jù)率輸入(IDDR)寄存器,功能設(shè)計(jì)師只需例化IDDR原語(yǔ)便能實(shí)現(xiàn)。這將使 受益匪淺。
這種原語(yǔ)的其中一個(gè)模式稱為SAME_EDGE_PIPELINED。圖2顯示了采用這種模式的DDR輸入寄存器及相關(guān)信號(hào)。綠色矩形框顯示了一系列最優(yōu)的寄存器,可用其解決亞穩(wěn)態(tài)問(wèn)題。此外,使用 IDDR 方法還有一個(gè)優(yōu)勢(shì),即能使用兩三倍之多的主時(shí)鐘,同時(shí)又不會(huì)造成任何設(shè)計(jì)時(shí)延問(wèn)題。
圖2 SAME_EDGE_PIPELINED模式中的輸入DDR
只需少量代碼
在《Virtex-4用戶指南》的328~329頁(yè),舉例說(shuō)明采用VHDL和Verilog語(yǔ)言編寫(xiě)的IDDR原語(yǔ)的例化。以下采用Verilog語(yǔ)言的IDDR原碼例化的典型實(shí)例:
defparam IDDR_INT2.DDR_CLK_EDGE = SAME_EDGE_PIPELINED;
defparam IDDR_INT2.INIT_Q1 = 1'b1;
defparam IDDR_INT2.INIT_Q2 = 1'b1;
defparam IDDR_INT2.SRTYPE = SYNC;
IDDR IDDR_INT2( .Q1(sync_data),
.Q2(signal_noload), .C(CLK_2X),
.CE(1'b1), .D(async_data),.R(), .S());
在圖3中看到全新的布局圖。 用這種方法將寄存器鏈放置在兩個(gè)單元:前兩個(gè)寄存器放置在ILOGIC單元中,另一個(gè)寄存器則放置在SLICE單元中(這里選擇的鏈具有3個(gè)寄存器和2個(gè)不同的時(shí)鐘,其中一個(gè)時(shí)鐘速度是另一個(gè)的兩倍)。
圖3 顯示IDDR替代的同步器鏈
整體而言,亞穩(wěn)態(tài)問(wèn)題會(huì)給設(shè)計(jì)帶來(lái)不便,但采用一些快速便捷的解決方案(如以一種新的方式使用IDDR原語(yǔ))就能大幅降低設(shè)計(jì)發(fā)生亞穩(wěn)態(tài)問(wèn)題的幾率。大家應(yīng)在創(chuàng)建設(shè)計(jì)時(shí)就采用上述方法,而不應(yīng)事后亡羊補(bǔ)牢,這樣就能創(chuàng)建出既能靈活應(yīng)對(duì)亞穩(wěn)性問(wèn)題,而且所占面積、性能和成本又得到優(yōu)化的架構(gòu)。
評(píng)論