トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

cpu_top.v

TINYCPUのトップ回路

入出力ポート

ポート名 ビット数 FPGAボード上の接続デバイス  
入力 CLK50MHZ 1 50MHzのクロック
入力 BTN_NORTH 1 上側のスライドスイッチ tinycpuのinに接続
入力 BTN_EAST 1 右側のスライドスイッチ tinycpuのinに接続
入力 BTN_WEST 1 左側のスライドスイッチ tinycpuのinに接続
入力 BTN_SOUTH 1 下側のスライドスイッチ tinycpuのresetに接続
入力 SW 4 4つのスライドスイッチ tinycpuのinに接続
入力 ROT_A 1 ロータリプッシュスイッチの軸エンコーダ tinycpuのclkに接続
入力 ROT_CENTER 1 ロータリプッシュスイッチのプッシュスイッチ tinycpuのrunに接続
出力 LED 5 5個のLEDに接続
出力 LCD_E 1 LED制御用
出力 LCD_RS 1 LED制御用
出力 LCD_RW 1 LED制御用
出力 SF_D 4 LED制御用

ソースコード

module cpu_top(CLK50MHZ, ROT_A, ROT_CENTER, BTN_SOUTH, BTN_EAST, BTN_NORTH,
               BTN_WEST, SW, LED, LCD_E, LCD_RS, LCD_RW, SF_D);

 input CLK50MHZ, ROT_A, ROT_CENTER, BTN_SOUTH, BTN_EAST, BTN_NORTH, BTN_WEST;
 input [3:0] SW;
 output [4:0] LED;
 output LCD_RS, LCD_E, LCD_RW;
 output [11:8] SF_D;
 wire clk, reset;
 wire [2:0] cs;
 wire [6:0] in;
 wire [15:0] data0, data1, data2, data3, data4, data5;

 chattering #(8) chattering0(.clk(CLK50MHZ), .reset(reset),
       .in({BTN_WEST, BTN_NORTH, BTN_EAST, SW, ~ROT_A}), .out({in,clk}));
 lcdctrl lcdctrl0(.clk(CLK50MHZ), .reset(reset), .lcd_e(LCD_E),
           .lcd_rs(LCD_RS), .lcd_rw(LCD_RW), .sf_d(SF_D), .data0(data0),
           .data1(data1), .data2(data2), .data3(data3), .data4(data4),
           .data5(data5));
 tinycpu tinycpu0(.clk(clk), .reset(reset), .run(ROT_CENTER),
           .in({9'h000,in}), .cs(cs), .pcout(data0), .irout(data1),
           .qtop(data2), .abus(data3), .dbus(data4), .out(data5));

 assign reset = ~BTN_SOUTH; 
 assign LED[4] = (cs==`IDLE);
 assign LED[3] = (cs==`FETCHA);
 assign LED[2] = (cs==`FETCHB);
 assign LED[1] = (cs==`EXECA);
 assign LED[0] = (cs==`EXECB);

endmodule

クロックがうまく入力されないとき,「~ROT_A」を「ROT_A」に変更してください.

最終更新時間:2007年06月15日 12時36分20秒