new MUX file, VGA memory splited in 15 seperate parts
This commit is contained in:
@@ -1,15 +1,6 @@
|
||||
// TOP module
|
||||
//
|
||||
//
|
||||
// `include "clock_divider_param.v"
|
||||
// `include "clock_enable_param.v"
|
||||
// `include "blockram.v"
|
||||
// `include "pattern_gen.v"
|
||||
// `include "vga_module.v"
|
||||
// `include "horizontal_counter.v"
|
||||
// `include "vertical_counter.v"
|
||||
|
||||
|
||||
|
||||
module top #( parameter
|
||||
//pattern generator paremater
|
||||
@@ -18,9 +9,9 @@ module top #( parameter
|
||||
WAIT = 1,
|
||||
WAIT_WIDTH = 2,
|
||||
//memory parameters
|
||||
ADDR_WIDTH = 17, // 19, //
|
||||
ADDR_WIDTH = 13, //
|
||||
DATA_WIDTH = 12,
|
||||
DEPTH = 76_800, // 307_200,//
|
||||
DEPTH = 5_120, // ( 320 * 16 )
|
||||
//VGA parameters
|
||||
HSYNC_CLKS = 800,
|
||||
HSYNC_DISPLAY = 640,
|
||||
@@ -34,8 +25,7 @@ module top #( parameter
|
||||
VSYNC_BACK_PORCH = 29
|
||||
)(
|
||||
input clk,
|
||||
output [11:0] led,
|
||||
output [1:0] ledc, // led camera configuration indicator
|
||||
// output [11:0] led,
|
||||
//VGA inputs outputs
|
||||
output [3:0] vgaRed,
|
||||
output [3:0] vgaBlue,
|
||||
@@ -49,32 +39,41 @@ module top #( parameter
|
||||
// 7 segment
|
||||
output [6:0] seg,
|
||||
output [3:0] an
|
||||
|
||||
|
||||
);
|
||||
|
||||
//------internal wires and registers--------
|
||||
wire w_enable;
|
||||
wire pixel_clk;
|
||||
wire w_enable;
|
||||
|
||||
wire w_write;
|
||||
|
||||
wire clk50;
|
||||
wire [ADDR_WIDTH-1:0] w_addr_wr;
|
||||
wire [DATA_WIDTH-1:0] w_data_wr;
|
||||
|
||||
wire w_write;
|
||||
wire [ADDR_WIDTH-1:0] w_com_addr_wr;
|
||||
wire [DATA_WIDTH-1:0] w_com_data_wr;
|
||||
wire w_com_write;
|
||||
wire [ADDR_WIDTH-1:0] w_com_addr_rd;
|
||||
|
||||
wire [ADDR_WIDTH-1:0] w_addr_wr;
|
||||
wire [DATA_WIDTH-1:0] w_data_wr;
|
||||
|
||||
wire [ADDR_WIDTH-1:0] w_com_addr_wr;
|
||||
wire [DATA_WIDTH-1:0] w_com_data_wr;
|
||||
wire w_com_write;
|
||||
wire [ADDR_WIDTH-1:0] w_com_addr_rd;
|
||||
wire [3:0] w_vga_line_mux;
|
||||
|
||||
// wire [ADDR_WIDTH-1:0] w_addrb;
|
||||
|
||||
wire [ADDR_WIDTH-1:0] w_addr_rd;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd;
|
||||
|
||||
|
||||
wire [DATA_WIDTH-1:0] w_data_rd;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd0;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd1;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd2;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd3;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd4;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd5;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd6;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd7;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd8;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd9;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd10;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd11;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd12;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd13;
|
||||
wire [DATA_WIDTH-1:0] w_data_rd14;
|
||||
|
||||
//-----sub modules--------------------------
|
||||
clock_enable_param #(
|
||||
@@ -94,7 +93,6 @@ clock_divider #(
|
||||
);
|
||||
|
||||
|
||||
|
||||
pattern_gen #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
@@ -109,27 +107,6 @@ pattern_gen #(
|
||||
.o_write(w_write)
|
||||
);
|
||||
|
||||
rams_tdp_rf_rf #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram3(
|
||||
// -------------------------PORT A
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_wea_bram ),
|
||||
.addra( w_addra_bram ),
|
||||
.dia( w_dia_bram ),
|
||||
.doa( w_doa_bram ),
|
||||
|
||||
//---------------------------PORT B
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd));
|
||||
|
||||
|
||||
vga_module #(
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
@@ -153,35 +130,34 @@ vga_module #(
|
||||
.o_Hsync(Hsync),
|
||||
.o_Vsync(Vsync),
|
||||
.o_display(),
|
||||
.o_line_mux(w_vga_line_mux),
|
||||
.o_addr_rd(w_addr_rd),
|
||||
.o_data_rd(w_data_rd)
|
||||
.o_data_rd(r_data_rd)
|
||||
);
|
||||
|
||||
com_to_mem #(
|
||||
.WAIT(WAIT),
|
||||
.WAIT_WIDTH(WAIT_WIDTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH),
|
||||
.DEPTH(DEPTH)
|
||||
) com_to_mem1 (
|
||||
.clk(clk),
|
||||
.sw(sw[0]),
|
||||
//.i_data_rd(w_doa_bram),
|
||||
.i_enable(w_enable),
|
||||
.o_addr_wr(w_com_addr_wr),
|
||||
.o_addr_rd(w_com_addr_rd),
|
||||
.o_data_wr(w_com_data_wr),
|
||||
.o_write(w_com_write),
|
||||
.RsRx(RsRx), // UART RX Data
|
||||
.RsTx(RsTx), // UART TX Data
|
||||
.seg(seg),
|
||||
.an(an),
|
||||
.o_addr_wr_reg(w_addr_com_wr_reg),
|
||||
.o_data_reg(w_data_com_reg),
|
||||
.o_we_reg(w_we_com_reg)
|
||||
);
|
||||
|
||||
|
||||
// com_to_mem #(
|
||||
// .WAIT(WAIT),
|
||||
// .WAIT_WIDTH(WAIT_WIDTH),
|
||||
// .ADDR_WIDTH(ADDR_WIDTH),
|
||||
// .DATA_WIDTH(DATA_WIDTH),
|
||||
// .DEPTH(DEPTH)
|
||||
// ) com_to_mem1 (
|
||||
// .clk(clk),
|
||||
// .sw(sw[0]),
|
||||
// //.i_data_rd(w_doa_bram),
|
||||
// .i_enable(w_enable),
|
||||
// .o_addr_wr(w_com_addr_wr),
|
||||
// .o_addr_rd(w_com_addr_rd),
|
||||
// .o_data_wr(w_com_data_wr),
|
||||
// .o_write(w_com_write),
|
||||
// .RsRx(RsRx), // UART RX Data
|
||||
// .RsTx(RsTx), // UART TX Data
|
||||
// .seg(seg),
|
||||
// .an(an),
|
||||
// .o_addr_wr_reg(w_addr_com_wr_reg),
|
||||
// .o_data_reg(w_data_com_reg),
|
||||
// .o_we_reg(w_we_com_reg)
|
||||
// );
|
||||
|
||||
// debounce_switch debounce_switch_reset(
|
||||
// .clk(clk),
|
||||
@@ -189,7 +165,359 @@ com_to_mem #(
|
||||
// .o_switch(w_reset_default)
|
||||
// );
|
||||
|
||||
mux #(
|
||||
.DATA_WIDTH(DATA_WIDTH),
|
||||
.SELECT_WIDTH('d4))
|
||||
mux1(
|
||||
select(w_vga_line_mux),
|
||||
d0(w_data_rd0),
|
||||
d1(w_data_rd1),
|
||||
d2(w_data_rd2),
|
||||
d3(w_data_rd3),
|
||||
d4(w_data_rd4),
|
||||
d5(w_data_rd5),
|
||||
d6(w_data_rd6),
|
||||
d7(w_data_rd7),
|
||||
d8(w_data_rd8),
|
||||
d9(w_data_rd9),
|
||||
d10(w_data_rd10),
|
||||
d11(w_data_rd11),
|
||||
d12(w_data_rd12),
|
||||
d13(w_data_rd13),
|
||||
d14(w_data_rd14),
|
||||
q(w_data_rd));
|
||||
|
||||
|
||||
|
||||
//-------------- memory modules-------------------------
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram0(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd0));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram1(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd1));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram2(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd2));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram3(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd3));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram4(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd4));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram5(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd5));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram6(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd6));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram7(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd7));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram8(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd8));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram9(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd9));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram10(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd10));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram11(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd11));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram12(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd12));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram13(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd13));
|
||||
|
||||
|
||||
blockram #(
|
||||
.DEPTH(DEPTH),
|
||||
.ADDR_WIDTH(ADDR_WIDTH),
|
||||
.DATA_WIDTH(DATA_WIDTH))
|
||||
bram14(
|
||||
// -------------------------PORT A (write)
|
||||
.clka(clk),
|
||||
.ena( 1'b1 /*w_enable*/),
|
||||
.wea( w_write ),
|
||||
.addra( w_addr_wr ),
|
||||
.dia( w_data_wr ),
|
||||
.doa( ),
|
||||
|
||||
//---------------------------PORT B (read)
|
||||
.clkb(clk),
|
||||
.addrb( w_addr_rd ),
|
||||
.enb(w_enable),
|
||||
//.web(),
|
||||
//.dib(),
|
||||
.dob(w_data_rd14));
|
||||
|
||||
endmodule
|
||||
Reference in New Issue
Block a user