首页
学习
活动
专区
工具
TVP
发布

FIFO系列(二):同步FIFOverilog设计

本系列分为以下部分: 1、FIFO深度计算 2、同步fifo设计 3、fifo与格雷码 4、异步fifo设计(新增) 计划分三次更新完毕,本次为同步FIFO设计。...同步FIFO设计 关于同步fifo设计疑惑了半天,本以为这个代码是错,后来自己又写了一遍,但是写到最后又觉得这个是正确,主要是wr_cnt和rd_cnt理解。...在本实例中,wr_cnt并非读写数据计数器,不是说fifo中写入了多少个数据,而是指写数据指针,在每次写入数据后写指针自动加一,写入16个数据后fifo写指针数值为4'b1111。...同样,rd_cnt也不是指读了多少个数据,指的是读取数据读指针,每读完一次后,改指针自动加一,即指向下一个要读取地址。...没什么好讲,异步fifo设计才是有趣,异步fifo设计代码在第三节格雷码更新完毕后更新。

3.2K41
您找到你想要的搜索结果了吗?
是的
没有找到

Linux进程间通信--管道(pipe和fifo)

通过管道来实现进程间通信方法很经典,因为多个进程共享3-4G中内核,所以在内核中存在一个管道(缓冲区),然后进程通过连接管道两端从而实现通信。...fifo        fifo用来创建一个命名管道,可以解决非血缘关系进程间通信,它底层实现原理和匿名管道相同,只不过是生成了一个可见管道文件。...因为这个管道有一个所有进程都可以访问到管道文件,所以fifo叫做命名管道,那么同理,pipe就只能通过fork方式来复制文件描述符表来共享管道,而其他进程却访问不到,所以叫做匿名管道。        ...下面也通过代码,来简单实现一下fifo效果,这里我提前用mkfifo命令来创建了一个管道文件,当然也可以在代码中使用mkfifo函数来创建,先来看一下写操作进程代码: #include <stdio.h...,然后再运行读操作程序(当你运行写操作程序时会阻塞在write,当运行读操作程序时才会往下执行,这个就是上面所说四种情况中一种),最终结果如下: ?

3.6K30

ADCFIFO功能

这段时间项目都在使用NXPKE系列MCU, KE02和KE06以及KEA系列ADC都有FIFO功能,不使用FIFO功能的话,在多路采集的话,ADC会频繁进中断,这样对MCU来说是负担,所以经常需要开启...FIFO功能,这样在所有通道采集完后进一次中断。...而具体来说呢,不同系列像KE02和KE06在FIFO功能使用上有一些不同,主要是配置寄存器有些区别,所以在写驱动时候需要特别注意。如在KE06上寄存器如下 ? 而在KE02上 ?...如果自己来写这个驱动,如果只是对一种片子使用可以直接按照手册来配置,如果想做到通用,也可以参照SDK,甚至可以直接使用SDK,按照你自己硬件来配置初始化,通道,时钟,是否使用FIFO,中断,转换模式等就可以使用了...在配置FIFO深度时候需要注意,如果是8级FIFO,深度就配置为7。Kinetis最大ADCFIFO深度为8级,使用时候需要注意。跟FIFO配置相关结构体可以参照SDK定义 ?

1.2K20

异步FIFO设计

如果直接采样地址比较的话,地址线一般有多位,由于每个地址寄存器物理空间位置不一致性,造成写地址每一位在写时钟作用下,跳变得不一致,即产生毛刺,要过一小段时间才能稳定。...图1 格雷码FIFO基本原理图 运用格雷码编写异步FIFO基本思想如上图所示: ? 图2 格雷码时序 格雷码是不能进行加减产生空满标志,所以采样延时一拍方法。...为了避免复杂逻辑,提高FIFO整体速度 ,可使用FIFO深度=实际深度-1,如上图3所示。...), 就得到比较精确FIFO有效数据个数Fifo_status。...在进行地址递增时判断FIFO空满标志是为了自我保护,避免读写地址交错,产生错误逻辑。 ? 图5 FIFO自我保护机制 END

71610

FIFO:不是文件文件

