您好,登錄后才能下訂單哦!
本篇文章為大家展示了Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
來(lái)看一個(gè)具體的示例, 通過(guò)它來(lái)講述 自定義邏輯 是什么, 為什么以及怎么去做.
這個(gè)示例如下, 兩個(gè)輸入 A1 和 A0, 兩個(gè)輸出 S1 和 S0, 兩者間的關(guān)系也很簡(jiǎn)單, 就是對(duì)輸入簡(jiǎn)單取反, 因此使用了兩個(gè) 非門(mén) 就達(dá)到了目的.
輸出與輸入間的關(guān)系就是:
S1=!A1 S0=!A0
其中感嘆號(hào) ! 表示取反.
上述的邏輯是用電路直接實(shí)現(xiàn), 現(xiàn)在假設(shè)要使用自定義邏輯的方式去做一個(gè)等價(jià)實(shí)現(xiàn), 從而取代上述 非門(mén) 構(gòu)成的電路, 要怎么去做呢?
至于為什么引入自定義邏輯, 放在后面再解釋.
第一步是添加一個(gè)自定義邏輯器件, 在菜單或右鍵中選擇 添加自定義邏輯
, 然后拖動(dòng)生成一個(gè)缺省的自定義邏輯器件:
默認(rèn)情況, 它包含兩個(gè)輸入 A 和 B, 兩個(gè)輸出 C 和 D, 但這只是缺省情況, 可以進(jìn)一步調(diào)整, 輸入和輸出均可以是一個(gè)或多個(gè), 而不是限于兩個(gè).
下一步是雙擊(或"右鍵--編輯")組件編輯其屬性:
首先給它一個(gè)名稱, 比如"two-bit-invert":
接著點(diǎn)擊 編輯模型
, 在彈出窗口中, 有四個(gè)屬性可以編輯, 分別為 輸入
, 輸出
, 信息文本
, 定義
, 下面將一一說(shuō)明:
輸入
改為
A1,A0
, 與原型一致, 以(英文)逗號(hào)分隔. 當(dāng)然, 這里實(shí)際叫什么并不是特別重要, 根據(jù)你自己需要去定義即可, 但建議盡可能簡(jiǎn)短.視具體情況不同, 輸入端可以有更多或更少. 比如
X,Y,Z
就表示有三個(gè)輸入端, 名稱分別被設(shè)為 X, Y 和 Z.
輸出
改為
S1,S0
, 與原型一致(同理, 這里實(shí)際叫什么也不是特別重要)同樣的, 輸出端也不限于兩個(gè), 可以更多或更少.
信息文本
這里可以填入對(duì)功能的一個(gè)具體描述, 比如"對(duì)輸入的每一位取反"
定義
這是最重要的, 它定義了輸入輸出間的邏輯關(guān)系.
怎么定義呢? 最簡(jiǎn)單方式就是枚舉所有輸入的組合情況, 并給出對(duì)應(yīng)輸出的值.
如果你有數(shù)字電路基礎(chǔ), 很明顯這跟所謂的 真值表(True Table) 就是一回事.
那么對(duì)于前述取反邏輯, 最終的定義如下:
00=11 01=10 10=01 11=00
最終如下:
等號(hào)左邊對(duì)應(yīng)輸入, 右邊對(duì)應(yīng)輸出.
第一行, 左邊 00 分別表示 A1=0, A0=0, 右邊 11 表示 S1=1, S0=1;
第二行, 左邊 01 分別表示 A1=0, A0=1, 右邊 10 表示 S1=1, S0=0;
第三行, 左邊 10 分別表示 A1=1, A0=0, 右邊 01 表示 S1=0, S0=1;
第四行, 左邊 11 分別表示 A1=1, A0=1, 右邊 00 表示 S1=0, S0=0;
很顯然, 以上通過(guò)枚舉所有輸入(及對(duì)應(yīng)的輸出)情況, 表達(dá)了前述的取反邏輯:
S1=!A1 S0=!A0
如果創(chuàng)建另一個(gè)自定義邏輯, 并有如下定義:
00=0 01=1 10=1 11=1
那么就是定義了一個(gè)具有兩個(gè)輸入端, 一個(gè)輸出端的邏輯組件.
顯然, 上述定義實(shí)際上就是一個(gè) 或門(mén).
同樣的, 還可以定義更復(fù)雜的如異或門(mén), 半加器, 全加器, 譯碼器以及其它你想要的邏輯組件等等.
確定之后, 組件按我們定義的輸入, 輸出名稱顯示如下, 當(dāng)鼠標(biāo)移上去后, 畫(huà)布的右下角還將顯示對(duì)應(yīng)名稱及信息文本:
接下來(lái)可以測(cè)試其是否滿足相應(yīng)邏輯, 如果不能滿足, 則可能需要仔細(xì)檢查 定義
里的規(guī)則是否有誤; 如果一切 OK, 則可以用它取代兩個(gè)非門(mén)構(gòu)成的電路.
自然, 對(duì)于簡(jiǎn)單的, 容易實(shí)現(xiàn)的邏輯來(lái)說(shuō), 自定義邏輯并沒(méi)有什么優(yōu)勢(shì);
但對(duì)于更復(fù)雜一些, 更多輸入, 輸出的情況, 你可能一下子想不出用電路怎么去實(shí)現(xiàn), 又或者能用電路實(shí)現(xiàn), 但非常龐雜, 各種組件, 連線非常多, 這時(shí)自定義邏輯就有優(yōu)勢(shì)了.
最終, 所有的邏輯還是要落到具體的電路實(shí)現(xiàn)上, 自定義邏輯有時(shí)更像是一種"投機(jī)取巧", 但用得好, 它還是可以輔助你在整體設(shè)計(jì)期間, 先忽略部分模塊的具體實(shí)現(xiàn), 不至于迷失在過(guò)多的細(xì)節(jié)里, 你可以假設(shè)這些子部件是已經(jīng)實(shí)現(xiàn)的, 然后測(cè)試整體的邏輯是否 OK.
當(dāng)大的框架及交互沒(méi)有問(wèn)題時(shí), 你可以回過(guò)頭來(lái)再一一去實(shí)現(xiàn)那些自定義邏輯, 所以, 它也可以幫你推遲某些實(shí)現(xiàn), 但又不影響整體的功能.
每個(gè)自定義邏輯器件都有一個(gè)模型名稱, 該名稱指向描述其工作方式的模型.
您可以創(chuàng)建具有相同型號(hào)的任意數(shù)量的器件.
編輯模型會(huì)更改使用該模型的所有器件的行為.
編輯模型時(shí), 可以指定輸入, 輸出, 一些信息文本(將鼠標(biāo)懸停在器件上時(shí)顯示在右下角)和定義.
輸入(和輸出)是(英文)逗號(hào)分隔的短引腳標(biāo)簽列表(最多一個(gè)或兩個(gè)字符).
您還可以指定 取反標(biāo)簽, 像 /Q
對(duì)應(yīng) <span >Q</span>.
示例:A,B,/C,/D
定義是形式為多行的 輸入=輸出.
與輸入引腳匹配的第一個(gè)輸入模式將被選中, 并將輸出引腳設(shè)置為與輸出模式匹配.
模式可以包含比特值(0
, 1
), 過(guò)渡(+
, -
), 通配符/任意值(?
), 和模式字母(A
, B
, 等等).
輸入必須不少于輸入引腳的數(shù)量.
如果更長(zhǎng), 則會(huì)將額外的模式字符與輸出引腳進(jìn)行匹配;這使您可以創(chuàng)建帶有狀態(tài)的器件.
輸出模式還可包含 _
, 以指示高阻抗?fàn)顟B(tài).
前面舉的具體示例代表了最基本, 最常用的情況, 但自定義邏輯還支持更復(fù)雜的表達(dá)方式, 比如通配之類的; 甚至, 除了組合邏輯外, 你還可以定義時(shí)序邏輯組件.
下面是一些具體示例及說(shuō)明.
輸入: A,B,C
輸出: X
定義:
111=0 ???=1
如果所有三個(gè)輸入均為 1, 則輸出為 0. 否則為 1.
輸入: A,B,C
輸出: S,C
定義:
111=11 110=10 011=10 101=10 100=01 010=01 001=01 000=00
輸入: S,R
輸出: Q,/Q
定義:
?? 00=10 10 ??=10 01 ??=01 ?? AB=AB
輸入模式(等號(hào)的左側(cè))按順序匹配 S, R, Q 和 <span >Q</span>.
等號(hào)右側(cè)指定對(duì)應(yīng)的 Q 和 <span >Q</span> 結(jié)果值.
第一行, 如果兩個(gè)輸入均為低電平, 則將 Q 輸出置位(復(fù)位電路時(shí)需要此設(shè)置).
第二行, 如果 置位端(set) 為高, 則將輸出設(shè)置為 1,0.
第三行, 如果 復(fù)位端(reset) 為高, 則將輸出設(shè)置為 0,1.
第四行, 除以上情況外, 將使輸出保持不變.
前兩個(gè)字母與輸入引腳匹配, 后兩個(gè)字母與輸出引腳匹配.
空格會(huì)被忽略, 此處添加空格僅為清晰起見(jiàn).
輸入: D,Clk
輸出: Q,/Q
定義:
?? 00=10 0+ ??=01 1+ ??=10 ?? AB=AB
如果兩個(gè)輸入均為低電平, 則第一行將 Q 輸出置位(復(fù)位電路時(shí)需要此設(shè)置).
接下來(lái)的兩行在時(shí)鐘的上升沿時(shí)將 Q 輸出設(shè)置為與 D 輸入匹配.
除以上情況外, 最后一行使輸出保持不變.
輸入: J,K,Clk
輸出: Q,/Q
定義:
??? 00=10 00- AB=AB 10- ??=10 01- ??=01 11- AB=BA ??? AB=AB
如果兩個(gè)輸入均為低電平, 則第一行將 Q 輸出置位(復(fù)位電路時(shí)需要此設(shè)置).
接下來(lái)的四行在時(shí)鐘的負(fù)跳變上實(shí)現(xiàn)JK觸發(fā)器邏輯.
除以上情況外, 最后一行使輸出保持不變.
輸入: A2,A1,A0,B2,B1,B0
輸出: Eq,A>,A<
定義:
ABC ABC=100 1?? 0??=010 A1? A0?=010 AB1 AB0=010 ??? ???=001
第一行檢查兩個(gè)輸入是否相等. 接下來(lái)的三行測(cè)試 A 是否更大. 否則, B 更大.
輸入: Clk
輸出: A,B,C
定義:
+ AB0=AB1 + A01=A10 + 011=100 + 111=000 ? ABC=ABC
該計(jì)數(shù)器在 Clk 輸入的正跳變時(shí)遞增計(jì)數(shù).
第一行處理從 000、010、100 或 110 開(kāi)始的計(jì)數(shù).
第二行處理從 001 或 101 開(kāi)始的計(jì)數(shù).
接下來(lái)的兩行處理 011 和 111.
最后一行確保除非時(shí)鐘產(chǎn)生正跳變, 否則輸出不會(huì)改變.
輸入: A,B,C,En
輸出: X
定義:
1111=0 ???1=1 ???0=_
與上面的 3 輸入與非門(mén)相同, 不同之處在于如果 使能引腳 為低電平, 則輸出進(jìn)入高阻抗?fàn)顟B(tài).
輸入: A,En
輸出: X
定義:
A1=A ?0=_
上述內(nèi)容就是Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。