マルチプレクサ版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 |