众所周知,FIFO中文译为命名管道,是PIPE升级版。...但他们都是管道,本质上就是内核开辟一块缓存区,虽然FIFO在文件系统有一个入口,但是它和文件有很大不同,具体体现在使用FIFO文件接口几个限制上: 1) 如果读进程以只读方式打开FIFO,若此时还没有写进程打开...(需要注意是如果之前有进程写入过数据,但是该进程在本进程open之前已经关闭FIFO,则相应数据是读不到); 4) 如果进程以读写方式打开FIFO,此时open将不再阻塞,不管有没有读进程从管道读数据...6 /* No such device or address */); 一般很少用读写方式打开FIFO,因为那样很容易读到自己写入数据,除非此FIFO就是用来在进程内部多个线程之间使用。...可以看到上面林林总总各种限制,指向一个目标就是:保证读写进程同时打开FIFO并进行数据交换。换句话说,就是FIFO没有任何临时存储数据能力,错过了,就没了。

74930

异步fifo10个测试关注点_异步FIFO

FIFO常见参数 FIFO宽度:即FIFO一次读写操作数据位; FIFO深度:指的是FIFO可以存储多少个N位数据(如果宽度为N)。...空标志:FIFO已空或将要空时由FIFO状态电路送出一个信号,以阻止FIFO读操作继续从FIFO中读出数据而造成无效数据读出(underflow)。...2、 FIFO“空”/“满”检测 FIFO设计关键:产生可靠FIFO读写指针和生成FIFO“空”/“满”状态标志。...如上图所示同步模块synchronize to write clk,其作用是把读时钟域读指针rd_ptr采集到写时钟(wr_clk)域,然后和写指针wr_ptr进行比较从而产生或撤消写满标志位wr_full...; 同步模块synchronize to read clk作用是把写时钟域写指针wr_ptr采集到读时钟域,然后和读指针rd_ptr进行比较从而产生或撤消读空标志位rd_empty。

83410

聊聊队列(FIFO)应用

用户需要在PLC内记录一些历史数据,方便在触摸屏或SCADA上展示最近一定次数操作数据,如何做比较简单? 。。。。。。 本文将从FIFO队列聊起,给出笔者在处理上述问题时方法。...什么是FIFO队列 FIFO(First Input First Output)队列,即先入先出队列。...(一般解释这个都用是超市排队结账模型) 如果我们规定这个队列最多有N个人,并且有很多居民正在广场上等着进入这个检测队列,每检测完一人则队伍出去一人并进来一人,则FIFO队列有以下特点: (1)...利用FIFO队列做平均值滤波 回到开篇第一个问题,我们经常会遇到现场模拟量输入信号跳动问题,在做完现场所有的屏蔽、接地、电源滤波、隔离之后,模拟量还是像看了一眼白云隔壁吴老二一样发抖。...利用FIFO队列做历史记录 回到开篇第二个问题,客户需要我们在PLC内记录最近一定批次操作或是产品数据,每条数据包含多个变量,并且要在触摸屏上显示这些数据,如何做可以省点事?

60820

详解 Linux 常用目录作用

详解 Linux 常用目录作用 一 常用一级目录 ? ? 注意: 1、根目录下bin和sbin,usr目录下bin和sbin,这四个目录都是用来保存系统命令。...2、bin目录下命令时任何用户都能执行,sbin目录下命令只有超级用户才能执行。 3、media用来挂载光盘,misc挂载磁带机,mnt挂载U盘。它们都是空目录。...4、proc和sys目录不能直接操作,这两个目录保存是内存挂载点。 5、可以在家目录root或home,以及tmp目录下随便放内容。...mozilla udev firmware jvm-commmon polkit-1 udisks2 games jvm-exports python2.7 x86_64-redhat-linux6E...srv tmp var boot etc japan lib64 mnt opt root sbin sys usr 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站支持

2.6K10

linux 虚拟内存作用

