头疼啊,求思路

2019-03-25 07:49发布

现在要用60万门的fpga做一个接口模块,一开始只是四路串口收发,收到的数据经过组合后发出,我用fpga内部寄存器定义的数组,实现了功能。但是,综合后资源利用率达到了80%。

现在,功能扩展了,要完成十路串口的收发,肯定要用块ram来存储收到的数据了。问题是,发出的数据是对十路收到数据的重新排列组合,这种逻辑功能,我应该怎么实现呢??

经验少,没有思路,求大家给点意见!

@00750
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
仙猫
1楼-- · 2019-03-26 12:44
Aragorn 发表于 2015-5-19 09:40
人家现在正是因为用了RAM而不知道怎么处理接下来的逻辑

至少从字面上理解,现有的4路收发已占资源80%,要扩展成10路收发资源还够不够用是要首先考虑的。
因此做扩展时能否不再使用太多的新添资源,尽量复用现有逻辑,恐怕是个关键。
当然,没看到具体的东西无法准确判断。
chhbokay
2楼-- · 2019-03-26 15:21
使用ram缓存数据,从而优化算法,减低资源利用率,以空间换时间,楼主的意思应该是这样。
pinggougou
3楼-- · 2019-03-26 15:55
本帖最后由 pinggougou 于 2015-5-21 01:42 编辑
仙猫 发表于 2015-5-19 10:02
至少从字面上理解,现有的4路收发已占资源80%,要扩展成10路收发资源还够不够用是要首先考虑的。
因此做扩展时能否不再使用太多的新添资源,尽量复用现有逻辑,恐怕是个关键。
当然,没看到具体的东西无法准确判断。

没法复用的!

十路收发都是相互独立的,周期接收数据,然后组合成新的十路后周期发送出去……

原来用定义数组的方法时,定义四个接收数组,四个发送数组,然后可以在一个时钟内直接拼接发送数组。

但是如果用ram的话,一个时钟只能取一个数据,这样的话,怎么拼接新的数组?
pinggougou
4楼-- · 2019-03-26 20:21
 精彩回答 2  元偷偷看……
仙猫
5楼-- · 2019-03-27 00:22
pinggougou 发表于 2015-5-21 01:39
没法复用的!

十路收发都是相互独立的,周期接收数据,然后组合成新的十路后周期发送出去……

原来用定义数组的方法时,定义四个接收数组,四个发送数组,然后可以在一个时钟内直接拼接发送数组。

但是如果用ram的话,一个时钟只能取一个数据,这样的话,怎么拼接新的数组?

感觉是必须复用,全面展开的话,既然现有的4路已占资源80%,要展成10路眼瞅着资源不够用。
复用的意思也就是搞个FIFO什么的,设法让收发一路一路按时序做,最大限度地共用一套处理逻辑。
有没可能不深入看具体代码不好说,但思路是这样。
00750
6楼-- · 2019-03-27 04:45
你把寄存器当RAM用肯定资源占用率太高了,太浪费了!不知道你用的FPGA内部RAM资源怎么样,如果足够多,可以用block ram来实现。
看你的描述,用下图的方式来实现就可以了。
Untitled.png

一周热门 更多>