我正在设计一个同步的FIFO接口与FX3超高速探索者工具包的设计。但是,我在延迟问题上有问题。
我的应用程序将36字节指令发送到
FPGA上的2048字节FIFO;从FIFO接口从100 MHz读取FX3,并将数据写入FIFO,但FPGA在0.5 MHz FPGA时钟的每个时钟周期中读取一条指令。在一些处理之后,FPGA根据我的FPGA上的0.5 MHz时钟,以“时间戳”的形式发送结果,因此我可以看到当FPGA收到指令时。我用奴隶FIFO接口与我的主机进行
通信,这是一个带有USB 2的漫游四核单板计算机Runnig-Ubuntu 14.04。连接。
我试图减少从我的主机发送指令到FX3的延迟,因为FPGA从FX3接收数据不够快。在我的FX3实现中,我有45个2048字节的DMA缓冲器要由FPGA读取。由于指令的大小,我同时发送指令块,用2016字节的数据填充缓冲区。然而,当测试时,我发现当在DMA缓冲器之间切换时,存在显著的延迟100毫秒。从一个DMA缓冲器末尾的最后一次指令到下一个DMA缓冲器开始时的第一个指令的时间,根据结果,即使它们间隔7个时钟周期,结果表明它们被分开1000个周期。
我试着把延迟降低到微秒。我尝试切换到DMA自动配置,将端点改为中断端点,而不是批量端点,但我似乎无法降低延迟。我使用LIUBBB使用异步数据传输从我的漫游板发送数据,但是我还能做些什么来减少延迟呢?我是不是刚好碰到USB 2传输的局限性?我不能将突发传输增加到1以上,但是还有什么可以减少延迟呢?