我正在尝试测量通过 GPIO 位碰撞可实现的数据传输速度并将读取结果记录在内存中。我已经创建了一篇关于设置的文章,它使用连接到 GPIO 1的 FPGA。
我使用以下方法:GPIO0 到 GPIO20 专用于“数据”,而 GPIO25 到 GPIO27 指定用于“控制信号”,例如“数据就绪”、“数据请求”和“重置”。
循环很简单:
我发现前 ~60-70K 读取每个周期约为 0.88 uS,但随后速度会快两倍以上,每个周期约为 0.38 uS。
我想知道这种速度不均匀的原因是什么。有没有办法以每周期 0.38 uS 的更高速度开始传输,并确保它不会回落到较慢的 0.88 uS 模式?
我已经确认是DVFS造成的。
我发现,在 RPi4 中,默认情况下,当核心空闲时,其频率设置为 600MHz,而在负载时则增加到 1800MHz。系统似乎需要大约 50-60 毫秒才能对增加的负载做出反应。
将缩放调节器设置为“性能”而不是默认的“按需”值,交换速度从一开始就很快。