diff options
| author | Matt Ettus <matt@ettus.com> | 2011-03-14 17:51:46 -0700 | 
|---|---|---|
| committer | Matt Ettus <matt@ettus.com> | 2011-03-16 12:26:38 -0700 | 
| commit | 61e351ac3db6afa061a828f4df3e6cb1a37d0380 (patch) | |
| tree | c3fd9e89daee3ab046ad80f2074d2cc2e80afed4 | |
| parent | bea538ba3128d5bb4c728cda6e10534209e139d7 (diff) | |
| download | uhd-61e351ac3db6afa061a828f4df3e6cb1a37d0380.tar.gz uhd-61e351ac3db6afa061a828f4df3e6cb1a37d0380.tar.bz2 uhd-61e351ac3db6afa061a828f4df3e6cb1a37d0380.zip | |
udp: speed up checksum calculation to meet timing
| -rw-r--r-- | usrp2/udp/prot_eng_tx.v | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/usrp2/udp/prot_eng_tx.v b/usrp2/udp/prot_eng_tx.v index 322c6ec91..3adaaa32b 100644 --- a/usrp2/udp/prot_eng_tx.v +++ b/usrp2/udp/prot_eng_tx.v @@ -71,7 +71,9 @@ 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)); - +   reg [15:0]  ip_checksum_reg; +   always @(posedge clk) ip_checksum_reg <= ip_checksum; +        always @*       case(state)         1 : prot_data <= header_word;  // ETH, top half ignored @@ -80,7 +82,7 @@ module prot_eng_tx         4 : prot_data <= header_word;  // ETH         5 : prot_data <= { header_word[31:16], ip_length }; // IP         6 : prot_data <= header_word; // IP -       7 : prot_data <= { header_word[31:16], (16'hFFFF ^ ip_checksum) }; // IP +       7 : prot_data <= { header_word[31:16], (16'hFFFF ^ ip_checksum_reg) }; // IP         8 : prot_data <= header_word; // IP         9 : prot_data <= header_word; // IP         10: prot_data <= header_word;  // UDP  | 
