天天看點

clock-gating整理clock gating 了解

文章目錄

  • clock gating 了解
    • 1、latch
      • 雙穩态器件
      • 常見鎖存器結構
        • SR鎖存器
        • D鎖存器
    • 2、clock gating
      • (clock low-active) latch + AND gating 電路
      • (clock high-active)latch + OR gating 電路

clock gating 了解

1、latch

參考:https://www.cnblogs.com/IClearner/p/6443539.html

雙穩态器件

穩定狀态為0或1兩種

舉例:交叉耦合反相器

clock-gating整理clock gating 了解

假設初始Q為1,則可得電路輸出Q穩定在1

假設初始Q為0,則可得電路輸出Q穩定在0

**注意:**電路可能會有第三種狀态:亞穩态(不是一種穩定狀态)

常見鎖存器結構

鎖存器應用(數字電路中不希望出現鎖存器:timing borrow屬性,做timing會增加難度)

  • 消除毛刺:clock gating
  • DFT中解決 hold timing 問題

SR鎖存器

交叉耦合反相器沒有輸入,存儲不了輸入資料

clock-gating整理clock gating 了解

真值表

輸入 輸出
SR Q
00 Q
01 0(複位)
10 1(置位)
11 無效(Q=0,~Q=0,沖突)

D鎖存器

SR鎖存器當SR=11時輸出錯誤;不能确定某個時候存某個資料。

D鎖存器:在clk高電平的時候通過資料;在clk低電平時鎖存資料

clock-gating整理clock gating 了解
clock-gating整理clock gating 了解

結構:

  • 前級門電路:兩個與門(共12個半導體),一個非門(2個半導體)
  • 後級:SR鎖存器:兩個或非門(共8個半導體)

真值表

輸入 輸出
clk Q
clk=0時,SR=00 Q(保持)
clk=1時,SR=DD’(SR不會相同) D

功能

clk=1時,Q= D

clk=0時,Q = Q

代碼

[email protected](*) begin
	if(en)		// en在上圖為clock信号,
		q = d;
end
           

注意:

上圖 latch 輸入的clock,表示在clk 為 1 和 0時,Q的值表現為鎖存和指派狀态(相當于使能信号)。

不要看到clk就想到時序邏輯或邊沿觸發,或在組合電路中看到clk就不知道如何處理

latch的畫法

推薦

clock-gating整理clock gating 了解

不推薦(錯誤畫法)

clock-gating整理clock gating 了解

注意區分

[email protected](*)
	q = d;	// 就是一根連線
           

應用

  • 防電路毛刺:門控時鐘

2、clock gating

clock-gating 和 power-gating 的差別

//推薦風格:可生成門控時鐘
[email protected](posedge clk or negedge rst_n) begin
    if(!rst_n)
        data_out <= 8'b0;
    else if(en)
        data_out <= data_in;   
end
           
//不推薦:無法生成門控時鐘
[email protected](posedge clk or negedge rst_n) begin
    if(!rst_n)
        data_out <= 8'b0;
    else if(en)
        data_out <= data_in;
    else
        //data_out <= 8'b0; 這是錯誤的,沒有en時應該保持,功能錯誤
        // 下面這種不能生成 clock-gating,因為資料不變時還在指派,需要時鐘驅動,不能gating掉時鐘
    	data_out <= data_out;
end
           
clock-gating整理clock gating 了解

普通電路映射電路圖:對應第二種寫法

門控時鐘電路:對應正确的clock-gating寫法(沒有第二個 else)

clock_gating結構演進

(clock low-active) latch + AND gating 電路

clock-gating整理clock gating 了解

CK 為高電平,即CLK為低電平時,EN_Q=EN, 采樣EN信号

CK為低電平,即CLK為高電平時,EN_Q維持,保持信号,即使有 glitch信号,也不會傳下去

latch的屬性,在整個CLK為低電平的半個周期内,EN信号都可以鎖存進 latch,隻要保證EN信号在下一個CLK的上升沿來臨之前穩定(保證latch的setup/hold time),就能夠将正确的EN信号鎖存進去。

(clock high-active)latch + OR gating 電路

clock-gating整理clock gating 了解

前面 latch要換成 clock high-active , 并根據 EN信号的高低電平有效不同,決定圖中的inverter cell是否存在,也能夠為EN信号穩定争取到一個 CLK cycle的時間

block level clock gating

将一個block 和 clock先做處理,gating之後送入block的clock端口

// 組合邏輯産生latch,用en生成e_latch信号,再和clk_in相與産生時鐘
[email protected](*) begin
	clk_out = 0;
	if(!clk_in)
		e_latch = en;
end
assign clk_out = e_latch & clk_in;
           

繼續閱讀