芯片通常會(huì)用到一個(gè)寄存器陣列。用戶通過SPI, I2C之類的接口對寄存器進(jìn)行讀寫操作,實(shí)現(xiàn)各個(gè)模塊的配置,狀態(tài)查詢等等。
如果不考慮功耗,CTS時(shí)工具會(huì)插入一個(gè)類似下面這樣結(jié)構(gòu)的clock tree。不妨做個(gè)簡單估算。
假設(shè)寄存器陣列有128個(gè)8-bit寄存器。每個(gè)8-bit寄存器由8個(gè)DFF組成。總共1024個(gè)DFF。
假設(shè)每8個(gè)DFF工具插入一個(gè)CTB。128個(gè)8-bit寄存器就需要插入128個(gè)CTB。
假設(shè)每8個(gè)CTB又需要插入一個(gè)CTB來驅(qū)動(dòng)。前一步插入的128個(gè)CTB需要再插入16個(gè)CTB驅(qū)動(dòng)。
這16個(gè)CTB又需要再插入兩個(gè)CTB來驅(qū)動(dòng)。
總共需要插入128+16+2=146個(gè)CTB。
假設(shè)接口為SPI,讀寫protocol是1位RW,7位地址,8位數(shù)據(jù)。每次讀寫都是16個(gè)SPI clock。假設(shè)SPI clock直接用做寄存器陣列時(shí)鐘(通常有片子里有OSC,需要SPI clock domain到OSC clock domain transfer。那是另一個(gè)技巧了。這里就不展開了)。如果不插入ICG,每次讀寫時(shí)1024個(gè)DFF + 146個(gè)CTB都switch 16個(gè)SPI clock,那可是不小的功耗,尤其是頻繁讀寫的場景。
上述這種實(shí)現(xiàn)方法比較“蠢”。我們知道,每次讀寫只能對一個(gè)寄存器進(jìn)行操作,沒必要所有的寄存器都給時(shí)鐘。基于這個(gè)樸素的想法,我們可以利用工具降低功耗。
寄存器陣列的結(jié)構(gòu)有規(guī)律。綜合工具可以根據(jù)地址解碼插入ICG。假設(shè)插入的ICG驅(qū)動(dòng)能力足夠,整個(gè)寄存器的clock tree會(huì)變成類似下面這樣的結(jié)構(gòu)。
對寄存器陣列進(jìn)行操作時(shí),只有地址符合的寄存器ICG才會(huì)被打開,該寄存器的DFF才會(huì)得到時(shí)鐘。而其他地址不符合的寄存器ICG關(guān)閉,沒有時(shí)鐘,也就沒有switching power。這樣一來,每次寫操作實(shí)際只有一個(gè)寄存器會(huì)switching,大大減少了switching power。美中不足的是,對任何寄存器操作時(shí)ICG前面的CTB都會(huì)有時(shí)鐘,這部分clock tree仍消耗switching power。
寄存器寫操作的時(shí)候會(huì)改變寄存器內(nèi)容,需要時(shí)鐘鎖入新的數(shù)據(jù)。但是,對寄存器進(jìn)行讀操作的時(shí)候,寄存器內(nèi)容不改變,寄存器不需要時(shí)鐘。這個(gè)特點(diǎn)工具是不知道的,但是designer可以利用起來。一個(gè)很自然的想法就是只在寄存器寫操作放clock進(jìn)來。
其次,雖然每個(gè)SPI寫操作需要16個(gè)SPI clock。但是實(shí)際上寄存器陣列只需要在地址,數(shù)據(jù)都收到后給一個(gè)寫時(shí)鐘脈沖就可以了,不需要多個(gè)時(shí)鐘反復(fù)寫幾次。
基于上面這兩個(gè)想法,我們可以在寄存器陣列的時(shí)鐘入口處加一個(gè)ICG。這個(gè)ICG只在寫操作的時(shí)候打開,且只在地址數(shù)據(jù)都收到后打開一個(gè)時(shí)鐘周期,放一個(gè)時(shí)鐘脈沖過去。這樣整個(gè)clock tree的switching power就大大降低了。
寄存器陣列時(shí)鐘入口處的ICG要在RTL里加。
寫RTL的時(shí)候就考慮功耗并手動(dòng)插入ICG是實(shí)現(xiàn)低功耗的最有效手段。再加上工具輔助優(yōu)化一下,就很完美了。
審核編輯:黃飛
-
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121165 -
SPI
+關(guān)注
關(guān)注
17文章
1721瀏覽量
92126 -
時(shí)鐘設(shè)計(jì)
+關(guān)注
關(guān)注
0文章
27瀏覽量
10932 -
時(shí)鐘脈沖
+關(guān)注
關(guān)注
0文章
19瀏覽量
12740
發(fā)布評論請先 登錄
相關(guān)推薦
數(shù)字語音解碼器的低功耗設(shè)計(jì)方案
單片機(jī)低功耗設(shè)計(jì)方案
寄存器與移位寄存器
數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思
寄存器傳輸級低功耗設(shè)計(jì)方法
![<b class='flag-5'>寄存器</b>傳輸級<b class='flag-5'>低功耗</b>設(shè)計(jì)方法](https://file1.elecfans.com//web2/M00/A5/DA/wKgZomUMOm-Ac5EdAAAYudHeCpM426.gif)
MAX11120-MAX11128低功耗,逐次逼近寄存器串行ADC
![MAX11120-MAX11128<b class='flag-5'>低功耗</b>,逐次逼近<b class='flag-5'>寄存器</b>串行ADC](https://file1.elecfans.com//web2/M00/A6/1D/wKgZomUMO8yAUqwlAAANlHwUz2U396.jpg)
AD轉(zhuǎn)換寄存器設(shè)置
![AD轉(zhuǎn)換<b class='flag-5'>寄存器</b>設(shè)置](https://file.elecfans.com/web1/M00/CE/C1/o4YBAF-qXxiAQZdBAAFZb1Kjs8s041.png)
在學(xué)習(xí)低功耗設(shè)計(jì)?看看如何解決寄存器傳輸功耗問題
![在學(xué)習(xí)<b class='flag-5'>低功耗</b>設(shè)計(jì)?看看如何解決<b class='flag-5'>寄存器</b>傳輸<b class='flag-5'>功耗</b>問題](https://file1.elecfans.com/web2/M00/8D/89/wKgZomS82HuAY1znAARDPmA6NBQ071.png)
評論