溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件

發(fā)布時(shí)間:2021-07-28 15:30:48 來(lái)源:億速云 閱讀:444 作者:Leah 欄目:互聯(lián)網(wǎng)科技

本篇文章為大家展示了Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

一個(gè)具體示例

來(lái)看一個(gè)具體的示例, 通過(guò)它來(lái)講述 自定義邏輯 是什么, 為什么以及怎么去做.

這個(gè)示例如下, 兩個(gè)輸入 A1 和 A0, 兩個(gè)輸出 S1 和 S0, 兩者間的關(guān)系也很簡(jiǎn)單, 就是對(duì)輸入簡(jiǎn)單取反, 因此使用了兩個(gè) 非門(mén) 就達(dá)到了目的.

Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件

輸出與輸入間的關(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è)缺省的自定義邏輯器件:

Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件

默認(rèn)情況, 它包含兩個(gè)輸入 A 和 B, 兩個(gè)輸出 C 和 D, 但這只是缺省情況, 可以進(jìn)一步調(diào)整, 輸入和輸出均可以是一個(gè)或多個(gè), 而不是限于兩個(gè).

下一步是雙擊(或"右鍵--編輯")組件編輯其屬性:

Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件

首先給它一個(gè)名稱, 比如"two-bit-invert":

Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件

接著點(diǎn)擊 編輯模型, 在彈出窗口中, 有四個(gè)屬性可以編輯, 分別為 輸入, 輸出, 信息文本, 定義, 下面將一一說(shuō)明:

Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件

  1. 輸入

    改為 A1,A0, 與原型一致, 以(英文)逗號(hào)分隔. 當(dāng)然, 這里實(shí)際叫什么并不是特別重要, 根據(jù)你自己需要去定義即可, 但建議盡可能簡(jiǎn)短.

    視具體情況不同, 輸入端可以有更多或更少. 比如 X,Y,Z 就表示有三個(gè)輸入端, 名稱分別被設(shè)為 X, Y 和 Z.

  2. 輸出

    改為 S1,S0, 與原型一致(同理, 這里實(shí)際叫什么也不是特別重要)

    同樣的, 輸出端也不限于兩個(gè), 可以更多或更少.

  3. 信息文本

    這里可以填入對(duì)功能的一個(gè)具體描述, 比如"對(duì)輸入的每一位取反"

  4. 定義

    這是最重要的, 它定義了輸入輸出間的邏輯關(guān)系.

怎么定義呢? 最簡(jiǎn)單方式就是枚舉所有輸入的組合情況, 并給出對(duì)應(yīng)輸出的值.

如果你有數(shù)字電路基礎(chǔ), 很明顯這跟所謂的 真值表(True Table) 就是一回事.

那么對(duì)于前述取反邏輯, 最終的定義如下:

00=11
01=10
10=01
11=00

最終如下:

Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件

等號(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)名稱及信息文本:

Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件

接下來(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), 但又不影響整體的功能.

小結(jié)

每個(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ō)明.

3輸入與非門(mén)

輸入: 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

SR 鎖存器

輸入: 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 觸發(fā)器

輸入: D,Clk

輸出: Q,/Q

定義:

?? 00=10
0+ ??=01
1+ ??=10
?? AB=AB

如果兩個(gè)輸入均為低電平, 則第一行將 Q 輸出置位(復(fù)位電路時(shí)需要此設(shè)置).

接下來(lái)的兩行在時(shí)鐘的上升沿時(shí)將 Q 輸出設(shè)置為與 D 輸入匹配.

除以上情況外, 最后一行使輸出保持不變.

JK 觸發(fā)器

輸入: 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ā)器邏輯.

除以上情況外, 最后一行使輸出保持不變.

數(shù)字比較器

輸入: 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 更大.

3位計(jì)數(shù)器

輸入: 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ì)改變.

具有 使能功能 的 3 輸入與非門(mén)

輸入: A,B,C,En

輸出: X

定義:

1111=0
???1=1
???0=_

與上面的 3 輸入與非門(mén)相同, 不同之處在于如果 使能引腳 為低電平, 則輸出進(jìn)入高阻抗?fàn)顟B(tài).

三態(tài)緩沖器

輸入: A,En

輸出: X

定義:

A1=A
?0=_

上述內(nèi)容就是Circuitjs中怎么創(chuàng)建一個(gè)自定義邏輯器件,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI