mirror of https://github.com/m-labs/artiq.git
DMA: speed up playback
Time reduced from 1.53µs to 1.37µs.
This commit is contained in:
parent
41c4de4556
commit
e8f7f8ef9c
|
@ -398,19 +398,21 @@ extern fn dma_playback(timestamp: i64, ptr: i32) {
|
||||||
csr::cri_con::selected_write(0);
|
csr::cri_con::selected_write(0);
|
||||||
|
|
||||||
let status = csr::rtio_dma::error_status_read();
|
let status = csr::rtio_dma::error_status_read();
|
||||||
let timestamp = csr::rtio_dma::error_timestamp_read();
|
if status != 0 {
|
||||||
let channel = csr::rtio_dma::error_channel_read();
|
let timestamp = csr::rtio_dma::error_timestamp_read();
|
||||||
if status & rtio::RTIO_O_STATUS_UNDERFLOW != 0 {
|
let channel = csr::rtio_dma::error_channel_read();
|
||||||
csr::rtio_dma::error_underflow_reset_write(1);
|
if status & rtio::RTIO_O_STATUS_UNDERFLOW != 0 {
|
||||||
raise!("RTIOUnderflow",
|
csr::rtio_dma::error_underflow_reset_write(1);
|
||||||
"RTIO underflow at {0} mu, channel {1}",
|
raise!("RTIOUnderflow",
|
||||||
timestamp as i64, channel as i64, 0)
|
"RTIO underflow at {0} mu, channel {1}",
|
||||||
}
|
timestamp as i64, channel as i64, 0)
|
||||||
if status & rtio::RTIO_O_STATUS_SEQUENCE_ERROR != 0 {
|
}
|
||||||
csr::rtio_dma::error_sequence_error_reset_write(1);
|
if status & rtio::RTIO_O_STATUS_SEQUENCE_ERROR != 0 {
|
||||||
raise!("RTIOSequenceError",
|
csr::rtio_dma::error_sequence_error_reset_write(1);
|
||||||
"RTIO sequence error at {0} mu, channel {1}",
|
raise!("RTIOSequenceError",
|
||||||
timestamp as i64, channel as i64, 0)
|
"RTIO sequence error at {0} mu, channel {1}",
|
||||||
|
timestamp as i64, channel as i64, 0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -605,7 +605,7 @@ class DMATest(ExperimentCase):
|
||||||
exp.playback_many(count)
|
exp.playback_many(count)
|
||||||
dt = self.dataset_mgr.get("dma_playback_time")
|
dt = self.dataset_mgr.get("dma_playback_time")
|
||||||
print("dt={}, dt/count={}".format(dt, dt/count))
|
print("dt={}, dt/count={}".format(dt, dt/count))
|
||||||
self.assertLess(dt/count, 7*us)
|
self.assertLess(dt/count, 3*us)
|
||||||
|
|
||||||
def test_handle_invalidation(self):
|
def test_handle_invalidation(self):
|
||||||
exp = self.create(_DMA)
|
exp = self.create(_DMA)
|
||||||
|
|
Loading…
Reference in New Issue