模擬中使用數字調整電路是非常非常頻繁的,用途比較多的是改變電流,電阻。在模塊級別仿真生成控制的寄存器控制信號也是件麻煩的事。
傳統工程師有這樣的幾個辦法:
1, 用多個vbit(好像經常有bug,數半天0110,1個小時跑完后發現弄錯了)。
2, 也有寫個腳本生成vpwl/vpwlf。(仿真慢,vbit還能當成事件驅動來優化仿真速度,vpwl/vpwlf真是沒救了)
3, 也可以使用ahdl library里面的adc的,應該更慢吧。
4, 當然也可以寫vams激勵,但是需要切換仿真器,一些頻域的仿真就受限制,再說要是會ams,一般工程師就不做模擬了。
當然最好的方法是直接有一個pcell,其實如果熟悉virtuoso的那個括號括號的編程環境,就可以很容易的做一個這樣的模擬寄存器位產生模塊。
通過使用位操作可以快速的實現模擬環境中二進制寄存器控制位產生,如果有數字設計背景,對位操作應該非常熟悉。
括號語言中關于幾個位操作符的定義如下
在CIW里面實踐一下:
看完CIW里一頓猛如虎的操作,大家應該知道怎么實現了,具體的方式是將控制量移位后和1做位與 操作,就可以得到相應的二進制代碼。
比如3,對應0011, (3>>3)&1=0 , (3>>2)&1=0 , (3>>1)&1=1 ,(3>>0)&1=1。
只要把這個寫到Analog/Vdc模塊里,做成一個通用的設計庫單元就行了。考慮到浮點數的原因, round一下就解決了。同時為了方便參數傳遞,把數字電壓和控制數使用了pPar()傳遞進來。
考慮到不同工藝的數字電壓可能有些變化,多加了一個dvdd的參數。最后的效果是這樣的,隱隱約約的可以看到電阻上對應的數字電壓了吧。
-
寄存器
+關注
關注
31文章
5357瀏覽量
120734 -
仿真
+關注
關注
50文章
4102瀏覽量
133758 -
數字控制
+關注
關注
2文章
181瀏覽量
25842 -
腳本
+關注
關注
1文章
391瀏覽量
14895
發布評論請先 登錄
相關推薦
評論