デジタル回路

クロック周り

2012年11月26日

クロック作成部分は、とりあえず(というか、たぶん、ほぼ決まり)、こんな風に。

2012-11-26-clk.png

デコーダー(74137)のラッチ入力と出力許可(GLNとG1)が直結で入力されている部分が微妙なのだが、ラッチの入力から出力まである程度の遅延があるはずなので、たぶんこれでも大丈夫。後で必要なら、GLNの前に遅延回路を入れるかも知れない。

シミュレーションの結果は、次のようになる。
2012-11-26-clksim.png

マシン語の命令の種類によって、4クロックから10クロック消費され、2クロックごとにY0, Y1, Y2, Y3, Y4が出力される。Y0-Y4それぞれがLになっている間バスに値が出力され、CLK22からのシグナルで、それぞれのラッチに値を入力する設計である。初期の設計では、Y0-Y4のシグナル幅が2クロックになっていたが、これを1.5クロックとすることで、瞬時ではあるものの、バスラインへの出力がかぶるようなことが無いようにした。

今のところ、タイミングはこんな風に。
Fetch code:
	Y0 CLK21: fetch code H
	Y0 CLK22: inc PC
	Y1 CLK21: fetch code L
	Y1 CLK22: inc PC

NOP:
	Y2: reset

IF C etc:
	Y1 CLK23: set skip flag
	Y2: reset

Load literal:
	Y2 CLK22: load to S register
	Y3: reset

PUSH:
	Y1 CLK23: dec SP
	Y2 CLK22: copy from register to memory
	Y3 reset

POP:
	Y2 CLK22: load to register
	Y2 CLK23: inc SP
	Y3 reset

Load to register:
	Y2 CLK22: copy to another register
	Y3: reset

Calc:
INC:
DEC:
	Y2 CLK22: load to T register
	Y3 CLK22: copy T register to another register
	Y4: reset

Jump:
	Y2 CLK22: load to PCS
	Y3 CLK22: load to PCH
	Y4 CLK22: load to PCL
	Y5: reset

PUSH PC:
	Y1 CLK23: dec SP
	Y2 CLK22: copy from PCL to memory
	Y2 CLK23: dec SP
	Y3 CLK22: copy from PCH to memory
	Y3 CLK23: dec SP
	Y4 CLK23: copy from PCS to memory
	Y5: reset

RET:
	Y2 CLK22: Load to PCS
	Y2 CLK23: inc SP
	Y3 CLK22: Load to PCH
	Y3 CLK23: inc SP
	Y4 CLK22: Load to PCL
	Y4 CLK23: inc SP
	Y5: reset

コメント

コメントはありません

コメント送信