本人配置了一个16bit数据转8bit 数据的FIFO,因为不涉及异步时钟,所以使用的是单时钟。
一、初级问题:empty信号一直为高,嗯~让我难以下手,毕竟这个问题过于简单化了,这是复位的问题,我的是低电平复位,前期为了方便,我便把复位信号拉低了,然后它一直处于复位状态。我把复位信号直接拉高(让复位信号为1),这个问题不再出现。
仿真时出现了一种很奇怪的问题,当给FIFO写入数据时,FIFO中的数据不能准确的读出来,或者说是这种数据是错位的,怎样的错位呢,如下所示
写入数据:
0x0102 0x0304 0x0506 0x0708 0x090A 0x0B0C 0x0D0E···········
第一次读出数据
8‘h01 8'h02 8'h03 8'h04 8'h05·········(很正常)
第二次读出数据
8’h1D 8'h1E 8'h1F 8'h20 8'h21·········(开始出现问题)
第三次读数据
8’h48 8'h49 8'h4A 8'h4B 8'h4C··········(觉得问题升级了)
············
············
解决:
FIFO里的数据没有清空,它会一直读还在FIFO里的数据,所以很明显是复位信号的问题。由于前面安排的复位信号拉高了,所以它一直都没有复位,也就是FIFO中不会被清空,FIFO是一个先入先出缓存器,没读完的数据会一直读下去。
安排合适的复位信号可以得以完美解决。
二、第一阶段问题
出现这种问题想到的是什么,FIFO请求??还是............
1、第一步,便是查看波形看数据是否正确,或者说是哪一个信号出现了疏漏;
2、第二步,输出数据用到的,请求或者复位信号该怎么安排,什么时候复位,什么时候接受请求信号,另一个模块什么时候发送请求信号;
3、第三步,查看波形;
4、第四步,分析信号。
......
这个流程一般情况下是能解决问题的,然后我就开始了我的找错生涯。
我发现:
1、我的复位信号出现了问题,我为了让它(FIFO里的数据)输出,我让FIFO复位信号一直拉高(我是低电平复位),然后就出现了上述问题;
2、另外我遇到了一个问题,当我想要安排一个复位信号的时候,我发现我的复位信号不知道该怎么安排或者说这个时候我才发现了复位信号的重要性;
3、当我解决了复位信号后,我的请求信号也出现了很大的问题。
我解决:
1、既然有很多信号有问题,那么先一步一步得来,一个个得解决;
2、复位信号:自己安排一个复位信号,也就是自己写一个复位信号,完美解决问题;
3、请求信号:请求信号是后一个模块给我的,那么我就得去发生请求信号的模块里解决问题,原来我当初为了方便,直接把请求信号拉高了,也就是它一直读FIFO,发现问题后自己安排请求信号,完美解决问题。
三、第二阶段问题
问题1:当我使用逻辑分析仪之后,我发现我的最后一字节数据发生了错误或者是完全,没有输出最后一字节数据;
问题2:当我完全查看数据后发现,每隔512字节偶尔有一字节数据错误;
解决问题:
第一阶段:
1、最后一字节数据错误(没有输出),那便是输出信号的问题,让输出有效信号打一拍,我觉得还是很合理的,输出的数据确实有了最后一字节数据,但是我中间每隔512字节的数据不见了几个,这就~
2、第一阶段的我完全不知道怎么解决每隔512字节的数据错误问题,或者说是不知道问题出在了哪里;
第二阶段:
1、最后一字节数据错误,那我自己分配一个信号,让它在最后一字节出现的时候拉高,让此信号和原来的有效信号取或,然后顺利解决问题;
2、每隔512字节,输出数据的时候会输出两个值,一个是无效数据,一个是有效数据,无效数据输出在前,有效数据输出在后,我想要的数据被前面的无效数据覆盖了,这就很~,最后想了一个办法顺利解决了这个问题——让它强制输出我想要的数据。问题完美解决。
四、思考
FIFO最重要的有三个信号,一个是复位一个是读请求一个是写使能;只要安排明白这三个信号,大概是不会出现太大的问题的,但是小问题也许会有。(这个东西不敢绝对化)但是,只要自己把逻辑理顺,根据逻辑完成它,一般都是会成功的。——所以,逻辑很重要。
自己手里的东西总会遇到多多少少的问题,遇到问题首要任务就是分析问题,理解问题,然后解决问题,如果出现问题多多少少要找自身的原因,或者是自己的逻辑没有理顺,或者是哪一个信号或者条件安排没有完善,当问题一个个得出来的时候,自己就要一个个的去解决,解决一个问题自己就离成功进了一步,当自己完成之后,就会发现,“哦,原来这个问题~怎么感觉有些简单呢,就仅仅只有两三行代码就解决了。”
今天踩的坑努力下次不要再被掉进去。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~文章来源:https://www.toymoban.com/news/detail-771847.html
星回昭以灿,天行徐且溢。文章来源地址https://www.toymoban.com/news/detail-771847.html
到了这里,关于FPGA IP核配置FIFO中遇到数据不匹配以及输出数据缺失问题的解决与思考的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!