gateware

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 32342c0526801658f6feeb97fb696c55ceca24cc
parent 98ef000c19752e52cd3742a280c5286478a024e5
Author: Brian Swetland <swetland@frotz.net>
Date:   Tue, 28 Jan 2020 07:17:29 -0800

sdram: hw testing goop for colorlight board

- trivial write and readback test

Diffstat:
Ahdl/colorlight-sdram.sv | 98+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mhdl/colorlight.lpf | 35+++++++++++++++++++++++++++++++++++
Aproject/colorlight-sdram.def | 9+++++++++
3 files changed, 142 insertions(+), 0 deletions(-)

diff --git a/hdl/colorlight-sdram.sv b/hdl/colorlight-sdram.sv @@ -0,0 +1,98 @@ +// Copyright 2020, Brian Swetland <swetland@frotz.net> +// Licensed under the Apache License, Version 2.0. + +`default_nettype none + +module top( + input wire phy_clk, + + output sdram_clk, + output sdram_ras_n, + output sdram_cas_n, + output sdram_we_n, + output [11:0]sdram_addr, + inout [15:0]sdram_data, + + output wire glb_clk, + output wire glb_bln, + output wire j1r0, + output wire j1r1, + output wire j1g0, + output wire j1g1, + output wire j1b0, + output wire j1b1, + output wire glb_a, + output wire glb_b, + input wire btn +); + +wire clk25m = phy_clk; + +wire clk125m; +wire clk250m; + +pll_25_125_250 pll( + .clk25m_in(phy_clk), + .clk125m_out(clk125m), + .clk250m_out(clk250m), + .locked() +); + +wire [15:0]info; +wire info_e; + +testbench #( + .T_PWR_UP(25000), + .T_RI(1900) + ) test0 ( + .clk(clk125m), + .error(), + .done(), + .sdram_clk(sdram_clk), + .sdram_ras_n(sdram_ras_n), + .sdram_cas_n(sdram_cas_n), + .sdram_we_n(sdram_we_n), + .sdram_addr(sdram_addr), +`ifdef verilator + .sdram_data_i(sdram_data), + .sdram_data_o(), +`else + .sdram_data(sdram_data), +`endif + .info(info), + .info_e(info_e) +); + + +assign j1r1 = j1r0; +assign j1b1 = j1b0; +assign j1g1 = j1g0; + +reg [11:0]waddr = 12'd0; + +always_ff @(posedge clk125m ) begin + waddr <= (info_e) ? (waddr + 12'd2) : waddr; +end + +display #( + .BPP(1), + .RGB(1), + .WIDE(0), + .HEXMODE(1) + ) display0 ( + .clk(clk25m), + .red(j1r0), + .grn(j1g0), + .blu(j1b0), + .hsync(glb_a), + .vsync(glb_b), + .active(), + .frame(), + .wclk(clk125m), + .waddr(waddr), + .wdata(info), + .we(info_e) +); + +endmodule + diff --git a/hdl/colorlight.lpf b/hdl/colorlight.lpf @@ -53,3 +53,38 @@ LOCATE COMP "glb_clk" SITE "C18"; LOCATE COMP "glb_alat" SITE "J18"; LOCATE COMP "glb_bln" SITE "H16"; +LOCATE COMP "sdram_data[0]" SITE "D15"; +LOCATE COMP "sdram_data[1]" SITE "E14"; +LOCATE COMP "sdram_data[2]" SITE "E13"; +LOCATE COMP "sdram_data[3]" SITE "D12"; +LOCATE COMP "sdram_data[4]" SITE "E12"; +LOCATE COMP "sdram_data[5]" SITE "D11"; +LOCATE COMP "sdram_data[6]" SITE "C10"; +LOCATE COMP "sdram_data[7]" SITE "B17"; +LOCATE COMP "sdram_data[8]" SITE "B8"; +LOCATE COMP "sdram_data[9]" SITE "A8"; +LOCATE COMP "sdram_data[10]" SITE "C7"; +LOCATE COMP "sdram_data[11]" SITE "A7"; +LOCATE COMP "sdram_data[12]" SITE "A6"; +LOCATE COMP "sdram_data[13]" SITE "B6"; +LOCATE COMP "sdram_data[14]" SITE "A5"; +LOCATE COMP "sdram_data[15]" SITE "B5"; + +LOCATE COMP "sdram_addr[0]" SITE "B13"; +LOCATE COMP "sdram_addr[1]" SITE "C14"; +LOCATE COMP "sdram_addr[2]" SITE "A16"; +LOCATE COMP "sdram_addr[3]" SITE "A17"; +LOCATE COMP "sdram_addr[4]" SITE "B16"; +LOCATE COMP "sdram_addr[5]" SITE "B15"; +LOCATE COMP "sdram_addr[6]" SITE "A14"; +LOCATE COMP "sdram_addr[7]" SITE "A13"; +LOCATE COMP "sdram_addr[8]" SITE "A12"; +LOCATE COMP "sdram_addr[9]" SITE "A11"; +LOCATE COMP "sdram_addr[10]" SITE "B12"; +LOCATE COMP "sdram_addr[11]" SITE "B11"; + +LOCATE COMP "sdram_we_n" SITE "A10"; +LOCATE COMP "sdram_cas_n" SITE "A9"; +LOCATE COMP "sdram_ras_n" SITE "B10"; +LOCATE COMP "sdram_clk" SITE "B9"; + diff --git a/project/colorlight-sdram.def b/project/colorlight-sdram.def @@ -0,0 +1,9 @@ +PROJECT_TYPE := nextpnr-ecp5 + +PROJECT_SRCS := hdl/colorlight-sdram.sv hdl/colorlight.lpf +PROJECT_SRCS += hdl/lattice/ecp5_pll_25_125_250.v +PROJECT_SRCS += hdl/display/display.sv hdl/display/display_timing.sv +PROJECT_SRCS += hdl/sdram/testbench.sv +PROJECT_SRCS += hdl/sdram/sdram.sv hdl/sdram/sdram_glue_ecp5.sv + +PROJECT_NEXTPNR_OPTS := --25k --package CABGA381 --speed 6