首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

异步FIFO在系统中的使用

异步FIFO在系统中的使用

在嵌入式系统中,我们一般使用具有较强处理能力的微处理器,配合使用嵌入式操作系统来实现项目或者产品的设计。但在实际设计硬件或者是系统硬件平台设计时,经常会使用一些低速率的器件/外设。而这这些低速设备对于微处理和操作系统而言是异步事件。因此,需要使用中断触发。        对于带有操作系统与不带操作系统的系统比较,我们会发现,操作系统为我们的程序设计、维护和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。
返回列表