安陆FPGA踩坑填坑记录(梦里呓语回忆录)

以下是使用安陆的FPGA的进行图像采集和图像处理过程中出现的一些问题,虽然有些问题比较简单,但是查找问题的时候比较麻烦,主要是每次编译的时间很长,有时候明明使用modelsim仿真没有问题了,但是上板测试发现和仿真的不一样,只能使用板载的ChipWatcher进行在线逻辑分析;这个过程比较痛苦,编译速度满,采样深度不能太深,况且有一个限制,就是最多同时只能采集八根总线数据,单线数据采样暂时没有发现限制;
好吧,啰嗦就不发了,希望国产FPGA越来越好,国产FPGA加油;
以上只是我在使用国产FPGA的过程中遇到的一些问题,主要是帮助自己记录下来,防止后期忘记;并不是黑谁谁,望见谅!
下面是试验过程中出现问题及解决问题时随手记录下来的,很乱;但是可以帮助我寄几个回忆起当时解决问题的过程;

解决了传感器输出数据不对齐问题;
传感器120M输入,采用乒乓模式,80M时钟输出;
输入时写入的RAM地址为1-1024;输出时应该对应的读取1-1024的地址;
因为安陆的FPGA没有双口的FIFO,并且FIFO的IP模块设计的比较难用;
(也行是使用Altera的习惯了,不知道Xilinx的怎么样?但是高云的FPGA使用起来就比较好用,直接移植了Altera的程序就可以运行成功);
没有双口的FIFO,因此只好在程序中采用两个RAM,然后按照乒乓的操作模式,分时访问两个RAM进行控制;

另外:安陆的FIFO,如果你使用了1024个深度的FIFO,那么它的wrused和rdused其实是[10:0]共计11位的,
这样在访问的时候一定要注意,如果按照想当然的[9:0],0-1023访问,那么注定要出现问题,造成访问出界,
这个问题也是很隐蔽的,也是逐步跟踪才发现的;
showhead模式感觉不太对劲,感觉慢了一个时钟节拍,这个还需要后期仔细对比测试;
同样的,RAM的地址访问也容易出现同样的问题;

Data_Differ_Generator模块,之前输出的数据为1023个数据,导致后面的根据数据个数计数的模块产生输出错误;已经更改;
主要产生的原因为:安陆FPGA的RAM和FIFO的读使能和写使能与输出数据之间的关系,
这个与Altera的FPGA有很大的不同,需要使用逻辑 分析仪采集仔细对比才能发现;
在这个问题上纠结了很多天。最后采用逐步从CCD输出的数据,一个模块一个模块的采集数据才跟踪到的;在此吐槽一下;
安陆的FPGA的编译和布局布线速度简直慢的令人发指;

乘法器:
乘法器在使用的时候,发现需要间隔一个时钟周期后,乘法器的结果才能正确输出;
Mult = A * B ;
间隔一个Clk;
在这个时钟下,读取Mult才能得到正确的结果;
乘法器的速度较慢;这个不如Altera的乘法器;
因此在使用的时候,如果数据使能间隔较大,可以插入一个空的时钟间隔,然后再使用乘法器的结果;

外接SDRAM访问:
访问外接的SDRAM,主要采用了两种,一是IS42S16160,第二个是W9825G6KH,相同的程序,相同的相位,IS42S16160访问正常,W9825G6KH访问读写数据不对,开始对W9825G6KH调节相位关系,这里出现了一个比较有趣的现象,当我把程序中模块减少时(主要是为了编译速度快一些,把读写SDRAM模块以外的暂时注释掉),可以和IS42S16160采用相同的相位,随着模块的加入,SDRAM访问就会出现问题,调节相位关系有时候可以有时候不可以(比较郁闷),很麻烦,只能慢慢调节相位关系;还好最终解决了;

这个版本的程序,基本上把以上所发现的问题已经全部解决,测试正常;

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值