Stefan Schuermans commited on 2012-04-03 20:23:25
Showing 1 changed files, with 7 additions and 2 deletions.
... | ... |
@@ -533,6 +533,7 @@ BEGIN |
533 | 533 |
-- TX busmaster read state machine |
534 | 534 |
p_tx_rd_next: PROCESS(r_tx_pos, r_tx_rem, r_tx_start, r_tx_end, |
535 | 535 |
s_txframe_en, s_txbuf_wr_en) |
536 |
+ VARIABLE v_rem: signed(31 DOWNTO 0); |
|
536 | 537 |
BEGIN |
537 | 538 |
n_tx_pos <= r_tx_pos; |
538 | 539 |
n_tx_rem <= r_tx_rem; |
... | ... |
@@ -541,7 +542,11 @@ BEGIN |
541 | 542 |
n_tx_rem <= signed(r_tx_end) - signed(r_tx_start); |
542 | 543 |
ELSIF s_txbuf_wr_en = '1' THEN |
543 | 544 |
n_tx_pos <= std_logic_vector(unsigned(r_tx_pos) + X"00000004"); |
544 |
- n_tx_rem <= r_tx_rem - X"00000004"; |
|
545 |
+ v_rem := r_tx_rem - X"00000004"; |
|
546 |
+ IF v_rem < X"00000000" THEN |
|
547 |
+ v_rem := X"00000000"; |
|
548 |
+ END IF; |
|
549 |
+ n_tx_rem <= v_rem; |
|
545 | 550 |
END IF; |
546 | 551 |
END PROCESS p_tx_rd_next; |
547 | 552 |
|
... | ... |
@@ -597,7 +602,7 @@ BEGIN |
597 | 602 |
-- space in buffer |
598 | 603 |
-- write: write request in write buffer |
599 | 604 |
v_read := r_bm_rd = '0' AND r_tx_en = '1' AND |
600 |
- r_tx_rem > X"00000000" AND s_txbuf_wr_rdy = '1'; |
|
605 |
+ r_tx_rem /= X"00000000" AND s_txbuf_wr_rdy = '1'; |
|
601 | 606 |
v_write := s_wrbuf_rd_rdy = '1'; |
602 | 607 |
-- read access |
603 | 608 |
IF v_read THEN |
604 | 609 |