FIFO的实现

FIFO的实现,第1张

FIFO是用于缓冲的。。。。。。。。。。。。。Quartus自带FIFO模块

一般FIFO用的的时候 如果是双向的 会有两个clk

一个控制写比如50Mhz

一个控制读比如25MHZ

这样的话就形成了一次缓冲 从50mhz到25mhz 速度降下来了

至于你那个东西 DSP接口的速度和CPLD发过来的数据的速度不一样 当然要匹配速度啦 fifo就是这个用的

至于clk的频率 你要根据芯片手册上的读写频率分频下下或者pll 下

不知道你理解了没

407064168

这汇编程序等价于

sbit ef = P3^3;

sbit rst = P3^5;

sbit read = P3^7;

void main()

{

unsigned char tempP1;

TMOD = 0x21;

PCON |= 0x80;

TH1 = 0xFD;

TR1 = 1;

SCON = 0x50;

TI = 0;

read = 1;

rst = 0;

_nop_();

rst = 1;

while(1)

{

while(ef==0);

_nop_();

tempP1 = P1;

_nop_();

read = 1;

while(TI==0);

TI = 0;

SBUF = tempP1;

}

}

你需要再写一个读的程序 一起运行。

FIFO的打开规则:

如果当前打开 *** 作是为读而打开FIFO时,若已经有相应进程为写而打开该FIFO,则当前打开 *** 作将成功返回;否则,可能阻塞直到有相应进程为写而打开该FIFO(当前打开 *** 作设置了阻塞标志);或者,成功返回(当前打开 *** 作没有设置阻塞标志)。

如果当前打开 *** 作是为写而打开FIFO时,如果已经有相应进程为读而打开该FIFO,则当前打开 *** 作将成功返回;否则,可能阻塞直到有相应进程为读而打开该FIFO(当前打开 *** 作设置了阻塞标志);或者,返回ENXIO错误(当前打开 *** 作没有设置阻塞标志)。

总之就是一句话,一旦设置了阻塞标志,调用mkfifo建立好之后,那么管道的两端读写必须分别打开,有任何一方未打开,则在调用open的时候就阻塞。

以上就是关于FIFO的实现全部的内容,包括:FIFO的实现、用单片机如何把fifo中的数据读出来,通过串口发出。c语言程序。下面的汇编不太明白、c语言,打开fifo文件时就没有反应,也不报错,就像是被暂停了一样,请问是怎么个情况代码如下。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10131487.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存