浏览代码

Изменена ширина отгрузки данных для DDS - 80

Anatoliy Chigirinskiy 1 年之前
父节点
当前提交
fc9709f041

+ 25 - 1
src/src/FifoCtrl/FifoCtrl.v

@@ -75,7 +75,31 @@ always @(posedge WrClk_i) begin
     end
     else begin
         if (WR_NUM>1) begin
-            case (WR_NUM)  
+            case (WR_NUM)
+            4: begin 
+                case (wrCnt)  
+                    0 : begin 
+                        if (Val_i) begin 
+                            dataReg[(4*IN_WIDTH)-1:(3*IN_WIDTH)] <= Data_i;
+                        end
+                    end
+                    1 : begin 
+                        if (Val_i) begin 
+                            dataReg[(3*IN_WIDTH)-1:(2*IN_WIDTH)] <= Data_i;
+                        end
+                    end
+                    2:  begin
+                        if (Val_i) begin
+                            dataReg[(2*IN_WIDTH)-1:IN_WIDTH] <= Data_i;
+                        end
+                    end
+                    3: begin
+                        if (Val_i) begin 
+                        dataReg[IN_WIDTH-1:0] <= Data_i;
+                        end
+                    end
+                endcase
+            end
             3: begin
                 case (wrCnt)
                 0 : begin 

+ 3 - 3
src/src/Top/TopSbTmsg.v

@@ -438,9 +438,9 @@ LmxWrapper #(
 
 DDSWrapper #(
 	.IN_WIDTH			(24),
