DMAI Bugs, 01/31/00 =================== 05/31/99 -------- 1. Transferring any number of bytes that is not a multiple of 4 will not work. Actually it will read the correct amount out of the data FIFO, but will only write the next lowest multiple of 4 to the transfer FIFO. It will not use fill bytes as was intended. Furthermore, the bytes that it writes may be out of order, and which bytes are lost cannot be determined. Solution: only transfer bytes in multiples of 4. This should not pose a significant problem for software, but may require additional checking. 2. The fill count does not work as intended. It appears to adhere to the following algorithm: 1. if fill_bytes < 4 then fill_count = 0; 2. else if fill_bytes < transfer_request then fill_count = fill_bytes - 1; 3. else fill_count = fill_bytes; Solutions: Case 3 only occurs when a transfer is done on an empty data FIFO, so it is easy to avoid by checking the FIFO flags before doing a transfer. Case 2 will be the case most of the time, and should not pose a significant problem for software. Case 1 however means that if you see a fill count of 0, you have no idea whether there were 0, 1, 2, or 3 fill bytes. Software may be able to avoid this by always transferring less than, equal to, or 4 or more bytes than, the FIFO flags indicate it could possibly contain, or by reading directly out of the data FIFOs one byte at a time and avoiding the transfer channels in those instances. 01/31/00 -------- An update for the DMAI CPLD has been released, fixing Bug # 3 of 01/11/00 whereby the last byte of any DMAI Channel B transfer was sometimes corrupted.