在 circuitjs 中, 可以使用 分支電路 來實現自定義的"黑盒"器件.
分支電路 也稱爲 子電路(subcircuit).
因爲菜單上已經叫成了 分支電路, 以下均稱爲 分支電路.
通過分支電路, 可以實現對電路的封裝與抽象, 從而達到模塊化並簡化電路的目的. 更進一步的, 被抽象的黑盒電路還可以繼續的參與進一步的抽象與封裝, 也即它們是具備 閉包性質 的, 循環往復, 可以以此構建出極爲複雜的電路.
創建分支電路
下面以一個具體的例子來說明如何去創建一個分支電路.
電路原型
如下一個由四個 與非門 構成的電路, 其功能如下:
如果輸入是相同的, 比如同爲 0 或同爲 1, 則輸出爲 0;
如果輸入是不同的, 比如 0, 1 或 1, 0, 則輸出爲 1.
顯然, 如果你瞭解數字電路, 這其實就是所謂的 異或門.
在確定它的功能達到我們的要求後, 先刪除那些測試的邏輯輸入輸出, 只留下最終的電路.
添加標記節點
下一步是標識出所有的輸入/輸出, 此步驟通過 添加標記的節點 功能實現, 在"菜單--繪製--輸出和標籤--添加標記的節點"下:
拖動以增加標記節點, 並與輸入輸出的端點相連:
所有標記的節點默認的名稱均爲 label, 通過雙擊這些節點, 在彈出的屬性調整窗口中, 一一改爲所希望的名稱(儘量簡短):
最終效果如下, 輸入端名稱爲 A 和 B, 輸出端爲 O:
標記內部節點
如果要在分支電路定義中使用帶標記的節點, 但又不想讓它們成爲輸入/輸出之一, 則請勾選那些帶標籤的節點的編輯菜單中的"內部節點"複選框.
注意: 如果電路存在多餘的沒有被標記的端點, 創建分支電路時可能會存在異常.
所以, 哪怕是不用對外提供的端點, 你可能依然需要通過"內部節點"去標識它們.
在上述例子中, 沒有使用到內部節點.
設置分支電路引腳, 高寬, 名稱
然後, 選擇"菜單--文件--創建分支電路", 彈出以下窗口:
通過拖動節點可以重新排列引腳:
注意: 拖動時, 如果發現拖不動或沒有效果, 則鼠標光標可以適當移出到模型框線外面一點.
引腳可以是左右或是上下朝向.
如果沒有足夠的空間供調整, 可以通過單擊 寬度 和 高度 旁邊的 + 號增加高度和寬度:
最後, 調整完成後, 可以通過單擊 寬度 和 高度 旁邊的 - 號減小不必要的高度和寬度.
當然, 你也可以不縮小模型框的最終大小, 但適當保持緊湊會好一點, 後面使用它時也不用佔那麼大的地方.
引腳位置和寬高調整完成後, 在 模型名稱 中輸入模型名稱, 然後單擊"確定".
這將加載子電路模型.
注: 請記得保存該分支電路實現, 否則以後將無法對其進行再次編輯(修改).
使用分支電路
現在, 您可以使用分支電路模型創建電路. 用鼠標右鍵單擊, 然後選擇"有源集成電路--添加分支電路實例"項.
或是通過 "菜單--繪製--有源集成電路--添加分支電路實例" 添加.
然後單擊並拖動以創建實例.
注: 連續拖動可以創建多個實例, 如果不再需要創建, 按快捷鍵
Esc
退出添加狀態.
如果創建有多個分支電路模型, 可以通過編輯實例, 然後在彈出窗口的 模型名稱 下拉窗口中選擇所需的模型.
默認情況下, 它將使用您剛創建的模型.
當您保存/加載該電路時, 它還將保存/加載分支電路模型, 因此您可以在其他電路中使用它.
另外, 在創建實例後, 你還可以再度編輯模型. 通過在模型實例上 "右鍵--編輯--編輯模型":
之後, 會再度彈出前述創建分支電路時彈出的窗口, 你可以再度調整引腳位置, 模型高寬.
注意: 如果創建了多個模型實例, 此調整將影響所有已創建的實例!
重新封裝現有模塊以改變引腳位置
有時候, 有些模塊是 app 中已經封裝好的, 但它的引腳位置佈局可能不是你希望的, 這時您還可以使用分支電路來重新排列內置芯片上的引腳.
選取部分電路來創建分支電路
默認情況, 創建分支電路會使用當前畫布上的所有電路.
如果在使用"文件--創建分支電路"之前選擇了電路的一部分, 則僅所選元素將被視爲分支電路的一部分.
多窗口中使用多個分支電路
雖然在一個窗口(畫布)中也可以創建多個分支電路, 但添加實例時缺省都是最後創建的, 多個模型的情況下, 你需要再度編輯模型名稱才能調整爲其它先前添加的模型的實例.
爲清晰起見, 你可以打開多個瀏覽器窗口, 不同的分支電路在不同的窗口中去創建, 然後拖動生成相應的實例.
最後, 這些實例均支持跨窗口拷貝(粘貼), 因此你也可以通過這種方式將多個分支電路實例整合到一起.
關於 circuitjs 分支電路功能的介紹就到這裏.