虚拟内存作用 利用磁盘起到缓存作用,提高进程访问磁盘速度。 虚拟内存可以为进程提供独立内存空间,并通过动态链接库共享内存。...在其中使用就是局部性原理,当操作系统访问未被缓存页,就会发生缺页中断,操作系统需要将磁盘上未被缓存虚拟页加载到物理内存中。...目前linux系统,采用四层页表结构页表结构,每个9位,最低12位作为偏移量。...总 虚拟内存可以结合磁盘和物理内存优势为进程提供看起来速度足够快并且容量足够大存储; 虚拟内存可以为进程提供独立内存空间并引入多层页表结构将虚拟内存翻译成物理内存,进程之间可以共享物理内存减少开销...,也能简化程序链接、装载以及内存分配过程; 虚拟内存可以控制进程对物理内存访问,隔离不同进程访问权限,提高系统安全性;

3.4K20

Linux目录作用【值得收藏】

/dev:存放linux系统下设备文件,访问该目录下某个文件,相当于访问某个设备,常用是挂载光驱 mount /dev/cdrom /mnt /etc :系统管理文件和配置文件放置处,需要配置服务等等时候访问.../home :用户主目录基点,比如用户user主目录就是/home/user,可以用~user表示 /sbin :超级管理命令,这里存放是系统管理员使用管理程序,用户可以使用哪些管理程序 /tmp...:公共临时文件存储点 /root :系统管理员主目录 /var :某些大文件溢出区,大多数存日志信息 /user :软件放置处 /boot :存放开机及内核文件 /opt:给主机额外安装软件所摆放目录.../bin: /usr/bin: 可执行二进制文件目录,如常用命令ls、tar、mv、cat等 ?

2.2K30

基于FPGA异步FIFO设计

大侠们,江湖偌大,有缘相见,欢迎一叙,今天来聊一聊在数字电路设计中,基于FPGA异步FIFO实现,在很多厂商开发软件中都有异步FIFO IP核,为安全起见推荐使用IP核定制FIFO,本文目的只是作为思路参考...FIFO常见参数 FIFO宽度:即FIFO一次读写操作数据位; FIFO深度:指的是FIFO可以存储多少个N位数据(假设宽度为N)。...满标志:FIFO已满或将要满时由FIFO状态电路送出一个信号,以阻止FIFO写操作继续向FIFO中写数据而造成溢出(overflow)。...空标志:FIFO已空或将要空时由FIFO状态电路送出一个信号,以阻止FIFO读操作继续从FIFO中读出数据而造成无效数据读出(underflow)。...FIFO“空”/“满”检测 FIFO设计关键:产生可靠FIFO读写指针和生成FIFO“空”/“满”状态标志。

69610

Linux】open函数参数和作用

大家好,又见面了,我是你们朋友全栈君。 一、open函数用来干什么 open函数在Linux下一般用来打开或者创建一个文件,我们可以根据参数来定制我们需要文件属性和用户权限等各种参数。...二、open函数定义和参数 我们首先来看下open函数在Linux定义 #include #include #include <fcntl.h...O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件打开和后继 I/O设置为非阻塞模式(nonblocking mode) 以下三个常量同样是选用,它们用于同步输入输出 O_DSYNC...第三个参数是在第二个参数中有O_CREAT时才作用,如果没有,则第三个参数可以忽略 三、open函数与fopen函数区别 从来源来分,这两者很好区分: open函数是Unix下系统调用函数,操作成功返回是文件描述符...,操作失败返回是-1, fopen是ANSIC标准中C语言库函数,所以在不同系统中调用不同内核API,返回是一个指向文件结构指针。

3.3K10

Linux mmap 作用是什么?

表示要映射到内存区域起始地址,通常用 NULL,表示由内核指定该内存地址。...length 表示映射区长度,单位字节。 prot 参数描述了映射所需内存保护(并且不得与文件打开模式冲突)。...它值可以是一个或者多个以下位组合体: MAP_FIXED //使用指定映射起始地址,如果由start和len参数指定内存区重叠于现存映射空间,重叠部分将会被丢弃。...如果指定起始地址不可用,操作将会失败。并且起始地址必须落在页边界上。 MAP_SHARED //与其它所有映射这个对象进程共享映射空间。对共享区写入,相当于输出到文件。...4.作用 mmap 主要有两点作用: 文件映射,减少数据拷贝,提高 IO 效率。 将文件映射到进程地址空间。

23230

Linux目录结构和作用

