diff --git a/pipelined/src/generic/flop/bram.sv b/pipelined/src/generic/flop/bram.sv new file mode 100644 index 00000000..75fb7663 --- /dev/null +++ b/pipelined/src/generic/flop/bram.sv @@ -0,0 +1,47 @@ +// This model actually works correctly with vivado. + + +module bram2p1r1w + #( + //-------------------------------------------------------------------------- + parameter NUM_COL = 8, + parameter COL_WIDTH = 8, + parameter ADDR_WIDTH = 10, + // Addr Width in bits : 2 *ADDR_WIDTH = RAM Depth + parameter DATA_WIDTH = NUM_COL*COL_WIDTH // Data Width in bits + //---------------------------------------------------------------------- + ) ( + input logic clk, + input logic enaA, + input logic [ADDR_WIDTH-1:0] addrA, + output logic [DATA_WIDTH-1:0] doutA, + input logic enaB, + input logic [NUM_COL-1:0] weB, + input logic [ADDR_WIDTH-1:0] addrB, + input logic [DATA_WIDTH-1:0] dinB + ); + // Core Memory + logic [DATA_WIDTH-1:0] RAM [(2**ADDR_WIDTH)-1:0]; + integer i; + + initial begin + $readmemh("big64.txt", RAM); + end + + // Port-A Operation + always @ (posedge clk) begin + if(enaA) begin + doutA <= RAM[addrA]; + end + end + // Port-B Operation: + always @ (posedge clk) begin + if(enaB) begin + for(i=0;i