diff options
| -rw-r--r-- | usrp2/udp/prot_eng_tx.v | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/usrp2/udp/prot_eng_tx.v b/usrp2/udp/prot_eng_tx.v index 3adaaa32b..0c3e58892 100644 --- a/usrp2/udp/prot_eng_tx.v +++ b/usrp2/udp/prot_eng_tx.v @@ -19,7 +19,6 @@ module prot_eng_tx     // Store header values in a small dual-port (distributed) ram     reg [31:0] 	  header_ram[0:63]; -   wire [31:0] 	  header_word;     reg [3:0] 	  state;     reg [1:0] 	  port_sel; @@ -27,7 +26,14 @@ module prot_eng_tx       if(set_stb & ((set_addr & 8'hC0) == BASE))         header_ram[set_addr[5:0]] <= set_data; -   assign header_word = header_ram[{port_sel[1:0],state[3:0]}]; +   wire [31:0] 	  header_word = header_ram[{port_sel[1:0],state[3:0]}]; + +   reg [15:0] 	  pre_checksums [0:3]; +   always @(posedge clk) +     if(set_stb & (set_addr == (BASE+6))) +       pre_checksums[set_addr[5:4]] <= set_data[15:0]; + +   wire [15:0] 	  pre_checksum = header_ram[port_sel[1:0]];     // Protocol State Machine     reg [15:0] length; @@ -70,7 +76,7 @@ module prot_eng_tx     wire [15:0] ip_checksum;     add_onescomp #(.WIDTH(16)) add_onescomp  -     (.A(header_word[15:0]),.B(ip_length),.SUM(ip_checksum)); +     (.A(pre_checksum),.B(ip_length),.SUM(ip_checksum));     reg [15:0]  ip_checksum_reg;     always @(posedge clk) ip_checksum_reg <= ip_checksum; | 