这是最庞大目录,要用到应用程序和文件几乎都在这个目录。.../usr/x11r6 存放x window目录 /usr/bin 众多应用程序 /usr/sbin 超级用户一些管理程序 /usr/doc Linux文档 /usr/include linux下开发和编译应用程序所需要头文件.../usr/lib 常用动态链接库和软件包配置文件 /usr/man 帮助文档 /usr/src 源代码,linux内核源代码就放在/usr/src/linux里 /usr/local/bin 本地增加命令.../usr/local/lib 本地增加库 /opt 额外安装可选应用程序包所放置位置。...共享库又叫动态链接共享库,作用类似windows里.dll文件,存放了根文件系统程序运行所需共享文件。 /tmp 用于存放各种临时文件,是公用临时文件存储点。

1.2K10

基于FPGA异步FIFO设计(附源码)

各位大侠,今天来聊一聊在数字电路设计中,基于FPGA异步FIFO实现,在很多厂商开发软件中都有异步FIFO IP核,为安全起见推荐使用IP核定制FIFO,本文目的只是作为思路参考。...FIFO常见参数 FIFO宽度:即FIFO一次读写操作数据位; FIFO深度:指的是FIFO可以存储多少个N位数据(假设宽度为N)。...满标志:FIFO已满或将要满时由FIFO状态电路送出一个信号,以阻止FIFO写操作继续向FIFO中写数据而造成溢出(overflow)。...空标志:FIFO已空或将要空时由FIFO状态电路送出一个信号,以阻止FIFO读操作继续从FIFO中读出数据而造成无效数据读出(underflow)。...FIFO“空”/“满”检测 FIFO设计关键:产生可靠FIFO读写指针和生成FIFO“空”/“满”状态标志。

1.2K20

Linux中&&、&、|、||等特殊符号作用

符号| 和 || ps -ef | grep java 符号 | 表示管道,上一条命令输出,作为下一条命令参数(输入)。...2>&1 表示把标准错误输出重定向到标准输出1,&指示不要把1当做普通文件,而是fd=1即标准输出处理。 2>1 表示把标准错误输出重定向到1,但这个1不是标准输出,而是一个名为1文件。...标准错误输出(stderr)代码为2,实际映射关系:/dev/stderr ->/pro/self/fd/2 command>a 2>1 、command>a 2>a 与 command>a 2>&1区别...command>a 2>&1 等价于 command 1>a 2>&1 意思为执行command产生标准输入重定向到文件a中,标准错误也重定向到文件a中。...command>a 2>1 等价于 command 1>a 2>1 意思为执行command产生标准输入重定向到文件a中,标准错误重定向到文件1中。

1.9K10

详细解读linux下swap分区作用

本文研究主要是linux下swap分区相关内容,具体介绍如下。...swap分区介绍 嵌入式Linux中文站消息,Linux系统Swap分区,即交换区,Swap空间作用可简单描述为:当系统物理内存不够用时候,就需要将物理内存中一部分空间释放出来,以供当前运行程序使用...Linux系统中Swap空间是分页,每一页大小和内存页大小一样,方便Swap空间和内存之间数据交换。...4)现在新加Swap文件已经起作用了,但系统重新启动以后,并不会记住前几步操作。...总结 以上就是本文关于详细解读linux下swap分区作用全部内容,希望对大家有所帮助。感兴趣朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站支持!

6.5K21

linux系统编程之管道(三):命名管道FIFO和mkfifo函数

FIFO和UNIX Domain Socket这两种IPC机制都是利用文件系统中特殊文件来标识。...FIFO文件在磁盘上没有数据块,仅用来标识内核中一条通道,如 prw-rw-r-- 1 simba simba      0 May 21 10:13 p2,文件类型标识为p表示FIFO,文件大小为0...一、命名管道(FIFO) 匿名管道应用一个限制就是只能在具有共同祖先(具有亲缘关系)进程间通信。...FIFO(命名管道)与pipe(匿名管道)之间唯一区别在它们创建与打开方式不同,这些工作完成之后,它们具有相同语义。...FIFO时 O_NONBLOCK disable:阻塞直到有相应进程为读而打开该FIFO O_NONBLOCK enable:立刻返回失败,错误码为ENXIO 需要注意是打开文件描述符默认是阻塞

3.3K60
领券