Stefan Schuermans commited on 2012-03-07 21:15:53
Showing 1 changed files, with 11 additions and 6 deletions.
| ... | ... |
@@ -64,6 +64,7 @@ BEGIN |
| 64 | 64 |
i_if_data_ack, |
| 65 | 65 |
i_frame_en, i_frame_data, i_frame_data_en, |
| 66 | 66 |
s_crc_crc) |
| 67 |
+ VARIABLE v_data: std_logic_vector(31 DOWNTO 0); |
|
| 67 | 68 |
BEGIN |
| 68 | 69 |
n_state <= r_state; |
| 69 | 70 |
n_data_cnt <= r_data_cnt; |
| ... | ... |
@@ -117,29 +118,33 @@ BEGIN |
| 117 | 118 |
ELSE |
| 118 | 119 |
n_state <= st_crc; |
| 119 | 120 |
n_data_cnt <= 4; |
| 120 |
- n_data <= s_crc_crc; |
|
| 121 | 121 |
END IF; |
| 122 | 122 |
ELSE |
| 123 | 123 |
n_data_cnt <= r_data_cnt - 1; |
| 124 | 124 |
n_data(23 DOWNTO 0) <= r_data(31 DOWNTO 8); |
| 125 | 125 |
END IF; |
| 126 |
- END IF; |
|
| 127 |
- o_if_data <= r_data(7 DOWNTO 0); |
|
| 128 |
- o_if_data_en <= '1'; |
|
| 129 | 126 |
s_crc_en <= '1'; |
| 130 | 127 |
s_crc_start <= r_crc_start; |
| 131 | 128 |
s_crc_data <= r_data(7 DOWNTO 0); |
| 129 |
+ END IF; |
|
| 130 |
+ o_if_data <= r_data(7 DOWNTO 0); |
|
| 131 |
+ o_if_data_en <= '1'; |
|
| 132 | 132 |
WHEN st_crc => |
| 133 |
+ IF r_data_cnt = 4 THEN |
|
| 134 |
+ v_data := s_crc_crc; -- get CRC value on first CRC byte |
|
| 135 |
+ ELSE |
|
| 136 |
+ v_data := r_data; |
|
| 137 |
+ END IF; |
|
| 133 | 138 |
IF i_if_data_ack = '1' THEN |
| 134 | 139 |
IF r_data_cnt = 1 THEN |
| 135 | 140 |
n_state <= st_gap; |
| 136 | 141 |
n_data_cnt <= 12 * 8 * 2; -- 12 octets, x2 because of clk |
| 137 | 142 |
ELSE |
| 138 | 143 |
n_data_cnt <= r_data_cnt - 1; |
| 139 |
- n_data(23 DOWNTO 0) <= r_data(31 DOWNTO 8); |
|
| 144 |
+ n_data(23 DOWNTO 0) <= v_data(31 DOWNTO 8); |
|
| 140 | 145 |
END IF; |
| 141 | 146 |
END IF; |
| 142 |
- o_if_data <= r_data(7 DOWNTO 0); |
|
| 147 |
+ o_if_data <= v_data(7 DOWNTO 0); |
|
| 143 | 148 |
o_if_data_en <= '1'; |
| 144 | 149 |
WHEN st_gap => |
| 145 | 150 |
IF r_data_cnt = 1 THEN |
| 146 | 151 |