我正在设计硬件,它应该在特定的时钟周期范围内逐渐将变量的值从一个值增加到另一个值 - 以图形方式,您可以将其视为绘制连续线。
我使用了Bresenham的算法,但发现如果时间小于变量值范围,则该算法不适用,因为时钟周期轴不能与变量的值轴进行物理交换 - 时间总是连续的。
我正在寻求建议
限制:不允许除法,以及FP仿真。允许乘法(以及加法和减法)。
更新:不允许使用2 ^ n以外的数字模数。只有整数数学(无符号和/或有符号)。算法设置应该需要一到两个周期。
答案 0 :(得分:3)
Bresenham的算法很容易适应这种情况。
如果y范围(dy
)大于x范围(dx
),则可以将dy/dx
划分为小数和迭代部分:
(x,y)
到(x+dx,y+dy%dx)
(x-dx)*floor(dy/dx)
,即在每floor(dy/dx)
次增量上累积额外x
。