OpenCores
URL https://opencores.org/ocsvn/hpdmc/hpdmc/trunk

Subversion Repositories hpdmc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 4 to Rev 5
    Reverse comparison

Rev 4 → Rev 5

/trunk/test/tb_hpdmc.v
288,6 → 288,38
end
endtask
 
task wbwriteburst;
input [31:0] address;
integer i;
begin
wb_adr_i = address;
wb_cyc_i = 1'b1;
wb_stb_i = 1'b1;
wb_we_i = 1'b1;
wb_sel_i = 8'hff;
wb_dat_i = {$random, $random};
wb_cti_i = 3'b010;
i = 0;
#1;
while(~wb_ack_o) begin
i = i+1;
waitclock;
end
$display("Memory Write : %x=%x acked in %d clocks", address, wb_dat_i, i);
for(i=0;i<3;i=i+1) begin
wb_dat_i = {$random, $random};
waitclock;
$display("(burst continuing) %x", wb_dat_i);
end
wb_cti_i = 3'b000;
wb_cyc_i = 1'b0;
wb_stb_i = 1'b0;
wb_we_i = 1'b0;
waitclock;
end
endtask
 
always begin
$dumpfile("hpdmc.vcd");
 
417,9 → 449,13
wb_nextadr_valid = 1'b0;
wbreadburst(32'h60);*/
wbwrite(32'h00000000, 64'h1111222233334444);
//wbwrite(32'h00000000, 64'h1111222233334444);
wbwriteburst(32'h00);
waitnclock(10);
wbreadburst(32'h00);
//wbreadburst(32'h00);
//waitnclock(10);
$finish;
end
/trunk/test/ddr.v
165,12 → 165,12
`endif
 
// added by lekernel: for testing reads before testing writes
integer fillmem_i;
/*integer fillmem_i;
initial begin
for(fillmem_i=0;fillmem_i<100;fillmem_i=fillmem_i+1) begin
mem_array[fillmem_i] = $random;
end
end
end*/
 
// Dqs edge checking
integer i;
/trunk/rtl/hpdmc_ddrio.v
61,29 → 61,25
reg [1:0] wfifo_consume;
 
/* Writes to the Write FIFO */
always @(posedge rst, posedge clk) begin
if(rst)
wfifo_produce <= 2'b00;
else begin
if(buffer_w_nextburst) begin
wfifo_produce <= 2'b00;
wfifomask1[0] <= 4'b1111;
wfifomask1[1] <= 4'b1111;
wfifomask1[2] <= 4'b1111;
wfifomask1[3] <= 4'b1111;
wfifomask0[0] <= 4'b1111;
wfifomask0[1] <= 4'b1111;
wfifomask0[2] <= 4'b1111;
wfifomask0[3] <= 4'b1111;
end else if(buffer_w_next)
wfifo_produce <= wfifo_produce + 1;
if(buffer_w_next) begin
$display("Pushing into Write FIFO Mask %h", buffer_w_mask);
wfifomask1[wfifo_produce] <= buffer_w_mask[7:4];
wfifomask0[wfifo_produce] <= buffer_w_mask[3:0];
wfifo1[wfifo_produce] <= buffer_w_dat[63:32];
wfifo0[wfifo_produce] <= buffer_w_dat[31:0];
end
always @(posedge clk) begin
if(buffer_w_nextburst) begin
wfifomask1[0] <= buffer_w_mask[7:4];
wfifomask1[1] <= 4'b1111;
wfifomask1[2] <= 4'b1111;
wfifomask1[3] <= 4'b1111;
wfifomask0[0] <= buffer_w_mask[3:0];
wfifomask0[1] <= 4'b1111;
wfifomask0[2] <= 4'b1111;
wfifomask0[3] <= 4'b1111;
wfifo1[0] <= buffer_w_dat[63:32];
wfifo0[0] <= buffer_w_dat[31:0];
wfifo_produce <= 2'b01;
end else if(buffer_w_next) begin
wfifo_produce <= wfifo_produce + 1;
wfifomask1[wfifo_produce] <= buffer_w_mask[7:4];
wfifomask0[wfifo_produce] <= buffer_w_mask[3:0];
wfifo1[wfifo_produce] <= buffer_w_dat[63:32];
wfifo0[wfifo_produce] <= buffer_w_dat[31:0];
end
end
 
99,6 → 95,8
wfifo_consume <= wfifo_consume + 1;
wfifo_outmask <= wfifomask0[wfifo_consume];
wfifo_out <= wfifo0[wfifo_consume];
if(wfifo_enable)
$display("Read from LOW Write FIFO(%d) Mask %h", wfifo_consume, wfifomask0[wfifo_consume]);
end else begin
wfifo_outmask <= wfifomask1[wfifo_consume];
wfifo_out <= wfifo1[wfifo_consume];
/trunk/rtl/hpdmc_scheduler.v
127,8 → 127,10
fetched_address_valid <= address_valid & ~address_we;
write_valid <= address_valid & address_we;
fetched_address <= address;
end else if(fq_clearfetch)
end else if(fq_clearfetch) begin
fetched_address_valid <= 1'b0;
write_valid <= 1'b0;
end
if(fq_next) begin
next_address_valid <= 1'b0;
next_address_we <= 1'b0;
579,12 → 581,12
case(wstate)
WIDLE: begin
buffer_r_nextburst = 1'b1;
buffer_w_nextburst = 1'b1;
buffer_r_nextburst = 1'b1;
if(wb_cyc_i & wb_stb_i) begin
if(wb_we_i)
if(wb_we_i) begin
next_wstate = WPROCESS_WRITE;
else
end else
next_wstate = WPROCESS_READ;
end
end
612,8 → 614,8
end
WPROCESS_WRITE: begin
fq_clearfetch = 1'b1;
if(write_valid) begin
fq_clearfetch = 1'b1;
wb_ack_o = 1'b1;
buffer_w_next = 1'b1;
reload_maxburst_counter = 1'b1;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.