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秒