EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 672|回复: 1

[咨询求助] verilog 实现Round robin 轮询算法

[复制链接]

6

主题

2

回帖

33

E币

技术员

Rank: 2

积分
14
发表于 2019-12-4 09:16:52 | 显示全部楼层 |阅读模式
假如有如下请求需要仲裁: req0, req1, req2, req3, req4, req5 ……,  其中req0, req1, req2位于高优先级组, req3, req4, req5 ……位于低优先级组,授权顺序:req0 -> req1 -> req2 -> req3 -> req0 -> req1 -> req2 -> req4 -> req0 -> req1 -> req2 -> req5
注:req0, req1 …… 每个请求高低优先级组可配置
楼主想到的方式:
1. 使用状态机,当请求过多时, 状态机的跳转逻辑复杂,时钟频率跑不上去
2. 使用桶形移位寄存器的方式,楼主只实现了req0 -> req1 -> req2 ->req3 ->req4 ->req5->req0->req1 ->req2 -> req3 -> req4 ->req5 的一组之间的轮询,涉及到两个组的没有实现

要实现上面的仲裁算法,大家有什么思路,请不吝赐教
积分规则
回复

使用道具 举报

0

主题

6

回帖

8

E币

技术员

Rank: 2

积分
6
发表于 2019-12-4 09:17:14 | 显示全部楼层
对给出的授权顺序有些疑惑,不知道理解的对不对。
0/1/2是高优先级的,并且他们之间也有优先级顺序,可调。之后的3/4/5...是低优先级并且相互之间无优先级顺序。
如果是这样的话,用状态机,是不是可以3/4/5...使用round robin arbiter,如果0/1/2 available的时候,跳出round robin去执行高优先级的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-4-24 03:10 , Processed in 0.037310 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表