aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usrp2/gpmc/gpmc.v7
-rw-r--r--usrp2/models/gpmc_model.v26
2 files changed, 20 insertions, 13 deletions
diff --git a/usrp2/gpmc/gpmc.v b/usrp2/gpmc/gpmc.v
index 1963af6e6..56f879abc 100644
--- a/usrp2/gpmc/gpmc.v
+++ b/usrp2/gpmc/gpmc.v
@@ -12,7 +12,7 @@ module gpmc
wire EM_output_enable = (~EM_NOE & (~EM_NCS4 | ~EM_NCS6));
wire [15:0] EM_D_ram;
- reg [15:0] EM_D_wb;
+ wire [15:0] EM_D_wb;
assign EM_D = ~EM_output_enable ? 16'bz : ~EM_NCS4 ? EM_D_ram : EM_D_wb;
@@ -44,10 +44,13 @@ module gpmc
wb_sel_o <= ~EM_NBE;
end
+ reg [15:0] EM_D_wb_reg;
always @(posedge wb_clk)
if(wb_ack_i)
- EM_D_wb <= wb_dat_miso;
+ EM_D_wb_reg <= wb_dat_miso;
+ assign EM_D_wb = wb_ack_i ? wb_dat_miso : EM_D_wb_reg;
+
// stb, oe_del, we_del
assign wb_cyc_o = wb_stb_o;
diff --git a/usrp2/models/gpmc_model.v b/usrp2/models/gpmc_model.v
index ce3acaacf..38dde1fa5 100644
--- a/usrp2/models/gpmc_model.v
+++ b/usrp2/models/gpmc_model.v
@@ -25,16 +25,18 @@ module gpmc_model
input [10:0] addr;
input [15:0] data;
begin
- #2;
+ #2.3;
EM_A <= addr[10:1];
EM_D_int <= data;
- #4;
+ #2.01;
EM_NCS6 <= 0;
- #5;
+ #14;
EM_NWE <= 0;
- #41;
- EM_NWE <= 1;
+ #77.5;
EM_NCS6 <= 1;
+ //#1.5;
+ EM_NWE <= 1;
+ #6;
EM_A <= 10'bz;
EM_D_int <= 16'bz;
end
@@ -43,17 +45,19 @@ module gpmc_model
task GPMC_Read;
input [10:0] addr;
begin
- #2;
+ #1.3;
EM_A <= addr[10:1];
- #4;
+ #3;
EM_NCS6 <= 0;
- #5;
+ #14;
EM_NOE <= 0;
- #41;
- EM_NOE <= 1;
+ #77.5;
EM_NCS6 <= 1;
- EM_A <= 10'bz;
+ //#1.5;
$display("Data Read from GPMC: %X",EM_D);
+ EM_NOE <= 1;
+ #254;
+ EM_A <= 10'bz;
end
endtask // GPMC_Read