NANDゲートシミュレータの部品一覧
Pin
コンストラクタ引数
(self, parent, name, v=None)
端子
端子そのもの
主要なメソッド
enque_set(self, v)
set(v)呼び出しをスケジューラに登録する
set(self, v)
端子の状態をvにセットする
本編の箇所
端子を付けてつないでみる
NAND
コンストラクタ引数
(self, parent, name='nand', latency=10)
端子
inp_a, inp_b, out
本編の箇所
満を持してNANDゲートクラス
+---+
inp_a ---| \
| |O--- out
inp_b ---| /
+---+
Joint
コンストラクタ引数
(self, parent, name='jt', latency=None, pos=(0,0), lamp_name=None)
端子
new_pin()メソッドで生成
主要なメソッド
new_pin(self)
ジョイントの保持する端子を生成して追加する
new_pin_conn_n(self, n, targ, name, sta_i)
new_pin()で端子をn個追加して
targの名前 {name}_0, {name}_1, ... {name}_n-1 な端子につなぐ
方向はジョイントからtargへ
本編の箇所
ジョイントで分岐してつないでみる
.-----
|
-----@-----
|
.-----
Joint_N
コンストラクタ引数
(self, parent, n, name='jt_n', latency=None, pos=(0,0), slide=('y',1), lamp_name=None)
端子
Joint_N そのものは複数のJointを保持してるだけで
直接端子を持たない
主要なメソッド
new_pin_conn(self, targ, targ_pin_name, sta_i=0, n=-1, direc='to_targ')
保持するジョイント群のnew_pin()を呼び出して、1つづつ端子を追加し、
targの名前 {targ_pin_name}_0, {targ_pin_name}_1, .. {tafg_pin_name}_n-1
な端子につなぐ
targの端子名の開始番号を sta_i で変更可能
端子数は、保持してるジョイントの数がデフォルトだが指定も可能
接続方向も指定可能
内部
Joint
本編の箇所
カウンタとデコーダ
BUF
コンストラクタ引数
(self, parent, name='buf', latency=10)
端子
inp, out
内部
Joint
本編の箇所
何となく対策
inp ---@--- out
+
|\
inp ---| >--- out
|/
+
inp ---|>--- out
NOT
コンストラクタ引数
(self, parent, name='not_', latency=10)
端子
inp, out
内部
NAND
本編の箇所
NANDえも出来るの手始めに
+---+
inp ---@---| \
| | |O--- out
.---| /
+---+
+
|\
inp ---| >O--- out
|/
+
inp ---|>o--- out
AND
コンストラクタ引数
(self, parent, name='and_', latency=10)
端子
inp_a, inp_b, out
内部
NAND
NOT
備考
latency指定の2倍の遅延!
本編の箇所
NANDえも出来るの手始めに
+---+
inp_a ---| \
| |O---|>o--- out
inp_b ---| /
+---+
+---+
inp_a ---| \
| |--- out
inp_b ---| /
+---+
OR
コンストラクタ引数
(self, parent, name='or_', latency=10)
端子
inp_a, inp_b, out
内部
NAND
NOT
備考
latency指定の2倍の遅延!
本編の箇所
NANDえも出来るの手始めに
+---+
inp_a ---|>o---| \
| |O--- out
inp_b ---|>o---| /
+---+
+---+
inp_a ---| \
) >--- out
inp_b ---| /
+---+
NOR
コンストラクタ引数
(self, parent, name='nor', latency=10)
端子
inp_a, inp_b, out
内部
NAND
NOT
備考
latency指定の3倍の遅延!
本編の箇所
NANDえも出来るの手始めに
+---+
inp_a ---|>o---| \
| |O---|>o--- out
inp_b ---|>o---| /
+---+
+---+
inp_a ---| \
) >O--- out
inp_b ---| /
+---+
XOR
コンストラクタ引数
(self, parent, name='xor', latency=10)
端子
inp_a, inp_b, out
内部
NAND
備考
latency指定の3倍の遅延!
本編の箇所
NANDえも出来るの手始めに
+---+
inp_a ---@-------------------| \
| | |O---.
| +---+ .----| / | +---+
.---| \ | +---+ .---| \
| |O---@ | |O--- ou
.---| / | +---+ .---| /
| +---+ .----| \ | +---+
| | |O---.
inp_b ---@-------------------| /
+---+
|+---+
inp_a ---|| \
)) >--- out
inp_b ---|| /
|+---+
AND_N
コンストラクタ引数
(self, parent, n, name='and_n', latency=10)
端子
inp_x, out
内部
OR_N
NOTSet
NOT
備考
latency指定の3倍の遅延!
本編の箇所
多入力のゲート
多入力ORの実装を変更
+---+
inp_0 -----| \
inp_1 -----| \
: :
| |--- out
: :
inp_n-1 ---| /
+---+
OR_N
コンストラクタ引数
(self, parent, n, name='or_n', latency=10)
端子
inp_x, out
内部
Joint
本編の箇所
多入力のゲート
多入力ORの実装を変更
+---+
inp_0 -----| \
inp_1 -----| \
: :
) >--- out
: :
inp_n-1 ---| /
+---+
NAND_N
コンストラクタ引数
(self, parent, n, name='nand_n', latency=10)
端子
inp_x, out
内部
AND_N
NOT
備考
latency指定の4倍の遅延!
本編の箇所
多入力のゲート
+---+
inp_0 -----| \
inp_1 -----| \
: :
| |O--- out
: :
inp_n-1 ---| /
+---+
NOR_N
コンストラクタ引数
(self, parent, n, name='nor_n', latency=10)
端子
inp_x, out
内部
OR_N
NOT
備考
latency指定の2倍の遅延!
本編の箇所
多入力のゲート
+---+
inp_0 -----| \
inp_1 -----| \
: :
) >O--- out
: :
inp_n-1 ---| /
+---+
PosiNega
コンストラクタ引数
(self, parent, name='posi_nega', latency=10)
端子
inp, Q, nQ
内部
BUF
NOT
本編の箇所
何となく対策
inp ---@---|>---- Q
|
.---|>o--- nQ
RSFF
コンストラクタ引数
(self, parent, name='rsff', latency=10)
端子
R, S, Q, nQ
内部
NAND
本編の箇所
RSフリップフロップなぞ
+---+
R ------| \
| |O---@------ Q
.----| / |
| +---+ |
.---- -------.
\ /
X
/ \
.---- -------.
| +---+ |
.----| \ |
| |O---@------ nQ
S ------| /
+---+
+---+---+----+----+
|R |S |Q |nQ |
+---+---+----+----+
|1 |1 |keep|keep|
+---+---+----+----+
|1 |0 |0 |1 |
+---+---+----+----+
|0 |1 |1 |0 |
+---+---+----+----+
|0 |0 |X |X |
+---+---+----+----+
JKFF
コンストラクタ引数
(self, parent, name='jkff', latency=10)
端子
J, K, CLK, Q, nQ
内部
RSFF
NAND
AND
BUF
本編の箇所
JKフリップフロップでも
エッジトリガなJKFF
何となく対策
.-------------------------------------------.
| +---+ +------+ |
.---| \ | | |
| |O--|>--| R Q | |
J -----------| / | | |
+---+ | | |
| | |
+---+ | | +------+ |
.-----| \ | | | | |
| | |-------| S nQ |---@---| R Q |---|--@--- Q
| .---| / | | | | | | |
| | +---+ +------+ | | | | |
| .----------\ /---------------. | | | |
CLK ---@ X | | | |
| .----------/ \---------------. | | | |
| | +---+ +------+ | | | | |
| .---| \ | | | | | | |
| | |-------| R Q |---@---| S nQ |---@--|--- nQ
.-----| / | | | | |
+---+ | | +------+ |
| | |
+---+ | | |
K -----------| \ | | |
| |O--|>--| S nQ | |
.---| / | | |
| +---+ +------+ |
.----------------------------------------------.
+---+---+---+-------+
| J | K | Q | nextQ |
+---+---+---+-------+
| 0 | 0 | 0 | 0 |
+---+---+---+-------+
| 0 | 1 | 0 | 0 |
+---+---+---+-------+
| 1 | 0 | 0 | 1 |
+---+---+---+-------+
| 1 | 0 | 1 | 1 |
+---+---+---+-------+
| 1 | 1 | 0 | 1 |
+---+---+---+-------+
| 1 | 1 | 1 | 0 |
+---+---+---+-------+
TFF
コンストラクタ引数
(self, parent, name='tff', latency=10)
端子
CLK, Q, nQ
内部
JKFF
本編の箇所
T-FF と D-FF
'H'
|
| +----------+
@---|J Q|--- Q
| | |
CLK ------|CLK JKFF |
| | |
.---|K nQ|--- nQ
+----------+
DFF
コンストラクタ引数
(self, parent, name='dff', latency=10)
端子
D, CLK, Q, nQ
内部
JKFF
PosiNeag
本編の箇所
T-FF と D-FF
何となく対策
+---------------+ +--------+
| Q|---|J Q|--- Q
D ---|inp PosiNeag | | JKFF |
| nQ|---|K nQ|--- nQ
+---------------+ | |
CLK ---------------------|CLK |
+--------+
LATCH
コンストラクタ引数
(self, parent, n, name='latch', latency=10)
端子
inp_x, CLK, out_x
内部
DFF
本編の箇所
表示がバラつくので
CLK
| +----------+
inp_0 ---|---|D |
| | D-FF Q|---- out_0
@---|CLK |
| +----------+
| +----------+
inp_0 ---|---|D |
| | D-FF Q|---- out_0
@---|CLK |
| +----------+
: :
| +----------+
inp_n-1 -|---|D |
| | D-FF Q|---- out_n-1
.---|CLK |
+----------+
LATCH_N
コンストラクタ引数
(self, parent, n, dbit_n, name='latch', latency=10)
端子
inp_dx, CLK, sel_x, out_x_dx
内部
JointANDSet
LATCH
本編の箇所
まずは素直に作ってみたところ
CLK
|
|
+------------------------+
| inp |
sel_0 |sel_0 |
sel_1 |sel_1 JointANDSet |
: ---/---| : |
sel_N-1 |sel_N-1 |
| |
|out_0 out_1 .. out_N-1 |
+------------------------+
|
|
/
|||
||| +---------------+
||.-|CLK |
/| | |
|| | LATCH 0 |
inp_0 || | dn bit | out_0_0
inp_1 || | | out_0_1
: ---/---@-/-----|inp_x out_x|---/--- :
inp_dn-1 | || +---------------+ out_0_dn-1
/ ||
| || +---------------+
| |.--|CLK |
| | | |
| / | LATCH 1 |
| | | dn bit | out_1_0
| | | | out_1_1
@-/-----|inp_x out_x|---/--- :
| | +---------------+ out_1_dn-1
/ /
| |
: : :
| | +---------------+
| .---|CLK |
| | |
| | LATCH N-1 |
| | dn bit | out_N-1_0
| | | out_N-1_1
.-/-----|inp_x out_x|---/--- :
+---------------+ out_N-1_dn-1
COUNTER
コンストラクタ引数
(self, parent, bit_n, name='counter', latency=10)
端子
CLK, out_x
内部
TFF
本編の箇所
カウンタとデコーダ
+------------+
| Q|--- out_0
CLK -------|CLK T-FF |
| nQ|---.
+------------+ |
.--------------------.
| +------------+
| | Q|--- out_1
.---|CLK T-FF |
| nQ|---.
+------------+ |
.--------------------.
:
.--------------------.
| +------------+
| | Q|--- out_n-1
.---|CLK T-FF |
| nQ|---
+------------+
DECODER
コンストラクタ引数
(self, parent, bit_n, name='decoder', latency=10)
端子
en, inp_x, out_x
内部
PosiNega
AND_N
GATE
DECODER (bit_n - 1)
本編の箇所
カウンタとデコーダ
デコーダの実装を変更
PinSet
コンストラクタ引数
(self, parent, n, dlst=(), name='pin_set')
端子
p_x
内部
Pin
本編の箇所
実装の構成を少し修正
+----------+
| |---- p_0
| PinSet |---- p_1
| | :
| |---- p_n-1
+----------+
NOTSet
コンストラクタ引数
(self, parent, n, name='not_set', latency=10)
端子
inp_x, out_x
内部
NOT
本編の箇所
多入力ORの実装を変更
inp_0 -----|>o--- out_0
inp_0 -----|>o--- out_0
: : :
inp_n-1 ---|>o--- out_n-1
ANDSet
コンストラクタ引数
(self, parent, n, name='and_set', latency=10)
端子
inp_x, sel_x, out_x
内部
AND
本編の箇所
実装の構成を少し修正
sel_0, sel_1, ..., sel_n-1
||
||
|| +---+
. ---| \
|| | |--- out_0
inp_0 --------| /
|| +---+
|| +---+
. ---| \
|| | |--- out_1
inp_1 --------| /
|| +---+
: :
|| +---+
. ---| \
| |--- out_n-1
inp_n-1 ------| /
+---+
ANDSetOr
コンストラクタ引数
(self, parent, n, name='and_set_or', latency=10)
端子
inp_x, sel_x, out
内部
ANDSet
OR_N
本編の箇所
初期化が長いので
sel_0 sel_1 sel_n-1
| | |
| | .. |
+-------------------------+
| sel_0 sel_1 .. sel_n-1 |
| | +---+
D_0 ------|inp_0 ANDSet out_0|-----| \
D_1 ------|inp_1 n bit out_1|-----| \
: | | : ) OR >--- out
D_n-1 ----|inp_n-1 out_n-1|-----| /
+-------------------------+ | /
+---+
JointANDSet
コンストラクタ引数
(self, parent, n, name='joint_and_set', latency=10)
端子
inp, sel_x, out_x
内部
Joint
ANDSet
本編の箇所
まずは素直に作ってみたところ
inp
|
@--------------.
|| |
|| |
|| .. |
+------------------------+
|inp_0 inp_1 .. inp_N-1 |
| |
sel_0 |sel_0 |
sel_1 |sel_1 ANDSet |
: ---/---| : N |
sel_N-1 |sel_N-1 |
| |
|out_0 out_1 .. out_N-1 |
+------------------------+
|
/
|
out_0 out_1 .. out_N-1
DESEL2
コンストラクタ引数
(self, parent, name='desel2', latency=10)
端子
inp, A_0, out_0, out_1
内部
PosiNega
JointANDSet
本編の箇所
バス
+----------+ +-------------+
| | | |
| PosiNega | | JointANDSet |
| | | (n=2) |
| | | |
| nQ|---|sel_0 out_0|--- out_0
A_0 ---|inp | | |
| Q|---|sel_1 out_1|--- out_1
+----------+ | |
inp ------------------|inp |
+-------------+
GATE
コンストラクタ引数
(self, parent, n, name='gate', latency=10)
端子
inp_x, en, out_x
内部
Joint
ANDSet
本編の箇所
初期化が長いので
en ----------------------@--------.
| |
+---------------------------+
| sel_0..sel_d-1 |
| |
inp_0 -----|inp_0 ANDSet out_0|---- out_0
inp_1 -----|inp_1 n bit out_1|---- out_1
: | | :
inp_n-1 ---|inp_n-1 out_n-1|---- out_n-1
+---------------------------+
SELECTOR
コンストラクタ引数
(self, parent, bit_n, name='selector', latency=10)
端子
en, A_x, D_x, out
内部
DECODER
ANDSetOr
本編の箇所
実装の構成を少し修正
+---------------------------+
en --------|en |
| DECODER |
A_0 -------|inp_0 n bit |
A_1 -------|inp_1 |
: | |
A_n-1 -----|inp_n-1 |
| |
| out_0 out_1 .. out_N-1 |
+---------------------------+
| | .. |
| | .. |
+---------------------------+
| sel_0 sel_1 .. sel_N-1 |
| |
| ANDSetOr |
D_0 -------|inp_0 n bit |
D_1 -------|inp_1 out|--- out
: | |
D_N-1 -----|inp_N-1 |
| |
+---------------------------+
( N = 1 << n )
MUX
コンストラクタ引数
(self, parent, dbit_n, abit_n, name='mux', latency=10)
端子
en, A_x, inp_ax_dx, out_dx
内部
DECODER
ANDSetOr
本編の箇所
初期化が長いので
+---------------------------+
en --------|en |
| DECODER |
A_0 -------|inp_0 n bit |
A_1 -------|inp_1 |
: | |
A_n-1 -----|inp_n-1 |
| |
| out_0 out_1 .. out_N-1 |
+---------------------------+
| | .. |
| | | deco_out_0
@-----@== .. ==@=========== deco_out_1
| | | :
| | | deco_out_N-1
| | .. |
|\ |\ |\
+------\-----\--------\-----+
| \ \ \ |
D_0_0 -----| ... ... ... |
D_1_0 -----| \ \ \ |--- out_0
: | |\ |\ |\
D_N-1_0 ---| +------|-----|--------|-----+
| +---------------------------+
| | sel_0 sel_1 .. sel_N-1 |
| | |
| | ANDSetOr |..--- out_dn-2
D_0_dn-1 -----|inp_0 |
D_1_dn-1 -----|inp_1 out|-------- out_dn-1
: | |
D_N-1_dn-1 ---|inp_N-1 |
| |
+---------------------------+
( N = 1 << n )
DEMUX
コンストラクタ引数
(self, parent, dbit_n, n, name='demux', latency=10)
端子
sel_x, inp_dx, out_x_dx
内部
JointANDSet
本編の箇所
バス
+-------------+
| |
| JointANDSet |
| |
inp_0 --------|inp |
| out_n|---/--- out_n_0
sel_n --/--@--|sel_n |
| | |
| +-------------+
| +-------------+
| | |
| | JointANDSet |
| | |
inp_1 --------|inp |
| | out_n|---/--- out_n_1
@--|sel_n |
| | |
| +-------------+
: :
| +-------------+
| | |
| | JointANDSet |
| | |
inp_dn-1 -----|inp |
| | out_n|---/--- out_n_dn-1
.--|sel_n |
| |
+-------------+
ROM_D1
コンストラクタ引数
(self, parent, abit_n, dlst=(), name='rom_d1', latency=10)
端子
en, A_x, D_0
内部
SELECTOR
PinSet
本編の箇所
まずはデータ・ビット数「1」から
+------------+
en ----------------|en |
| SELECTOR|
A_0 ---------------|A_0 |
A_1 ---------------|A_1 |
: | : |
A_an-1 ------------|A_an-1 |
| out|--- D_0
+--------------+ | |
| p_0|---|D_0 |
| PinSet p_1|---|D_1 |
| | : | : |
| p_dn-1|---|D_dn-1 |
+--------------+ +------------+
ROM
コンストラクタ引数
(self, parent, dbit_n, abit_n, dlst=(), name='rom', latency=10)
端子
en, A_x, D_x
内部
MUX
PinSet
本編の箇所
そしてデータ・ビット数「n」に
+-------------------+
en ----------------|en |
| MUX |
A_0 ---------------|A_0 out_0|---- D_0
A_1 ---------------|A_1 out_1|---- D_1
: | : : |
A_an-1 ------------|A_an-1 out_dn-1|---- D_dn-1
| |
+--------------+ | |
| p_0|---|inp_0_0 |
| PinSet p_1|---|inp_0_1 |
| | : | : |
| p_dn-1|---|inp_0_dn-1 |
| p_dn|---|inp_1_0 |
| p_dn+1|---|inp_1_1 |
| | : | : |
| p_dn*N-1|---|inp_N-1_dn-1 |
+--------------+ +-------------------+
ROM_SEQ
コンストラクタ引数
(self, parent, dbit_n, abit_n, dlst=(), name='rom_seq', hz=1.0, pos=(0,0), lamp_name=None, latency=10)
端子
en, out_x, Q, nQ
内部
CLK
COUNTER
LATCH
ROM
本編の箇所
どやって試すべしか
Q
|
|
@---------------------------------------------------------------------.
| |
+--------+ | +----------+ +------------------+ +--------------+ +------------------+
| Q|--@---|CLK out_0|---|inp_0 out_0|---|A_0 D_0|---|inp_0 CLK out_0|--- out_0
| | | out_1|---|inp_1 out_1|---|A_1 D_1|---|inp_1 out_1|--- out_1
| CLK | | | : | | : | | : | | :
| | | COUNTER | | LATCH | | ROM | | LATCH |
| | | an bit | | an bit | | | | dn bit |
| | | | : | | : | | : | | :
| | | out_an-1|---|inp_an-1 out_an-1|---|A_an-1 D_dn-1|---|inp_dn_1 out_dn-1|--- out_dn-1
| | +----------+ | CLK | | en | | |
| | +------------------+ +--------------+ +------------------+
| | | |
| nQ|-------------------------------@ |
| en | | |
+--------+ | |
| | |
@---------------------------------------------------------.
| |
| |
en nQ
RAM
コンストラクタ引数
(self, parent, dbit_n, abit_n, name='ram', latency=10)
端子
en, CLK, A_x, inp_x, out_x
内部
LATCH_N
MUX
本編の箇所
まずは素直に作ってみたところ
CLK en A_0 A_1 .. A_an-1
| | |
| | |
| | /
| | |
+-----------------------+ +-----------------------+
|CLK | | en A_0 A_1 .. A_an-1|
| | | |
| LATCH_N | | MUX |
| sel_0|----|deco_out_0 |
| sel_1|----|deco_out_1 |
| : | : | : |
| sel_N-1|----|deco_out_N-1 |
| | | |
| | | |
| out_0_0|----|inp_0_0 |
| out_0_1|----|inp_0_1 |
| : | : | : |
| out_0_dn-1|----|inp_0_dn-1 |
| out_1_0|----|inp_1_0 |
| out_1_1|----|inp_1_1 |
| : | : | : |
| out_1_dn-1|----|inp_1_dn-1 |
inp_0 |inp_0 : | : | : out_0| out_0
inp_1 |inp_1 out_N-1_0|----|inp_N-1_0 out_1| out_1
: ---/---| : : | : | : : |---/--- :
inp_dn-1 |inp_dn-1 out_N-1_dn-1|----|inp_N-1_dn-1 out_dn-1| out_dn-1
+-----------------------+ +-----------------------+
( N = 1 << an )
RAM_TEST_4
コンストラクタ引数
(self, parent, abit_n, dlst=(), name='ram_test_4', hz=1.0, pos=(0,0), latency=10)
端子
en
内部
ROM_SEQ
RAM
DECODER_7seg
DEV_TEST_4
本編の箇所
どやって試すべしか
en
|
@---------------------@-----------------.
| | |
+------------+ +-------------+ +-------+
| en | | en | | en |
| | | | | |
| | | | | --- |
| | | | | | | |
| | | | | --- |
| ROM_SEQ | | RAM | | | | |
| 8 bit | | 4 bit | | --- |
| | | | | |
| out_0|-------|inp_0 out_0|---|inp_0 |
| out_1|-------|inp_1 out_1|---|inp_1 |
| out_2|-------|inp_2 out_2|---|inp_2 |
| out_3|-------|inp_3 out_3|---|inp_3 |
| | | | | |
| out_4|-------|A_0 | | |
| out_5|-------|A_1 | | |
| out_6|-------|A_2 | | |
| | | CLK | | |
| | +-------------+ +-------+
| | |
| | +---+ |
| out_7|-------| \ |
| | | |---.
| nQ|-------| /
| | +---+
| |
+------------+
en
|
+------------+
| en |
| |
| DEV_TEST_4 |
| |
| +--------+ |
| | | |
| | RAM | |
| | 4 bit | |
| | | |
| +--------+ |
| |
+------------+
DEV_BASE
コンストラクタ引数
(self, parent, dbit_n, abit_n, name='dev_base', latency=10)
端子
en, CLK, A_ax, inp_dx, out_dx, dev_out_x_dx, dev_inp_x_dx
内部
LATCH_N
MUX
本編の箇所
日の字3つのデバイス
CLK en A_{abit_n}
| | |
| | /
| | |
+----------------------+ +------------------------+
| CLK | | en A_{abit_n} |
| | | |
| LATCH_N | | MUX |
| | | |
| | | |
| sel_{AN}|--------/---------|deco_out_{AN} |
| | | |
| | | |
| | | |
inp_{dn}---/---|inp_{dn} | | out_{dn}|---/---out_{dn}
| | | |
| out_{AN}_{dn}|--/--. | |
| | | | |
| | | | |
| | | .--/--|inp_{AN}_{dn} |
| | | | | |
| | | | | |
+----------------------+ | | +------------------------+
| |
| |
dev_out_{AN}_{dn} |
|
|
dev_inp_{AN}_{dn}
AN = (1 << abit_n)
CLK
コンストラクタ引数
(self, parent, hz=1.0, name='clk', pos=(0,0), lamp_name=None, latency=10)
端子
en, out, Q, nQ
内部
NAND
PosiNega
GATE
Lamp
本編の箇所
現実の時間でLチカさせてみる
表示がバラつくので
何となく対策
[ Lamp ]
.---------------. +-----------+ +------------+ |
| +---+ | | PosiNega | | GATE 2bit | | .--- out
.----| \ | | | | | |/
| |O---@--|inp Q|---|inp_0 out_0|----@----- Q
en ---@----| / | | | |
| +---+ | nQ|---|inp_1 out_1|---------- nQ
| +-----------+ | |
.----------------------------------|en |
+------------+
Lamp
コンストラクタ引数
(self, parent, name='lamp', latency=None, pos=(0,0), show_inf={})
端子
inp
本編の箇所
ジョイントで分岐してつないでみる
JKFFでLチカしてみる
日の字の7セグ
+------+
inp ---| Lamp |
+------+
Lamp_N
コンストラクタ引数
(self, parent, n, name='lamp_n', latency=None, pos=(0,0), slide=('y',1))
端子
inp_x
内部
Lamp
本編の箇所
カウンタとデコーダ
+----------+
inp_0 -----| Lamp 0 |
inp_1 -----| Lamp 0 |
: | : |
inp_n-1 ---| Lamp n-1 |
+----------+
Lamp_7seg
コンストラクタ引数
(self, parent, name='lamp_7seg', latency=None, pos=(0,0))
端子
inp_x
内部
Lamp
本編の箇所
日の字の7セグ
+-------+
inp_0 -----| --- |
inp_1 -----| | | |
: | --- |
inp_6 -----| | | |
| --- |
+-------+
DECODER_7seg
コンストラクタ引数
(self, parent, name='dec_7seg', latency=10)
端子
en, inp_x, out_x
内部
ROM
本編の箇所
日の字の7セグ
+-------------------------+
en ------|en |
| ROM |
inp_0 ---|A_0 address 4 bit D_0|--- out_0
inp_1 ---|A_1 data 7 bit D_1|--- out_1
inp_2 ---|A_2 : | :
inp_3 ---|A_3 D_6|--- out_6
| |
+-------------------------+
0x77, 0x24, 0x5d, 0x6d, 0x2e, 0x6b, 0x7b, 0x25,
0x7f, 0x6f, 0x3f, 0x7a, 0x53, 0x7c, 0x5b, 0x1b,
DECODER_Lamp_7seg
コンストラクタ引数
(self, parent, name='deco_lamp_7seg', latency=10, pos=(0,0))
端子
en, inp_x
内部
DECODER_7seg
Lamp_7seg
本編の箇所
足し算できるかな
+-------------------------+ +--------+
en ------|en | | |
| | | --- |
| | | | | |
| | | --- |
| | | | | |
| | | --- |
| DECO_7seg | | |
| | | |
inp_0 ---|inp_0 out_0|---|inp_0 |
inp_1 ---|inp_1 out_1|---|inp_1 |
inp_2 ---|inp_2 : | : | : |
inp_3 ---|inp_3 out_6|---|inp_6 |
| | | |
+-------------------------+ +--------+
LAMP_7_DEV_3
コンストラクタ引数
(self, parent, name='lamp_7_dev_3', latency=10, pos=(0,0))
端子
en, CLK, A_0, A_1, inp_x, out_x
内部
DEV_BASE
DECODER_Lamp_7seg
本編の箇所
日の字3つのデバイス
+-------------------------+
| |
| DEV_BASE |
| |
en ---------------|en |
| |
CLK --------------|CLK |
| |
A_0 ----------/---|A_0 |
A_1 ----------/---|A_1 |
| |
inp_{dn} -----/---|inp_{dn} |
| |
out_{dn} -----/---|out_{dn} |
| | +----------+
| | |DECODER_ |
| | | Lamp_7seg|
| dev_out_3_0|---@---|en |
| | | | --- |
| dev_inp_3_0|---. | | | |
| | | --- |
| | | | | |
| | | --- |
| dev_out_0_{dn}|-/-@-/-|inp_{dn} |
| | | +----------+
| | |
| dev_inp_0_{dn}|-/-.
| | +----------+
| | |DECODER_ |
| | | Lamp_7seg|
| dev_out_3_1|---@---|en |
| | | | --- |
| dev_inp_3_1|---. | | | |
| | | --- |
| | | | | |
| | | --- |
| dev_out_1_{dn}|-/-@-/-|inp_{dn} |
| | | +----------+
| | |
| dev_inp_1_{dn}|-/-.
| | +----------+
| | |DECODER_ |
| | | Lamp_7seg|
| dev_out_3_2|---@---|en |
| | | | --- |
| dev_inp_3_2|---. | | | |
| | | --- |
| | | | | |
| | | --- |
| dev_out_2_{dn}|-/-@-/-|inp_{dn} |
| | | +----------+
| | |
| dev_inp_2_{dn}|-/-.
| |
| |
| dev_out_3_3|---@--
| | |
| dev_inp_3_3|---.
| |
+-------------------------+
ADD
コンストラクタ引数
(self, parent, name='add', latency=10)
端子
A, B, Y, C
内部
XOR
AND
本編の箇所
足し算できるかな
|+---+
A -----@---|| \
| )) XOR >--- Y
B --@------|| /
| | |+---+
| |
| | +---+
| .---| \
| |AND |--- C
.------| /
+---+
ADD_C
コンストラクタ引数
(self, parent, name='add_c', latency=10)
端子
Cin, A, B, Y, C
内部
ADD
OR
本編の箇所
足し算できるかな
+-------+
Cin------------------|A Y|--------------- Y
+-------+ | ADD | +---+
A -----|A Y|-----|B C|---| \
| ADD | +-------+ ) OR >----- C
B -----|B C|-----------------| /
+-------+ +---+
ADD_N
コンストラクタ引数
(self, parent, n, name='add_n', latency=10)
端子
Cin, A_x, B_x, Y_x, C
内部
ADD_C
本編の箇所
足し算できるかな
+--------+
Cin ---|Cin Y|----- Y0
| |
A0 ----|A ACC_C |
| |
B0 ----|B C|--.
+--------+ |
.---------------.
| +--------+
.---|Cin Y|----- Y1
| |
A1 ----|A ACC_C |
| |
B1 ----|B C|--.
+--------+ |
.---------------.
| +--------+
.---|Cin Y|----- Y2
| |
A2 ----|A ACC_C |
| |
B2 ----|B C|--.
+--------+ |
.---------------.
|
: :
| +--------+
.---|Cin Y|----- Yn-1
| |
An-1 --|A ACC_C |
| |
Bn-1 --|B C|----- C
+--------+
ADD_DEV
コンストラクタ引数
(self, parent, dbit_n, name='add_dev', latency=10)
端子
en, CLK, A_0, inp_x, out_x
内部
LATCH_N
ADD_N
MUX
本編の箇所
足し算デバイス
日の字3つのデバイス
CLK en A_0
| | |
| | |
| | |
+----------------------+ +---------------------+
| CLK | | en A_0 |
| | | |
| LATCH_N | | MUX |
| (N=2) | | (dbit_n=dn) |
| | | (abit_n=1) |
| | | |
| sel_0|------------------------------|deco_out_0 |
| sel_1|------------------------------|deco_out_1 |
| | | |
| | +--------------+ | |
| | | | | |
| | | ADD_N | | |
| | | (N=dn) | | |
| | | | | |
| | -|Cin | | |
| | | | | |
inp_0 |inp_0 out_0_0| |A_0 Y_0| |inp_0_0 out_0| out_0
inp_1 |inp_1 out_0_1| |A_1 Y_1| |inp_0_1 out_1| out_1
: ---/---| : : |---/---| : : |---/---| : : |---/--- :
inp_dn-1 |inp_dn-1 out_0_dn-1| |A_dn-1 Y_dn-1| |inp_0_dn-1 out_dn-1| out_dn-1
| | | | | |
| out_1_0| |B_0 C|-------|inp_1_0 |
| out_1_1| |B_1 | -|inp_1_1 |
| : |---/---| : | :| : |
| out_1_dn-1| |B_dn-1 | -|inp_1_dn-1 |
| | | | | |
+----------------------+ +--------------+ +---------------------+
+-------------------------+
| |
| DEV_BASE |
| |
en ---------------|en |
| |
CLK --------------|CLK |
| |
A_0 ----------/---|A_0 |
A_1 ----------/---|A_1 |
| |
inp_{dn} -----/---|inp_{dn} |
| |
out_{dn} -----/---|out_{dn} |
| | +--------+
| | | |
| | | ADD_N |
| | | |
| dev_out_0_{dn}|---/---|A_{dn} |
| | | |
| dev_out_1_{dn}|---/---|B_{dn} |
| | | |
| dev_inp_0_{dn}|---/---|Y_{dn} |
| | | |
| dev_inp_1_0|---/---|C |
| | | |
| | -|Cin |
| | | |
+-------------------------+ +--------+
DEV_TEST_4
コンストラクタ引数
(self, parent, dev, abit_n, dlst=(), name='dev_test_4', hz=1.0, pos=(0,0), latency=10)
端子
en
内部
ROM_SEQ
DECODER_7seg
本編の箇所
足し算デバイス
en
|
@---------------------@-----------------.
| | |
+------------+ +-------------+ +-------+
| en | | en | | en |
| | | | | |
| | | | | --- |
| | | | | | | |
| | | | | --- |
| ROM_SEQ | | DEV | | | | |
| 8 bit | | 4 bit | | --- |
| | | | | |
| out_0|-------|inp_0 out_0|---|inp_0 |
| out_1|-------|inp_1 out_1|---|inp_1 |
| out_2|-------|inp_2 out_2|---|inp_2 |
| out_3|-------|inp_3 out_3|---|inp_3 |
| | | | | |
| out_4|-------|A_0 | | |
| out_5|-------|A_1 | | |
| out_6|-------|A_2 | | |
| | | CLK | | |
| | +-------------+ +-------+
| | |
| | +---+ |
| out_7|-------| \ |
| | | |---.
| nQ|-------| /
| | +---+
| |
+------------+
BUS
コンストラクタ引数
(self, parent, dbit_n, abit_n, dev_abit_n, name='bus', latency=10)
端子
TO_DEV, CLK, DEV_CLK_{dev#}, en, dev_en_{dev#},
inp_{dev#}_{dbit#}, out_{dev#}_{dbit#}, DEV_A_{dev_abit#}, AI_{abit#}, AO_{dev#}_{abit#},
内部
DSEL2
MUX
LATCH
DEMUX
本編の箇所
バス
TO_DEV
|
| +----------+
| | |
| | DESEL2 |
| | |
.----|A_0 |
| |
| out_0|-----------------------------------------------------.
CLK ---|inp | |
| out_1|----------------------------------------. |
+----------+ | |
| |
DEV_A_{dev_abit#} ---/-----. | |
| | |
+--------------------------------+ | +-------------------------+
| A_{abit#} | | | CLK |
| | | | |
| MUX | : | LATCH |
| | : | |
inp_{dev#}_{dbit#}--/--|inp_{dev#}_{dbit#} out_{dbit#}|--/--|inp_{dbit#} |
| | : | |
en ------------@-------|en deco_out_{dev#} | : | out_{dbit#} |
| +--------------------------------+ | +-------------------------+
| | | |
| / | |
| | | |
| +--------------------------------+ | |
| | sel_{dev#} | | |
| | | | |
.-------|inp_{dbit#+abit#} | | |
| | | |
| inp_{dbit#+abit#+1}|--. |
| | |
| inp_{dbit#}|------------------.
| |
AI_{abit#} ---/--------|inp_{dbit#:dbit#+abit#} |
| |
| |
| DEMUX |
| (n=dev# N=dbit#+abit#+2) |
| |
| |
| out_{dev#}_{dbit#}|---/--- out_{dev#}_{dbit#}
| |
| out_{dev#}_{dbit#:dbit#+abit#}|---/--- AO_{dev#}_{abit#}
| |
| out_{dev#}_{dbit#+abit#}|---/--- dev_en_{dev#}
| |
| out_{dev#}_{dbit#+abit#+1}|---/--- DEV_CLK_{dev#}
| |
+--------------------------------+