在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2418|回复: 9

[求助] 求助 寄存器延时

[复制链接]
发表于 2018-6-9 15:34:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我有4096个数,每个数位宽为20,我想求每个数占总和的概率。用的是altera cycling2系列
所以我要先把4096个数累加起来,通过同步时钟进行累加需要4096个时钟周期完成,所以一个通道完成累加,另一个通道需要将每个数进行4096个时钟延迟,然后在做除法。
我在进行延时的过程中,我用了20*4096个寄存器来进行移位延时,但是编译的时候跑得特别慢,感觉跑不出来,而且还出了一些警告,我感觉警告是说我用寄存器太多了,还有个警告是说端口不相同什么的。。菜鸟一枚,我不知道我这个延时的方法到底行不行,想各路大神求助,能否帮我解决一下,或者有更好的方法能指导我一下。。。感激不尽。

代码跟警告如图

代码跟警告如图
发表于 2018-6-10 09:34:56 | 显示全部楼层
本帖最后由 lx2116 于 2018-6-10 09:36 编辑

81920个寄存器,资源爆掉了,cyclone II没有这么多资源的,memory可能可以放的下,80K bit,你得查一下fpga的手册看资源够不够。另外这些数加起来位宽很大,可能跑不快的。
发表于 2018-6-10 15:42:36 | 显示全部楼层
应该是算法不对,要先从算法上考虑最优方式。而且你这个不是累加,是拼位吧?“每个数占总和的概率”怎么理解?
 楼主| 发表于 2018-6-13 10:38:01 | 显示全部楼层
回复 3# gaurson


   占总和的概率就是说把这4096个20位的无符号整数相加得总和,再做除法得概率,分子是每个数,分母是总和。 我贴的不是累加,累加没贴,累加我就是调用了一个加法器,然后修改了一些,加法器输入端输出端增加了寄存器,然后将输出与其中一个输入相连。
   我贴的是关于延时的代码,因为我想的是分子和分母要一起同步输入到除法器,相除之前要等待累加的时间,需要等待4096个时钟周期,所以我就想把每个数都延迟4096个时钟周期。

草图

草图
 楼主| 发表于 2018-6-13 10:41:22 | 显示全部楼层
回复 2# lx2116


   谢谢!虽然我也觉得我用的寄存器太多了,,可我不太会用FIFO。。关于那个深度,,我不知道该怎么去控制FIFO数据什么时候输入和输出。。感觉自己还没有系统的学习这些,,很恼火
发表于 2018-6-13 16:06:28 | 显示全部楼层
回复 5# 山猫


   用FIFO吧,控制比较简单的。20bit*4096深度。先缓存4096个到fifo,同时累加。够4096个后开始给fifo读使能,输出你的分子
 楼主| 发表于 2018-6-13 23:38:10 | 显示全部楼层
回复 6# 秋天叶子落

    请问怎么去控制FIFO的读使能?
发表于 2018-6-14 16:27:14 | 显示全部楼层
回复 7# 山猫

百度一下fifo ip的使用方法。fifo是基础的ip了,学FPGA要会用的。回了fifo,再学一些rom、ram等
发表于 2018-6-20 17:40:45 | 显示全部楼层
用BRAM缓存数据啊,当然和FIFO一个意思
发表于 2018-6-30 21:26:51 | 显示全部楼层
你从RAM/ROM中打算读取4096个数据,可以使用双端口RAM/ROM,就是读地址有两个,读数据也有两个,第一个读地址和数据假设是ADDR1和DATA1,第二个是ADDR2和DATA2;DATA2连接的是累加器,你自己调用的,就不说了。DATA1输出的是每个数据,将要作为除法器的分子,那你可以用一个计数器去控制这个延迟,因为累加器的延迟固定,所以这个只要这个计数器记到一定值输出就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 16:29 , Processed in 0.028632 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表