考虑以下问题。您有一个位串,它表示单热编码中的当前计划从站。例如,“00000100”(最左边的位为#7,最右边的位为#0)表示从#2 被调度。
现在,我想在循环调度方案中选择下一个调度的从站,但要有所改变。我有一个“请求掩码”,它说明了哪些奴隶实际上想要被安排。下一个奴隶只会从那些想要的人中挑选出来。
一些示例(假设循环调度是通过向左旋转完成的)。示例 1:
- 当前:“00000100”
- 掩码:“01100000”
- 下一个时间表:“00100000” - 在正常循环中,#3 和 #4 应该在 #2 之后,但他们没有请求,所以选择 #5。
示例 2:
- 当前:“01000000”
- 掩码:“00001010”
- 下一个:“00000010” - 因为调度是通过向左循环完成的,并且 #1 是该顺序中的第一个请求从站。
现在,我知道,这可以很容易地在一个循环中编码。但我实际上想通过一个不循环的操作来得到我的结果。动机:我想在 VHDL/Verilog 中的硬件(在 FPGA 中)实现这一点。
一个额外的好处是组成一个对任意数量的奴隶 N 通用的算法。
顺便说一句,这不是一个家庭作业问题。每当想要以某种方式调度从属设备时,这是一个重要的问题,并根据从属设备的请求来调节调度。我目前的解决方案有点“沉重”,我想知道我是否遗漏了一些明显的东西。