マルチプレクサ版KITE-1マイクロプロセッサコアの実験ボードへの適用
KITEの実験ではKITE Microprocessor PLUS+ボードを使用していますが、FPGAの実装規模が小さいこと、周辺装置用のインタフェースを別途開発する必要があることから、今回は実装ボードとして DIGILENT社製 ATLYS ボードを用います。
作成しようとしているシステムは、KITE-1プロセッサをコアプロセッサとして、メモリもジュールとVGAモジュールを含む、簡易なマイクロプロセッサシステムです。
以下の、システムブロック図を参考にして、各モジュールの接続関係を作成します。
全体を統合する kite_top.v 階層は、以下のようにしておきます。
module kite_top(
CLOCK, // Clock 100MHz
RESET, // Reset
TMDSP, // DVI Video (P)
TMDSN, // DVI Video (N)
);
input CLOCK;
input RESET;
output [3:0] TMDSP, TMDSN;
//
// PLL module
//
...
...
...
//
// KITE-1 processor core
//
...
...
...
//
// Memory & Video RAM
//
...
...
...
//
// DVI encoder
//
...
...
...
endmodule
PLLモジュールの配置
今回設計するシステムでは,4種類のクロックを使用する.
- プロセッサ用クロック:75MHz
- VGA用ドットクロック:25MHz
- DVIエンコーダ用クロック:50MHz,250MHz
使用するSpartan6 FPGAにはハードマクロのPLLモジュールがあり,
FPGA外部から供給されたクロックを逓倍・分周することで必要な
クロックを生成することができる.
PLLモジュールはインスタンス呼び出しとして記述する.
また必要な周波数を得るための逓倍・分周については,
PLLモジュール内のパラメータ変数に対して適切な値を渡すことで実現する.
なお、LOCKEDはPLLが安定動作を開始したことを示す信号
pllfbはPLLでのフィードバッククロックとして用いる。
//
// PLL Module
//
wire CLK25, CLK50, CLK75, CLK250, LOCKED, pllfb;
pll_module
#(.C_CLKFBOUT_MULT(15), // x15,
.C_CLKIN1_PERIOD(10.0), // 100MHz
.C_CLKOUT0_DIVIDE ( 3), // 100*15/2/ 3 = 250MHz
.C_CLKOUT1_DIVIDE (10), // 100*15/2/10 = 75MHz
.C_CLKOUT2_DIVIDE (15), // 100*15/2/15 = 50MHz
.C_CLKOUT3_DIVIDE (30), // 100*15/2/30 = 25MHz
.C_CLKOUT1_BUF( 1 ),
.C_CLKOUT2_BUF( 1 ),
.C_CLKOUT3_BUF( 1 ),
.C_DIVCLK_DIVIDE( 2 ) // 2
)
pll (
.CLKIN1 (CLOCK ),
.CLKOUT0(CLK250),
.CLKOUT1( CLK75),
.CLKOUT2( CLK50),
.CLKOUT3( CLK25),
.RST(RESET), .LOCKED(LOCKED), .CLKFBIN(pllfb), .CLKFBOUT(pllfb) );
KITE-1プロセッサをIPコアとして使用する場合、KITE-1から出ているほとんどの観測用信号は使用しない。
kite.v 階層の入出力信号は以下の信号のみ使用する。
※未使用は緯線は、未結線としておけば実装処理に際に最適化により削除される。
//
// 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
.ICS(ICS) // Instruction Complete Signal
);
メモリモジュール、VGAモジュール、DVIエンコーダモジュールの詳細については次ページ以降で解説する。
次は、 メモリモジュールの作成 を行います。
| Back |