RETROF-2017(仮称)の全回路図

RETROF-2017(仮称)の回路図は2枚組

RETROF-2017の回路図は2枚組です。フリーソフトであるKiCadで作図しました。
1枚目は命令デコードと、その結果から各素子群に対する制御信号を発生させる回路です。
2枚目はメモリとレジスタ群および液晶ディスプレイ(SXGA)への表示回路です。

 

【RETROF-2017の全回路図】
 クリックで拡大します(PDFに対応したブラウザが必要です)。

SCM1  SCM2

RETROF-2017の回路に関しては、本頁とは別に詳細解説文の作成を予定しています。
ここではラベル名が付加されている信号線の意味や役割のみを紹介します。
尚、1枚目の回路図の右端に、ISA(命令セット)の概略と、SXGA画像信号のタイミングの略図を載せています。 

信号線(ラベル)一覧

グローバルラベル

KiCadにおけるグローバルラベルはの形をしており、同名の信号線は全てのシート内で結線されていると見做されます。

一般にグローバルラベルはシートを横断する接続に用いますが、RETROF-2017では単独のシート内で閉じている結線にもグローバルラベルを使用しています。(理由は後述
下記一覧表の「シート」の欄が「1」であればシート1内で完結、「2」であればシート2内で完結、「12」は両方のシートを横断する信号線である事を意味します。
また、信号線名中の#は、回路図上ではアッパーバー(論理反転記号)が付加されている事を示します。 

信号線名 シート 信号線の持つ意味
A0〜A15 12 アドレスバス。演算命令実行時は被演算子の値を保持する
D0〜D15 12 データバス
F0〜F15 2 ALUバス。「アドレスバス値」と「データバス値」の指定演算結果を保持する
IR8〜IR15 1 命令コードバス。(=インストラクションレジスタの出力)
H0〜H7 2 画像表示回路の横方向アドレス(0〜255)
V0〜V7 2 画像表示回路の縦方向アドレス(0〜255)
HS 2 画像表示回路の水平同期信号
VS 2 画像表示回路の垂直同期信号
HP 2 画像表示回路の水平ポーチ信号、これがLの間はH0〜H7は無効
VP 2 画像表示回路の垂直ポーチ信号、これがLの間はV0〜V7は無効
CCK 1 コモンクロック、命令レジスタとワーキングレジスタに接続するクロック線
FCK 1 フラグクロック、フラグレジスタに接続するクロック線
E_EQU 1 演算のフラグ信号。ALUの両被演算子の値が等しい時にHとなる
E_MSB 1 演算のフラグ信号。ALU出力の最上位bitに接続。F15と同一の信号
E_CRY 1 演算のフラグ信号。加算時のキャリー発生、減算時のキャリー非発生にHとなる
WU#D 1 ワーキングレジスタをカウンタとして使う際のアップ(H)・ダウン(L)の切替
EXTEND 1 拡張命令要求信号。STX命令、LDX命令用。入力ポートのポート指定線を兼ねる
#RUN 1 実行時にL
#HLT 1 停止時(手動制御時、もしくはリモート制御時)にL
#RM_RUN 1 USB経由の外部信号。停止モードを解除する時にL
#RM_HALT 1 USB経由の外部信号。実行を強制停止する時にL
RM_WCK 1 USB経由の外部信号。ワーキングレジスタのクロックに接続。

「シート1」のローカルラベル

ローカルラベルは同一シート内の同一名の信号線を接続するラベルです。回路図上では黒色の文字列で表記しています。

シート1では、実行すべき命令あるいは演算種別を決めるダイオードマトリクスへの入力信号にのみにローカルラベルを割り当て、それ以外の信号はあえてグローバルラベルを割り当てています。これは両者の違いを明確にするための工夫ですが、特に深い意味はありません。
また、下記表の赤字以外の信号線名は回路図上では単なるコメントと同様の扱いで、対応する接続先(同一名のラベル)はありません。

信号線名 Lになるステージ Lになる命令種別(ステージとのAND条件) 左記種別の命令コード
Φ0 ステージ0 全ての命令 xxxx xxxx
Φ1 ステージ1 全ての命令 xxxx xxxx
Φ2c ステージ2 アドレッシングがレジスタ間接 xxxx xx10
Φ2d ステージ2 アドレッシングが16bitリテラル xxxx xx11
Φ3b ステージ3 アドレッシングがレジスタ直接 xxxx xx01
Φ3c ステージ3 アドレッシングがレジスタ間接 xxxx xx10
Φ3d ステージ3 アドレッシングが16bitリテラル xxxx xx11
ΦLH(JMP) ステージ4,5,6 JMP命令全て 0xxx xxxx
ΦLH(OPE) ステージ4,5,6 演算命令全て(LD,INVを含む) 10xx xxxx
ΦLH(STM) ステージ4,5,6 STM 11x0 00xx
ΦLH(OUT) ステージ4,5,6 OUT 11x0 01xx
ΦLH(STV) ステージ4,5,6 STV 11x0 10xx
ΦLH(LDV) ステージ4,5,6 LDV 11x0 11xx
ΦLH(LDM) ステージ4,5,6 LDM 11x1 00xx
ΦLH(IN) ステージ4,5,6 IN 11x1 01xx
ΦLH(LPC) ステージ4,5,6 LPC 11x1 10xx
ΦLH(SFT) ステージ4,5,6 SFT 11x1 11xx
Φ5(JMP) ステージ5 JMP命令全て 0xxx xxxx
Φ5(OPE) ステージ5 演算命令全て(LD,INVを含む) 10xx xxxx
Φ5(STM) ステージ5 STM 11x0 00xx
Φ5(OUT) ステージ5 OUT 11x0 01xx
Φ5(STV) ステージ5 STV 11x0 10xx
Φ5(LDV) ステージ5 LDV 11x0 11xx
Φ5(LDM) ステージ5 LDM 11x1 00xx
Φ5(IN) ステージ5 IN 11x1 01xx
Φ5(LPC) ステージ5 LPC 11x1 10xx
Φ5(SFT) ステージ5 SFT 11x1 11xx
HALT 全ステージ HALT、及び分岐先指定bitが00の分岐命令 10x0 00xx , 0xxx 00xx
LD 全ステージ LD、 及び絶対アドレス指定の分岐命令 10x0 01xx , 0xxx 01xx
ADD 全ステージ ADD、及び前方相対アドレス指定の分岐命令 10x0 10xx , 0xxx 10xx
SUB 全ステージ SUB、及び分岐先指定が前方相対の分岐命令 10x0 11xx , 0xxx 11xx
AND 全ステージ AND 1001 00xx
OR 全ステージ OR 1001 01xx
XNOR 全ステージ XNOR 1001 10xx
INV 全ステージ INV 1001 11xx
Φ M_MWR 実行停止時 基板上の書込スイッチを押した時 (命令コードは無し)
Φ M_MOE 実行停止時 基板上の入力スイッチを押していない時 (命令コードは無し)
Φ M_IOE 実行停止時 基板上の入力スイッチを押した時 (命令コードは無し)
Φ R_AOE 実行停止時 外部からのAccの読出もしくはシフト要求時 (命令コードは無し)
Φ R_ACK 実行停止時 外部からのAccへのクロック発生時 (命令コードは無し)
Φ R_PCK 実行停止時 外部からのPCへのクロック発生時 (命令コードは無し)
Φ R_MWR 実行停止時 外部からの主メモリ内容の更新要求時 (命令コードは無し)
Φ R_HLT 常時 外部からの実行停止要求時 (命令コードは無し)

 「シート2」のローカルラベル

シート2のローカルラベルはビデオメモリのアドレスバスとデータバスにのみ、ローカルラベルを使用しています。これは直接結線すると図が見づらくなる事に対する考慮です。

信号線名 信号線の持つ意味
VA0〜VA15 ビデオメモリのアドレスバス。256×256(=65536)の画素に対応する
VD0〜VD7 ビデオメモリのデータバス。各ビットが持つ情報は命令一覧表を参照

 階層ラベル

本回路図はシート1が親シート、シート2が子シートとなる階層構造です。
これは「子シート全体」を1つの部品と見做す記法で、その部品のピンに相当するのが階層ラベルになります。
本回路図のシート間結線は、グローバルラベルで接続するアドレスバス(A0〜A15)とデータバス(D0〜D15)を除くとすべてこの階層ラベルによる接続となります。

階層シート


sheet1上ではsheet2全体がこの様な一つの「部品」に見える


下記表中の「i/o」はシート2全体を部品と見做した場合の、各ピンの入出力属性です。

信号線名 i/o 信号線の持つ意味
S0〜S3、M 入力 ALUに与える演算指定コード
Ci 入力 ALUに与えるキャリー信号、減算命令の時のみLとなる
EQ 出力 フラグ信号。2項演算の被演算子が等しい時にHとなる
MSB 出力 フラグ信号。演算結果もMSBと同じ論理となる
Co 出力 フラグ信号。加算のキャリー発生時、減算時のボロー非発生時にとなる
#ACK 入力 アキュムレータのクロック。 このクロックのみ、立下り(negedge)動作
#AOE 入力 アキュムレータの出力イネーブル。Lでデータバスにデータ出力
AL#S 入力 アキュムレータのロード/シフト切替。Lでシフト、Hでロード
Si 入力 アキュムレータに与えるシフト入力。シリアル転送時以外は常に0
PCK 入力 プログラムカウンタのクロック。 立上り(posedge)動作
#POE 入力 プログラムカウンタの出力イネーブル。Lでデータバスにデータ出力
#PLD 入力 プログラムカウンタのロード要求。PCKに同期
#PCR 入力 プログラムカウンタの非同期クリア要求
WCK 入力 ワークレジスタのクロック。 立上り(posedge)動作
#WLD 入力 ワークレジスタのロード要求。WCKに同期
#WCE 入力 ワークレジスタのカウント要求。WCKに同期
#WHC 入力 ワークレジスタの上位8bitのクリア要求。WCKに同期
WU#D 入力 ワークレジスタのアップカウント(H)、ダウンカウント(L)の選択
#MOE 入力 主メモリのデータ出力イネーブル。Lでデータバスにデータ出力
#MWR 入力 主メモリの書込要求。非同期
OUT 入力 出力ポート(32個のLED)への出力要求。非同期
#IOE 入力 入力ポートの出力イネーブル。Lでデータバスにデータ出力
#EXTE 入力 Lならば主メモリアクセスを第2バンクへ、入力ポートを第2ポートとする
#VREQ 入力 Lならばビデオメモリのアクセス権をCPUに渡す。この間画面表示は停止す
#VDIR 入力 VREQ=LのときにCPUから見たビデオメモリのR/Wを決める。Lで書込
#VWR 入力 VREQ=VDIR=Lの時に、Lにするとビデオメモリへ書込まれる。非同期