マルチプレクサ版KITE-1マイクロプロセッサコアの実験ボードへの適用
KITEの実験ではKITE Microprocessor PLUS+ボードを使用していますが、FPGA
の実装規模が小さいこと、周辺装置用のインタフェースを別途開発する必要が
あることから、今回は実装ボードとして DIGILENT社製 NEXYS Vedio ボードを用います。
作成しようとしているシステムは、KITE-1プロセッサをコアプロセッサとして、メモリもジュールとVGAモジュールを含む、簡易なマイクロプロセッサシステムです。
以下の、システムブロック図を参考にして、各モジュールの接続関係を作成します。
全体を統合する kite_top.v 階層は、以下のようにしておきます。
module kite_top(
clk, // Clock
cpu_resetn, // Reset (Negative)
hdmi_tx_clk_p, // HDMI out clock (P)
hdmi_tx_clk_n, // HDMI out clock (N)
hdmi_tx_p, // HDMI out data (P)
hdmi_tx_n, // HDMI out data (N)
);
input clk;
input cpu_resetn;
output hdmi_tx_clk_p, hdmi_tx_clk_n;
output [ 2:0] hdmi_tx_p, hdmi_tx_n;
wire CLK75;
wire RST; // internal reset (positive)
wire LOCKED;
wire ACK; // acknowledge
wire [15:0] DATAI; // internal data bus
... ...
assign DATAI = ( ... ) ? ... : ...;
assign RST = ... | ...;
assign ACK = ... | ...;
//
// Clock module
//
clk_wiz_0 clk_module (
.clk_in1( clk ),
.clk_out1( CLK75 ),
.reset( ~cpu_resetn ),
.locked( LOCKED )
);
//
// KITE-1 processor core
//
kite kite( .DATAI(DATAI), // in DATA Bus
.DATAO(DATAO), // out DATA Bus
.ADDR(ADR), // Address Bus
.HALT(HALT), // HALT Signal
.MREQ(MREQ), // Memory Request
.IORQ(IORQ), // I/O Request
.ACK(ACK), // Acknowledge
.RW(RW), // Read/Write
.CLK(CLK75), // Clock
.RST(RST), // Reset (positive)
.ICS(ICS) // Instruction Complete Signal
);
//
// Memory & Video RAM
//
...
...
...
//
// DVI encoder
//
...
...
...
endmodule
クロックモジュール
NEXYS Video上のFPGAには100MHzのクロックが供給されている.VGA表示用のドッ
トクロックには75MHzの周波数が必要であるため,FPGA上のMMCM(Mixed Mode
Clock Manager)を使用して75MHzのクロックを作成する.クロックモジュール
を作成する際には設計ツールであるVovado上でクロック生成ウィザードを使用
して作成する.作成方法について後述するが,この段階ではモジュールインスタンス
記述のみ書いておく。
KITE-1マイクロプロセッサ
KITE-1プロセッサをIPコアとして使用する場合、
KITE-1から出ているほとんどの観測用信号は使用しない。
kite.v 階層の入出力信号は以下の信号のみ使用する。
※未使用配線は、未結線としておけば実装処理の際に最適化により削除される。
なお、クロックモジュールから供給されるクロックによりプロセッサが動作するが、
クロックモジュールからのクロックが安定するまでには時間がかかる。
クロックモジュールからのクロックが安定しているかについては、LOCKED信号が
HIGHであることを確認すれば良い。
したがってプロセッサのリセットは、
- 外部リセットが有効(負論理なのでLOWの時)であり、または
- PLLモジュユールのLOCKEDが有効でない(クロックが安定していない)
時にかかる必要がある。
クロックモジュール、メモリモジュール、VGAモジュール、DVIエンコーダモジュールの詳細については次ページ以降で解説する。
次は、 メモリモジュールの作成 を行います。
| Back |