采用IDDR的亞穩(wěn)態(tài)問題解決方案
只需少量代碼
在《Virtex-4用戶指南》的328~329頁,舉例說明采用VHDL和Verilog語言編寫的IDDR原語的例化。以下采用Verilog語言的IDDR原碼例化的典型實例:
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中看到全新的布局圖。 用這種方法將寄存器鏈放置在兩個單元:前兩個寄存器放置在ILOGIC單元中,另一個寄存器則放置在SLICE單元中(這里選擇的鏈具有3個寄存器和2個不同的時鐘,其中一個時鐘速度是另一個的兩倍)。
圖3 顯示IDDR替代的同步器鏈
整體而言,亞穩(wěn)態(tài)問題會給設計帶來不便,但采用一些快速便捷的解決方案(如以一種新的方式使用IDDR原語)就能大幅降低設計發(fā)生亞穩(wěn)態(tài)問題的幾率。大家應在創(chuàng)建設計時就采用上述方法,而不應事后亡羊補牢,這樣就能創(chuàng)建出既能靈活應對亞穩(wěn)性問題,而且所占面積、性能和成本又得到優(yōu)化的架構(gòu)。
評論