调试一个基于altera  FPGA的项目,发现开机200次,就会有1到2次的开机不正常现象,但只要是成功开机了,无论运行多久都是正常的。
 
遇到这类问题,按照经验来说 一般首先想到的可能是电源硬件出了问题,是否负载突变,负载过重了,但是用示波器看了几天的电源波形,都没有看出任何端倪来。
 
开机后,所有的逻辑都在FPGA里运行,如果不是电源问题,那很大的可能就出在FPGA上了。因为绝大部分的情况下运行都是正常,如果逻辑有差错,每次开机都会出问题,所以内部的逻辑应该是没有问题的。FPGA外围有许多外设,只要存在外设和FPGA的连接,就可能出现时序约束不满足的情况,利用时序分析工具,将外设查了个遍,也没有任何问题。
 
最后又回到曾今怀疑过的复位问题上,因为现在的verilog代码风格里肯定是会包含复位信号的,而且如果有寄存器偶尔忘记给复位,在最开始用modelsim进行前仿真时也可以很快排查出来,但偏偏还就有一两个漏网之鱼。
 
项目里使用了很多个altera自带的fifo模块,发现其中两个fifo模块尽然没有复位信号。。。点开fifo模块发现,缺省情况下fifo模块是没有复位信号的!! 由于fifo过多,所以肯定是在创建fifo时,人为的疏漏忘记勾选使能这两个fifo的复位信号了。
 
正是因为少了复位信号,这两个fifo在开机后处于不确定的状态,让后续的逻辑误取了fifo里的无用数据,导致功能失常。使能这两个fifo的复位信号后,开机不稳定的问题消失了。
 
虽然问题解决了,属于自己的设计疏漏,但让我疑惑的是,为什么altera给出的权威fifo模块里默认情况下是没有复位清零信号的呢?难道altera不知道一个模块如果没有复位信号上电后会处于不确定的状态吗?而且这类模块复位的问题一般都比较难排查,因为即使没有复位,大多数情况下运行都还是正常的。altera,缺省能给个安全点的fifo,让我们省省心吗?
 
吐槽完毕。

能给个安全点的fifo吗的更多相关文章

  1. (翻译)FIFO In Hardware

    翻译一些自己觉得有价值的材料,工作中碰到英语大多数是读,基本没有写或者翻的,翻得不好不到位的敬请指摘. 同时也附原文以供参考. http://electronics.stackexchange.com ...

  2. OS存储管理——FIFO,LRU,OPT命中率

    课程设计课题 存储管理程序设计 摘 要 虚拟存储器作为现代操作系统中存储管理的一项重要技术,实现了内存扩充功能.而分页请求分页系统正好可以完美的支持虚拟存储器功能,它具有请求调页功能和页面置换功能.在 ...

  3. 详解三种缓存过期策略LFU,FIFO,LRU(附带实现代码)

    在学操作系统的时候,就会接触到缓存调度算法,缓存页面调度算法:先分配一定的页面空间,使用页面的时候首先去查询空间是否有该页面的缓存,如果有的话直接拿出来,如果没有的话先查询,如果页面空间没有满的时候, ...

  4. 页置换算法FIFO、LRU、OPT

    页置换算法FIFO.LRU.OPT 为什么需要页置换 在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断.当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调 ...

  5. LRU LFU FIFO 转载

    -------------------------------------->href--------------------------> http://blog.chinaunix.n ...

  6. Lattice FIFO 使用之FIFO_DC输入输出宽度不同时 的一个注意事项

    在使用FIFO_DC的时候,我们知道这个FIFO的一个功能是可以输入输出的数据宽度不一样,比如: 输入数据为128bit,输出数据为16bit,FIFO内部可以实现这样的转换,但是输出的时候是先送出一 ...

  7. S3C2440UART之FIFO

    一.基础知识 S3C2440有3个独立的串口,每一个都可以利用DMA和中断方式操作.每个包含2个64字节FIFO,一个收,一个发.非FIFO模式相当于FIFO模式的一个寄存器缓冲模式.每一个UART有 ...

  8. 串口实现FIFO接受数据

    基本原理:静态队列 /* * 串口的FIFO简单读取实现 * 功能,实现串口的FIFO实现 * 使用方法: * 版本:v1.0.0 * */ #include "sys.h" #i ...

  9. cache4j轻量级java内存缓存框架,实现FIFO、LRU、TwoQueues缓存模型

    简介 cache4j是一款轻量级java内存缓存框架,实现FIFO.LRU.TwoQueues缓存模型,使用非常方便. cache4j为java开发者提供一种更加轻便的内存缓存方案,杀鸡焉用EhCac ...

  10. 操作系统页面置换算法(opt,lru,fifo,clock)实现

    选择调出页面的算法就称为页面置换算法.好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出. 常见的置换算法有以下四种(以下来自操作系统课本). ...

随机推荐

  1. 换根dp特征总结

    Rt,大概总结一下吧(不时更新一小下 1.一般都没有指定根,刚开始随便选一个根(1号点工具人) 2.两次$dfs$,一次从工具人开始预处理一些东西,第二次(也是从工具人开始)换根. 3.多用于:只要确 ...

  2. value(C# )

    上下文关键字 value 用在普通属性声明的 set 访问器中. 此关键字类似于方法的输入参数. 关键字 value 引用客户端代码尝试分配给属性的值. 在以下示例中,MyDerivedClass 有 ...

  3. HDU 1250 Hat's Fibonacci (递推、大数加法、string)

    Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  4. mysql中char,varchar与text类型的区别

      关于char,varchar与text平时没有太在意,一般来说,可能现在大家都是用varchar.但是当要存储的内容比较大时,究竟是选择varchar还是text呢?不知道...... text  ...

  5. H. A Cache Simulator

    Cache memories have been used widely in current microprocessor systems. In this problem, you are ask ...

  6. 如何用vue封装一个防用户删除的平铺页面的水印组件

    需求 为了防止截图等安全问题,在web项目页面中生成一个平铺全屏的水印 要求水印内容为用户名,水印节点用户不能通过开发者工具等删除 效果 如上图 在body节点下插入水印DOM节点,水印节点覆盖在页面 ...

  7. Python基础学习——文件操作、函数

    一.文件操作 文件操作链接:http://www.cnblogs.com/linhaifeng/articles/5984922.html(更多内容见此链接) 一.对文件操作流程 打开文件,得到文件句 ...

  8. Centos7 配置LAMP+fastcgi(Centos7.2+php7.0+mariadb+httpd)

    环境:阿里云centos7.3 一.安装并配置数据库 1.安装数据库 #yum install mariadb-server  mariadb -y 2.启动服务并设置开机自启 # systemctl ...

  9. css sticky footer 布局

    方法一:footer 上用负的 margin-top 在内容外面需要额外包一层元素(wrap)来让它产生对应的 padding-bottom.是为了防止负 margin 导致 footer 覆盖任何实 ...

  10. vue.js(1)--创建vue实例的基本结构

    vue实例基本结构与MVVM框架 (1)vue实例基本结构 <!DOCTYPE html> <html lang="en"> <head> &l ...