// // Top-level for simple N-body demo on ML605 card. // module toplevel( input SYSCLK_N, input SYSCLK_P, output GPIO_LED_C, output GPIO_LED_N, output GPIO_LED_S, output GPIO_LED_W, output GPIO_LED_E, input GPIO_SW_C, input GPIO_SW_N, input GPIO_SW_S, input GPIO_SW_E, input GPIO_SW_W, input CPU_RESET, // Chrontel. inout IIC_SCL_DVI, inout IIC_SDA_DVI, output [11:0] DVI_D, output DVI_DE, output DVI_H, output DVI_V, output DVI_RESET_B, output DVI_XCLK_N, output DVI_XCLK_P, output [2:0] led, output led4, output vsyn, output hsyn, output r, output g, output b); assign GPIO_LED_N = GPIO_SW_N; assign GPIO_LED_S = GPIO_SW_S; assign GPIO_LED_W = GPIO_SW_W; assign GPIO_LED_E = GPIO_SW_E; assign GPIO_LED_C = GPIO_SW_C; wire [7:0] KiwiFormGraphics_setget_pixel_return; wire [7:0] setgetpixel10_return; wire [31:0] KiwiFormGraphics_setget_pixel_x; wire [31:0] KiwiFormGraphics_setget_pixel_y; wire KiwiFormGraphics_setget_pixel_readf; wire [7:0] KiwiFormGraphics_setget_pixel_wdata; wire KiwiFormGraphics_setget_pixel_ack; wire KiwiFormGraphics_setget_pixel_req; wire dvi_reset = 0; wire fstore_clear = GPIO_SW_N; wire plotter_reset = GPIO_SW_W; wire i2c_reset = 0; wire color = GPIO_SW_S; wire i2c_mode = GPIO_SW_E; wire plotter_speed = GPIO_SW_C; wire fstore_reset = CPU_RESET; //---------------------------------------------------------------- // Clock control. wire clk200; IBUFGDS my_clk_inst (.O(clk200), .I (SYSCLK_P), .IB (SYSCLK_N)); // wire clk_135MHz ; // clk_wiz_v1_5 instance_name // (// Clock in ports // .CLK_IN1_P (SYSCLK_P), // IN // .CLK_IN1_N (SYSCLK_N), // IN // // Clock out ports // .CLK_OUT1 (clk_135MHz)); // OUT reg plotter_clk, hi_speed_mode; reg [7:0] clk2; always @(posedge clk200) begin clk2 <= clk2 + 1'd1; hi_speed_mode <= plotter_speed; plotter_clk <= (hi_speed_mode) ? clk2[0]: clk2[7]; end wire clk_2MHz = clk2[7]; // Debugging assign led[0] = clk_2MHz; assign led[1] = fstore_reset; assign led4 = !KiwiFormGraphics_setget_pixel_req; //---------------------------------------------------------------- // Chrontel I2C connections wire iic_scl_dvi_out, iic_scl_dvi_openable; wire iic_sda_dvi_out, iic_sda_dvi_openable; bufif1(IIC_SCL_DVI, iic_scl_dvi_out, iic_scl_dvi_openable); bufif1(IIC_SDA_DVI, iic_sda_dvi_out, iic_sda_dvi_openable); wire iic_scl_dvi_in = IIC_SCL_DVI; wire iic_sda_dvi_in = IIC_SDA_DVI; wire i2c_done; i2c_control chrontel_i2c_control( // .i2c_scl_in(iic_scl_dvi_in), .done(i2c_done), .i2c_sda_in(iic_sda_dvi_in), .i2c_scl_out(iic_scl_dvi_out), .i2c_sda_out(iic_sda_dvi_out), .i2c_scl_openable(iic_scl_dvi_openable), .i2c_sda_openable(iic_sda_dvi_openable), .clk(clk_2MHz), .reset(i2c_reset), .checker(i2c_mode) ); //---------------------------------------------------------------- // Chrontel I2C connections wire blank; wire [7:0] red, green, blue; assign r = red[6]; // 1 bit outputs assign g = green[6]; assign b = blue[6]; assign DVI_RESET_B = !dvi_reset; fstore2 the_fstore(.clk_200MHz(clk200), .color(color), .clear(fstore_clear), .blank(blank), .DVI_D(DVI_D), .DVI_XCLK_P(DVI_XCLK_P), .DVI_XCLK_N(DVI_XCLK_N), // .DVI_RESET_B(DVI_RESET_B), .DVI_H(DVI_H), .DVI_V(DVI_V), .DVI_DE(DVI_DE), .vsyn(vsyn), .hsyn(hsyn), .red(red), .green(green), .blue(blue), .KiwiFormGraphics_setget_pixel_return(KiwiFormGraphics_setget_pixel_return), .KiwiFormGraphics_setget_pixel_x(KiwiFormGraphics_setget_pixel_x), .KiwiFormGraphics_setget_pixel_y(KiwiFormGraphics_setget_pixel_y), .KiwiFormGraphics_setget_pixel_readf(KiwiFormGraphics_setget_pixel_readf), .KiwiFormGraphics_setget_pixel_wdata(KiwiFormGraphics_setget_pixel_wdata), .KiwiFormGraphics_setget_pixel_ack(KiwiFormGraphics_setget_pixel_ack), .KiwiFormGraphics_setget_pixel_req(KiwiFormGraphics_setget_pixel_req) ); // The framestore generated by KiwiC: // KiwiFramestore the_fstore( // .reset(fstore_reset), // .clk(clk_135MHz), // .clear(fstore_clear), // .vsyn(vsyn), .hsyn(hsyn), .r(r), .g(g), .b(b), // .KiwiFramestore_setget_pixel_return(KiwiFormGraphics_setget_pixel_return), // .KiwiFramestore_setget_pixel_x(KiwiFormGraphics_setget_pixel_x), // .KiwiFramestore_setget_pixel_y(KiwiFormGraphics_setget_pixel_y), // .KiwiFramestore_setget_pixel_readf(KiwiFormGraphics_setget_pixel_readf), // .KiwiFramestore_setget_pixel_wd(KiwiFormGraphics_setget_pixel_wdata), // .KiwiFramestore_setget_pixel_ack(KiwiFormGraphics_setget_pixel_ack), // .KiwiFramestore_setget_pixel_req(KiwiFormGraphics_setget_pixel_req), // .led4(led4) // ); nbody the_nbody( .reset(plotter_reset), .clk(plotter_clk), .KiwiFormGraphics_setget_pixel_wdata(KiwiFormGraphics_setget_pixel_wdata), .KiwiFormGraphics_setget_pixel_readf(KiwiFormGraphics_setget_pixel_readf), .KiwiFormGraphics_setget_pixel_y(KiwiFormGraphics_setget_pixel_y), .KiwiFormGraphics_setget_pixel_x(KiwiFormGraphics_setget_pixel_x), .KiwiFormGraphics_setget_pixel_ack(KiwiFormGraphics_setget_pixel_ack), .KiwiFormGraphics_setget_pixel_req(KiwiFormGraphics_setget_pixel_req), .KiwiFormGraphics_setget_pixel_return(KiwiFormGraphics_setget_pixel_return) ); endmodule