-	.WR_NUM				(3),
-	.OUT_WIDTH			(64),
-	.DATA_WIDTH			(64)
+	.WR_NUM				(4),
+	.OUT_WIDTH			(80),
+	.DATA_WIDTH			(80)
 ) DDSWrapper(
 	.WrClk_i			(clk50),
 	.RdClk_i			(clk5),

+ 7 - 4
src/src/Top/TopSbTmsgTb.sv

@@ -121,7 +121,7 @@ localparam [23:0] InitAttHeader         = {1'h0, DeviceIdAtt, AttWordInitNum, 1'
 localparam [23:0] InitShRegHeader       = {1'h0, DeviceIdShReg, ShRegWordInitNum, 1'h1};
 
 localparam [3:0]  LMXWordNum = 4'd14;
-localparam [2:0]  DDSWordNum = 3'd3;
+localparam [2:0]  DDSWordNum = 3'd4;
 localparam        POTWordNum = 2'd2;
 localparam        DACWordNum = 1'd1;
 localparam        ATTWordNum = 1'd1;
@@ -142,7 +142,7 @@ assign Mosi0_o = (modeSel) ? mosi0Q : mosi0R;
 assign Mosi1_io = (anyFlag) ? 1'bz : Mosi1_o;
 assign MisoLdLmx_i = 1'b1;
 
-assign emptyFlagTx = (trCnt > 95) ? 1'b1 : 1'b0;
+assign emptyFlagTx = (trCnt > 71) ? 1'b1 : 1'b0;
 assign QSPITotalWordNum = LMXWordNum + DDSWordNum + POTWordNum + DACWordNum + ATTWordNum + ShRegWordNum + MaxWordNum + GPIOWordNum; 
 
 //***********************************************
@@ -188,7 +188,7 @@ initial begin
       wait (trCnt == 70) begin 
             Start_i = 0;
         end
-        #(CLK_PERIOD*100) 
+        #(CLK_PERIOD*1000) 
         Start_i = 1; // Start SPI transaction
   end
 //***********************************************
@@ -317,7 +317,10 @@ always_comb begin
             else if (trCnt == 45) begin 
                 SPIdata = AllDevQSPIHeader;
             end
-            else if (trCnt == 71) begin 
+            else if (trCnt == 46) begin 
+                SPIdata = 7'h55;
+            end
+            else if (trCnt == 72) begin 
                 SPIdata = AllDevQSPIHeader;
             end
             else begin

+ 1 - 1
src/src/WrapFifoChain/DDSWrapper.v

@@ -90,7 +90,7 @@ always @(posedge WrClk_i) begin
 	end
 	else begin 
 		if (DdsWordNumVal_i) begin 
-			ddsWordNumReg <= (DdsWordNum_i + (DdsWordNum_i>>1)+ (DdsWordNum_i>>2))>>2;
+			ddsWordNumReg <= DdsWordNum_i>>2;
 		end
 		else begin 
 			if (Ss_o && !ssR) begin 

+ 2 - 2
src/src/WrapFifoChain/FifoDDS/FifoDDS.ipc

@@ -24,12 +24,12 @@ LANG=0
 OutputRegistersSelected=false
 REG=false
 ReadDataNum=false
-ReadDataWidth=64
+ReadDataWidth=80
 ReadDepth=2
 ResetSynchronization=true
 SSRAM=false
 StandardFIFO=false
 Synthesis_tool=GowinSynthesis
 WriteDataNum=false
-WriteDataWidth=64
+WriteDataWidth=80
 WriteDepth=2

+ 153 - 138
src/src/WrapFifoChain/FifoDDS/FifoDDS.v

@@ -1,11 +1,11 @@
 //
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.02"
-//Thu Apr 25 16:06:49 2024
+//Tool Version "V1.9.9.03 (64-bit)"
+//Tue May 28 15:49:41 2024
 
 //Source file index table:
-//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
-//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+//file0 "\C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect version="2.3"
@@ -17,141 +17,156 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-bhm5ZxuHD5fe6lKy2Dq5AwHxacJ1cWMwBMX9H8GmdL4lnDV2AKUKXoXHJPX5qkh7Ng/EuDXlf3tq
-XgChMGXHxhGKlXwTDGbPZ7rg+R+CLwCXNxLjHDLHZj7jAwx16WNjn6S5gfS7ZWNO/UifNMSnMT3R
-m/cUTYMLIkyS4qXtYi2xztDEhzoau2SQnLDGMrABROuNOwwpPJPYPMCZrpYnUTE9prjojUwFQhnT
-aNSO4thTEH7/k6gA0a1Hr9Kwu6d3XW6q2dZH78mYOaedKNxNSU95OsQ/GrR3fobX7P5Bxrf3upgd
-Xs0Rq7KS+nMjcFcl7E3CRA+0+XO4iCSxRkS+iA==
+HBNA+/9oSsy54/JlKoiN4gbbgk61v4S0vzu1SlxVV1FpSHLGFM3OwH9RYuOhFT+UXDcUiyGSTSim
+K+dcHv0CeFpV/YQWR5St8DdQGG+R45m6XWDErYGEafyEor0OduRaUiVP0XYqOL50oW/9d9x2NNiT
+ln6/o/IJCxIEaVblBTKR3tD4Ofb06tQw/6ZuEVhgWtapp5r+TlGiaQP6jx3uNfn+NBjuwyUzYkQ0
+MJjDVvgoM3zUdhRo+JtyCKggxSnoc2ym6iCL/mV/5ly8CtyjxhgYzms2pS3M3jxp5ii+uQ3L2s40
+krH8Dc9bcX5adde2FYFmhmRyz3sc5c38ia3cWA==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=7024)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=7872)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
-yLUXcvMsVv4bPZxPFw==
+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
+LUKcX1Is
 `pragma protect end_protected
 module FifoDDS (
   Data,
@@ -165,13 +180,13 @@ module FifoDDS (
   Full
 )
 ;
-input [63:0] Data;
+input [79:0] Data;
 input Reset;
 input WrClk;
 input RdClk;
 input WrEn;
 input RdEn;
-output [63:0] Q;
+output [79:0] Q;
 output Empty;
 output Full;
 wire VCC;
@@ -182,10 +197,10 @@ wire GND;
     .WrClk(WrClk),
     .WrEn(WrEn),
     .RdEn(RdEn),
-    .Data(Data[63:0]),
+    .Data(Data[79:0]),
     .Empty(Empty),
     .Full(Full),
-    .Q(Q[63:0])
+    .Q(Q[79:0])
 );
   VCC VCC_cZ (
     .V(VCC)

+ 34 - 12
src/src/WrapFifoChain/FifoDDS/FifoDDS.vo

@@ -1,8 +1,8 @@
 //Copyright (C)2014-2024 Gowin Semiconductor Corporation.
 //All rights reserved.
 //File Title: Post-PnR Simulation Model file
-//Tool Version: V1.9.9.02
-//Created Time: Thu Apr 25 16:06:49 2024
+//Tool Version: V1.9.9.03 (64-bit)
+//Created Time: Tue May 28 15:49:41 2024
 
 `timescale 100 ps/100 ps
 module FifoDDS(
@@ -16,20 +16,20 @@ module FifoDDS(
 	Empty,
 	Full
 );
-input [63:0] Data;
+input [79:0] Data;
 input Reset;
 input WrClk;
 input RdClk;
 input WrEn;
 input RdEn;
-output [63:0] Q;
+output [79:0] Q;
 output Empty;
 output Full;
-wire [63:0] Data;
+wire [79:0] Data;
 wire Empty;
 wire Full;
 wire GND;
-wire [63:0] Q;
+wire [79:0] Q;
 wire RdClk;
 wire RdEn;
 wire Reset;
@@ -38,7 +38,7 @@ wire WrClk;
 wire WrEn;
 wire \fifo_inst/n20_5 ;
 wire \fifo_inst/n26_4 ;
-wire \fifo_inst/n457_4 ;
+wire \fifo_inst/n537_4 ;
 wire \fifo_inst/rempty_val ;
 wire \fifo_inst/wfull_val_7 ;
 wire \fifo_inst/wfull_val1 ;
@@ -64,6 +64,7 @@ wire [1:0] \fifo_inst/Equal.rq2_wptr ;
 wire [0:0] \fifo_inst/rptr ;
 wire [1:0] \fifo_inst/wptr ;
 wire [0:0] \fifo_inst/Equal.wbin ;
+wire [31:16] \fifo_inst/DO ;
 VCC VCC_cZ (
   .V(VCC)
 );
@@ -102,12 +103,12 @@ LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
 	.F(\fifo_inst/Equal.wgraynext [0])
 );
 defparam \fifo_inst/Equal.wgraynext_0_s0 .INIT=8'h1E;
