异步FIFO在系统中的使用
来源:互联网 发布:爱家网源码 编辑:程序博客网 时间:2024/06/11 20:19
对于带有操作系统与不带操作系统的系统比较,我们会发现,操作系统为我们的程序设计、维护和CPU的效率是带来了明显的好处和提高,但操作系统也降低了中断的处理效率(有操作系统的中断服务时间远大于不带操作系统的系统)。对于这个问题,我们可以从几个方面来弥补,其一,我们可以选用处理速率更块的处理器。其二,就是我们变相地提高中断的效率(减少中断次数,提高每次中断的数据读取量),但前提不影响系统要求。
FIFO作为一种先进先出存储设备,异步FIFO具有读写分开独立的特点,适合于我们上面提到的低速率的器件/外设与嵌入式系统的接口。FIFO的总则是,输入和输出的平均速率一致,否则就出问题体了。对于异步FIFO,按输入输出平均速率一致的原则,当输入是低速率,而输出为高速率时,显然同样的数据量,输出的时间小于输入。因此,我们用异步FIFO来做低速外设与高速处理器之间的数据缓冲接口,在带操作系统的嵌入式系统中,可以降低外设备的中断申请次数,提高每次中断的数据采集量。
例如:
在MPEG-2编码芯片这样的外设,在保证DVD画质的情况,它的码率为4MKbps。在MPEG-2 over IP设备中,需要将图像码流通过TCP/IP协议送到以太网上。如果我们的CPU直接接收4Mbps的串行码流,一般的CPU是胜任不了这个工作的。但假如我们将数据通过硬件转换为32位宽度的数据,则速率降为128K。这时CPU读取这样的数据,则需要1/128K秒(7.62939453125微秒)中断一次,一次只能读32位。这种中断频率是操作系统一般不允许的。
如果我们将转换为32位的128K速率的数据通过异步的FIFO,再和CPU相连。如果我们设置异步FIFO的深度为N个32位,则中断的频率为128K/N,中断周期为:N/128K。
N数值 128 256 512 1024 2048 4096 ...
中断周期:1ms 2ms 4ms 8ms 16ms 32ms ...
目前FPGA中带有的RAM可以作为异步FIFO,如果我们做一个32位宽度,1024为读取触发条件,因此中断的周期为8ms。
如果将异步FIFO的读触发条件增大,到2048,则中断的周期时间为16ms。
- 异步FIFO在系统中的使用
- 格雷码在异步FIFO中的使用
- Gray码在异步FIFO中的应用
- 格雷码在异步FIFO中的应用(转)
- 异步FIFO
- 异步FIFO为什么要使用格雷码(摘)
- 异步FIFO的配置与使用注意事项
- 异步FIFO为什么要使用格雷码(摘)
- 同步FIFO和异步FIFO
- linux系统中的有名管道(FIFO)
- 基于异步FIFO和PLL的雷达数据采集系统
- libevent在异步socket中的使用
- libevent在异步socket中的使用
- 异步FIFO中的几个难点问题思考与解释
- fifo在FPGA中的应用小结
- [2]Vivado中异步FIFO的实现和使用
- 异步处理在分布式系统中的优化作用
- 《异步处理在分布式系统中的优化作用》学习笔记
- 笔记:Linux SSH 中文乱码解决方法
- 中国人不可不知道的知识(经典,收藏)
- hibernate3学习笔记(二)|一级缓存
- 字符串和流
- asp.net 创建Windows服务
- 异步FIFO在系统中的使用
- IDispose实现非托管资源清理
- java math API 解释
- 适应IE8
- AJAX连续提交相同URL注意事项
- 留作纪念的Nike Human Race 10K
- java对角线数列的算法
- Visual C++ MFC 中常用宏的含义
- 游戏开发中的设计模式之一-Strategy模式