aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp2/gpmc/fifo_to_gpmc.v
diff options
context:
space:
mode:
Diffstat (limited to 'fpga/usrp2/gpmc/fifo_to_gpmc.v')
-rw-r--r--fpga/usrp2/gpmc/fifo_to_gpmc.v19
1 files changed, 8 insertions, 11 deletions
diff --git a/fpga/usrp2/gpmc/fifo_to_gpmc.v b/fpga/usrp2/gpmc/fifo_to_gpmc.v
index 42c71d2d6..93341975d 100644
--- a/fpga/usrp2/gpmc/fifo_to_gpmc.v
+++ b/fpga/usrp2/gpmc/fifo_to_gpmc.v
@@ -1,5 +1,5 @@
//
-// Copyright 2011 Ettus Research LLC
+// Copyright 2011-2012 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -39,14 +39,13 @@
////////////////////////////////////////////////////////////////////////
module fifo_to_gpmc
- #(parameter PTR_WIDTH = 2, parameter ADDR_WIDTH = 10)
+ #(parameter PTR_WIDTH = 2, parameter ADDR_WIDTH = 10, parameter LAST_ADDR = 10'h3ff)
(input clk, input reset, input clear, input arst,
input [17:0] data_i, input src_rdy_i, output dst_rdy_o,
output [15:0] EM_D, input [ADDR_WIDTH:1] EM_A, input EM_CLK, input EM_OE,
output reg data_available);
//states for the GPMC side of things
- wire [17:0] data_o;
reg gpmc_state;
reg [ADDR_WIDTH:1] addr;
reg [PTR_WIDTH:0] gpmc_ptr, next_gpmc_ptr;
@@ -82,14 +81,15 @@ module fifo_to_gpmc
end
GPMC_STATE_EMPTY: begin
- if (EM_A == 10'h3ff) begin
+ if (addr == LAST_ADDR) begin
gpmc_state <= GPMC_STATE_START;
gpmc_ptr <= next_gpmc_ptr;
+ addr <= 0;
end
end
endcase //gpmc_state
- end //EM_WE
+ end //EM_OE
end //always
//------------------------------------------------------------------
@@ -146,14 +146,11 @@ module fifo_to_gpmc
assign dst_rdy_o = fifo_state == FIFO_STATE_FILL;
- //assign data from bram output
- assign EM_D = data_o[15:0];
-
//instantiate dual ported bram for async read + write
- ram_2port #(.DWIDTH(18),.AWIDTH(PTR_WIDTH + ADDR_WIDTH)) async_fifo_bram
+ ram_2port #(.DWIDTH(16),.AWIDTH(PTR_WIDTH + ADDR_WIDTH)) async_fifo_bram
(.clka(clk),.ena(1'b1),.wea(src_rdy_i && dst_rdy_o),
- .addra({fifo_ptr[PTR_WIDTH-1:0], counter}),.dia(data_i),.doa(),
+ .addra({fifo_ptr[PTR_WIDTH-1:0], counter}),.dia(data_i[15:0]),.doa(),
.clkb(EM_CLK),.enb(1'b1),.web(1'b0),
- .addrb({gpmc_ptr[PTR_WIDTH-1:0], addr}),.dib(18'h3ffff),.dob(data_o));
+ .addrb({gpmc_ptr[PTR_WIDTH-1:0], addr}),.dib(18'h3ffff),.dob(EM_D));
endmodule // fifo_to_gpmc