-LUT2 \fifo_inst/n457_s1  (
+LUT2 \fifo_inst/n537_s1  (
 	.I0(\fifo_inst/reset_w [1]),
 	.I1(\fifo_inst/wfull_val_7 ),
-	.F(\fifo_inst/n457_4 )
+	.F(\fifo_inst/n537_4 )
 );
-defparam \fifo_inst/n457_s1 .INIT=4'h4;
+defparam \fifo_inst/n537_s1 .INIT=4'h4;
 LUT4 \fifo_inst/rempty_val_s3  (
 	.I0(\fifo_inst/Equal.rq2_wptr [1]),
 	.I1(\fifo_inst/rempty_val_8 ),
@@ -302,7 +303,7 @@ defparam \fifo_inst/wfull_val1_s0 .INIT=1'b0;
 DFFP \fifo_inst/wfull_val1_s1  (
 	.D(\fifo_inst/wfull_val_7 ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n457_4 ),
+	.PRESET(\fifo_inst/n537_4 ),
 	.Q(\fifo_inst/wfull_val1_3 )
 );
 defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
@@ -316,7 +317,7 @@ defparam \fifo_inst/Full_s0 .INIT=1'b0;
 DFFP \fifo_inst/Full_s1  (
 	.D(\fifo_inst/wfull_val1 ),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n457_4 ),
+	.PRESET(\fifo_inst/n537_4 ),
 	.Q(\fifo_inst/Full_2 )
 );
 defparam \fifo_inst/Full_s1 .INIT=1'b1;
@@ -362,6 +363,27 @@ defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .BIT_WIDTH_1=32;
 defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .RESET_MODE="ASYNC";
 defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .BLK_SEL_0=3'b000;
 defparam \fifo_inst/Equal.mem_Equal.mem_0_1_s .BLK_SEL_1=3'b000;
+SDPB \fifo_inst/Equal.mem_Equal.mem_0_2_s  (
+	.CLKA(WrClk),
+	.CEA(\fifo_inst/n20_5 ),
+	.RESETA(GND),
+	.CLKB(RdClk),
+	.CEB(\fifo_inst/n26_4 ),
+	.RESETB(\fifo_inst/reset_r [1]),
+	.OCE(GND),
+	.BLKSELA({GND, GND, GND}),
+	.BLKSELB({GND, GND, GND}),
+	.DI({GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, Data[79:64]}),
+	.ADA({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/Equal.wbin [0], GND, VCC, VCC, VCC, VCC}),
+	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num_next [0], GND, GND, GND, GND, GND}),
+	.DO({\fifo_inst/DO [31:16], Q[79:64]})
+);
+defparam \fifo_inst/Equal.mem_Equal.mem_0_2_s .READ_MODE=1'b0;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_2_s .BIT_WIDTH_0=32;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_2_s .BIT_WIDTH_1=32;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_2_s .RESET_MODE="ASYNC";
+defparam \fifo_inst/Equal.mem_Equal.mem_0_2_s .BLK_SEL_0=3'b000;
+defparam \fifo_inst/Equal.mem_Equal.mem_0_2_s .BLK_SEL_1=3'b000;
 INV \fifo_inst/n4_s2  (
 	.I(RdClk),
 	.O(\fifo_inst/n4_6 )

+ 12 - 12
src/src/WrapFifoChain/FifoDDS/FifoDDS_tmp.v

@@ -1,24 +1,24 @@
 //Copyright (C)2014-2024 Gowin Semiconductor Corporation.
 //All rights reserved.
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.02
+//Tool Version: V1.9.9.03 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
-//Device: GW1N-
-//Created Time: Thu Apr 25 16:06:49 2024
+//Device: GW1N-9
+//Created Time: Tue May 28 15:49:41 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 
 	FifoDDS your_instance_name(
-		.Data(Data_i), //input [63:0] Data
-		.Reset(Reset_i), //input Reset
-		.WrClk(WrClk_i), //input WrClk
-		.RdClk(RdClk_i), //input RdClk
-		.WrEn(WrEn_i), //input WrEn
-		.RdEn(RdEn_i), //input RdEn
-		.Q(Q_o), //output [63:0] Q
-		.Empty(Empty_o), //output Empty
-		.Full(Full_o) //output Full
+		.Data(Data), //input [79:0] Data
+		.Reset(Reset), //input Reset
+		.WrClk(WrClk), //input WrClk
+		.RdClk(RdClk), //input RdClk
+		.WrEn(WrEn), //input WrEn
+		.RdEn(RdEn), //input RdEn
+		.Q(Q), //output [79:0] Q
+		.Empty(Empty), //output Empty
+		.Full(Full) //output Full
 	);
 
 //--------Copy end-------------------

+ 4 - 4
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FIFOHS.prj

@@ -4,13 +4,13 @@
     <Version>beta</Version>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <FileList>
-        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
-        <File path="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
     </FileList>
     <OptionList>
         <Option type="disable_insert_pad" value="1"/>
-        <Option type="include_path" value="C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data"/>
-        <Option type="include_path" value="C:/Projects/QuestaProjects/main_tb/fifo_hs/FifoDDS/temp/FIFOHS"/>
+        <Option type="include_path" value="C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data"/>
+        <Option type="include_path" value="C:/Gowin/Projects/SB_TMSG44V1_FPGA/src/src/WrapFifoChain/FifoDDS/temp/FIFOHS"/>
         <Option type="output_file" value="FifoDDS.vg"/>
         <Option type="output_template" value="FifoDDS_tmp.v"/>
         <Option type="ram_balance" value="1"/>

+ 23 - 23
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS.log

@@ -1,19 +1,19 @@
 GowinSynthesis start
 Running parser ...
-Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
-Analyzing included file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-Back to file '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-Undeclared symbol '**', assumed default net type '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
-Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
-Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
-Analyzing included file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
-Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
-Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
-Back to file 'C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
-Compiling module 'FifoDDS'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
-Compiling module '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file '**'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file '**'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol '**', assumed default net type '**'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'FifoDDS'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 NOTE  (EX0101) : Current top module is "FifoDDS"
 [5%] Running netlist conversion ...
 Running device independent optimization ...
@@ -29,17 +29,17 @@ Running technical mapping ...
 [60%] Tech-Mapping Phase 0 completed
 [65%] Tech-Mapping Phase 1 completed
 [75%] Tech-Mapping Phase 2 completed
-WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s6"("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
-WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s6"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s6"("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "fifo_inst/Full_s3"("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 [80%] Tech-Mapping Phase 3 completed
 [90%] Tech-Mapping Phase 4 completed
-[95%] Generate netlist file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoDDS\temp\FIFOHS\FifoDDS.vg" completed
-Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoDDS\temp\FIFOHS\FifoDDS_tmp.v" completed
-[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoDDS\temp\FIFOHS\FifoDDS_syn.rpt.html" completed
+[95%] Generate netlist file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoDDS\temp\FIFOHS\FifoDDS.vg" completed
+Generate template file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoDDS\temp\FIFOHS\FifoDDS_tmp.v" completed
+[100%] Generate report file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoDDS\temp\FIFOHS\FifoDDS_syn.rpt.html" completed
 GowinSynthesis finish

+ 153 - 138
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS.vg

@@ -1,11 +1,11 @@
 //
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.02"
-//Thu Apr 25 16:06:49 2024
+//Tool Version "V1.9.9.03 (64-bit)"
+//Tue May 28 15:49:41 2024
 
 //Source file index table:
-//file0 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
-//file1 "\C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+//file0 "\C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect version="2.3"
@@ -17,141 +17,156 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `pragma protect key_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
-bhm5ZxuHD5fe6lKy2Dq5AwHxacJ1cWMwBMX9H8GmdL4lnDV2AKUKXoXHJPX5qkh7Ng/EuDXlf3tq
-XgChMGXHxhGKlXwTDGbPZ7rg+R+CLwCXNxLjHDLHZj7jAwx16WNjn6S5gfS7ZWNO/UifNMSnMT3R
-m/cUTYMLIkyS4qXtYi2xztDEhzoau2SQnLDGMrABROuNOwwpPJPYPMCZrpYnUTE9prjojUwFQhnT
-aNSO4thTEH7/k6gA0a1Hr9Kwu6d3XW6q2dZH78mYOaedKNxNSU95OsQ/GrR3fobX7P5Bxrf3upgd
-Xs0Rq7KS+nMjcFcl7E3CRA+0+XO4iCSxRkS+iA==
+HBNA+/9oSsy54/JlKoiN4gbbgk61v4S0vzu1SlxVV1FpSHLGFM3OwH9RYuOhFT+UXDcUiyGSTSim
+K+dcHv0CeFpV/YQWR5St8DdQGG+R45m6XWDErYGEafyEor0OduRaUiVP0XYqOL50oW/9d9x2NNiT
+ln6/o/IJCxIEaVblBTKR3tD4Ofb06tQw/6ZuEVhgWtapp5r+TlGiaQP6jx3uNfn+NBjuwyUzYkQ0
+MJjDVvgoM3zUdhRo+JtyCKggxSnoc2ym6iCL/mV/5ly8CtyjxhgYzms2pS3M3jxp5ii+uQ3L2s40
+krH8Dc9bcX5adde2FYFmhmRyz3sc5c38ia3cWA==
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=7024)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=7872)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
-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
-yLUXcvMsVv4bPZxPFw==
+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
+LUKcX1Is
 `pragma protect end_protected
 module FifoDDS (
   Data,
@@ -165,13 +180,13 @@ module FifoDDS (
   Full
 )
 ;
-input [63:0] Data;
+input [79:0] Data;
 input Reset;
 input WrClk;
 input RdClk;
 input WrEn;
 input RdEn;
-output [63:0] Q;
+output [79:0] Q;
 output Empty;
 output Full;
 wire VCC;
@@ -182,10 +197,10 @@ wire GND;
     .WrClk(WrClk),
     .WrEn(WrEn),
     .RdEn(RdEn),
-    .Data(Data[63:0]),
+    .Data(Data[79:0]),
     .Empty(Empty),
     .Full(Full),
-    .Q(Q[63:0])
+    .Q(Q[79:0])
 );
   VCC VCC_cZ (
     .V(VCC)

文件差异内容过多而无法显示
+ 28 - 28
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_syn.rpt.html


+ 2 - 2
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_syn_resource.html

@@ -30,12 +30,12 @@ table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-co
 <th class="label">ROM16 NUMBER</th>
 </tr>
 <tr>
-<td class="label">FifoDDS (C:/Gowin/Gowin_V1.9.9.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v)</td>
+<td class="label">FifoDDS (C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v)</td>
 <td align = "center">19</td>
 <td align = "center">-</td>
 <td align = "center">18</td>
 <td align = "center">-</td>
-<td align = "center">2</td>
+<td align = "center">3</td>
 <td align = "center">-</td>
 <td align = "center">-</td>
 </tr>

+ 1 - 1
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_syn_rsc.xml

@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Module name="FifoDDS" Register="19" Lut="18" Bsram="2" T_Register="19(19)" T_Lut="18(18)" T_Bsram="2(2)"/>
+<Module name="FifoDDS" Register="19" Lut="18" Bsram="3" T_Register="19(19)" T_Lut="18(18)" T_Bsram="3(3)"/>

+ 12 - 12
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_tmp.v

@@ -1,24 +1,24 @@
 //Copyright (C)2014-2024 Gowin Semiconductor Corporation.
 //All rights reserved.
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.02
+//Tool Version: V1.9.9.03 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
-//Device: GW1N-
-//Created Time: Thu Apr 25 16:06:49 2024
+//Device: GW1N-9
+//Created Time: Tue May 28 15:49:41 2024
 
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 
 	FifoDDS your_instance_name(
-		.Data(Data_i), //input [63:0] Data
-		.Reset(Reset_i), //input Reset
-		.WrClk(WrClk_i), //input WrClk
-		.RdClk(RdClk_i), //input RdClk
-		.WrEn(WrEn_i), //input WrEn
-		.RdEn(RdEn_i), //input RdEn
-		.Q(Q_o), //output [63:0] Q
-		.Empty(Empty_o), //output Empty
-		.Full(Full_o) //output Full
+		.Data(Data), //input [79:0] Data
+		.Reset(Reset), //input Reset
+		.WrClk(WrClk), //input WrClk
+		.RdClk(RdClk), //input RdClk
+		.WrEn(WrEn), //input WrEn
+		.RdEn(RdEn), //input RdEn
+		.Q(Q), //output [79:0] Q
+		.Empty(Empty), //output Empty
+		.Full(Full) //output Full
 	);
 
 //--------Copy end-------------------

+ 2 - 2
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/fifo_parameter.v

@@ -1,6 +1,6 @@
 parameter WDEPTH = 2;
 parameter ASIZE = 1;
-parameter WDSIZE = 64;
+parameter WDSIZE = 80;
 parameter RDEPTH = 2;
 parameter RASIZE = 1;
-parameter RDSIZE = 64;
+parameter RDSIZE = 80;

+ 5 - 7
src/src/WrapFifoChain/LmxWrapper.v

@@ -99,15 +99,13 @@ always @(posedge WrClk_i) begin
 			if ((!Ss_o && ssR) && (lmxWordNumReg != 0) ) begin 
 				PllVtuneCtrl_o <= 1'b0;
 			end
-			else begin
-				if (lmxWordNumReg == 0) begin  
-					PllVtuneCtrl_o <= 1'b1;
-				end
+			else if (lmxWordNumReg == 0 ) begin
+				PllVtuneCtrl_o <= 1'b1;
 			end
 		end
-		// else begin 
-		// 	PllVtuneCtrl_o <= ~LmxDirectFlag_i;
-		// end
+		else begin 
+			PllVtuneCtrl_o <= 1'b1;
+		end
 	end
 end