|
@@ -60,14 +60,42 @@ reg ssReg;
|
|
|
reg ddsDirectFlagR;
|
|
reg ddsDirectFlagR;
|
|
|
reg [2:0] ddsWordNumReg;
|
|
reg [2:0] ddsWordNumReg;
|
|
|
reg [2:0] ddsWordNumRegSync;
|
|
reg [2:0] ddsWordNumRegSync;
|
|
|
|
|
+
|
|
|
|
|
+reg plsToggle;
|
|
|
|
|
+reg plsToggleSyncA;
|
|
|
|
|
+reg plsToggleSyncB;
|
|
|
//================================================================================
|
|
//================================================================================
|
|
|
// ASSIGNMENTS
|
|
// ASSIGNMENTS
|
|
|
//================================================================================
|
|
//================================================================================
|
|
|
assign DdsWordNumReg_o = ddsWordNumReg;
|
|
assign DdsWordNumReg_o = ddsWordNumReg;
|
|
|
|
|
+assign ddsWordNumValSync = plsToggleSyncB^plsToggleSyncA;
|
|
|
//==========================================================================//
|
|
//==========================================================================//
|
|
|
// CODING //
|
|
// CODING //
|
|
|
//==========================================================================//
|
|
//==========================================================================//
|
|
|
always @(posedge WrClk_i) begin
|
|
always @(posedge WrClk_i) begin
|
|
|
|
|
+ if (Rst_i) begin
|
|
|
|
|
+ plsToggle <= 1'b0;
|
|
|
|
|
+ end
|
|
|
|
|
+ else if (DdsWordNumVal_i) begin
|
|
|
|
|
+ plsToggle <= ~plsToggle;
|
|
|
|
|
+ end
|
|
|
|
|
+ else begin
|
|
|
|
|
+ plsToggle <= plsToggle;
|
|
|
|
|
+ end
|
|
|
|
|
+end
|
|
|
|
|
+
|
|
|
|
|
+always @(posedge RdClk_i) begin
|
|
|
|
|
+ if (Rst_i) begin
|
|
|
|
|
+ plsToggleSyncA <= 1'b0;
|
|
|
|
|
+ plsToggleSyncB <= 1'b0;
|
|
|
|
|
+ end
|
|
|
|
|
+ else begin
|
|
|
|
|
+ plsToggleSyncA <= plsToggle;
|
|
|
|
|
+ plsToggleSyncB <= plsToggleSyncA;
|
|
|
|
|
+ end
|
|
|
|
|
+end
|
|
|
|
|
+
|
|
|
|
|
+always @(posedge RdClk_i) begin
|
|
|
if (Rst_i) begin
|
|
if (Rst_i) begin
|
|
|
ssR <= 1'b0;
|
|
ssR <= 1'b0;
|
|
|
end
|
|
end
|
|
@@ -89,16 +117,16 @@ always @(posedge RdClk_i) begin
|
|
|
ssReg <= Ss_o;
|
|
ssReg <= Ss_o;
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
-always @(posedge WrClk_i) begin
|
|
|
|
|
|
|
+always @(posedge RdClk_i) begin
|
|
|
if (Rst_i) begin
|
|
if (Rst_i) begin
|
|
|
ddsWordNumReg <= 3'h0;
|
|
ddsWordNumReg <= 3'h0;
|
|
|
end
|
|
end
|
|
|
else begin
|
|
else begin
|
|
|
- if (DdsWordNumVal_i) begin
|
|
|
|
|
|
|
+ if (ddsWordNumValSync) begin
|
|
|
ddsWordNumReg <= DdsWordNum_i>>2;
|
|
ddsWordNumReg <= DdsWordNum_i>>2;
|
|
|
end
|
|
end
|
|
|
else begin
|
|
else begin
|
|
|
- if (Ss_o && !ssR) begin
|
|
|
|
|
|
|
+ if ((Ss_o && !ssR) && ddsWordNumReg != 0 ) begin
|
|
|
ddsWordNumReg <= ddsWordNumReg-1;
|
|
ddsWordNumReg <= ddsWordNumReg-1;
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
|
@@ -122,11 +150,11 @@ always @(posedge RdClk_i) begin
|
|
|
if (ddsDirectFlagR && !DdsDirectFlag_i) begin
|
|
if (ddsDirectFlagR && !DdsDirectFlag_i) begin
|
|
|
DdsSyncFpga_o <= 1'b1;
|
|
DdsSyncFpga_o <= 1'b1;
|
|
|
end
|
|
end
|
|
|
- else if ((!Ss_o && ssReg) && (ddsWordNumRegSync != 0)) begin
|
|
|
|
|
|
|
+ else if ((!Ss_o && ssReg) && (ddsWordNumReg != 0)) begin
|
|
|
DdsSyncFpga_o <= 1'b0;
|
|
DdsSyncFpga_o <= 1'b0;
|
|
|
end
|
|
end
|
|
|
else begin
|
|
else begin
|
|
|
- if (ddsWordNumRegSync == 3'h1 && (Ss_o && !ssReg)) begin
|
|
|
|
|
|
|
+ if (ddsWordNumReg == 3'h1 && (Ss_o && !ssReg)) begin
|
|
|
DdsSyncFpga_o <= 1'b1;
|
|
DdsSyncFpga_o <= 1'b1;
|
|
|
end
|
|
end
|
|
|
else begin
|
|
else begin
|