
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文件时就没有反应,也不报错,就像是被暂停了一样,请问是怎么个情况代码如下。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)