根据Bresenham算法原理:

简单修改后支持任意斜率直线:
reg [15:0] dx;
reg [15:0] dy;
reg signed [15:0] ix;
reg signed [15:0] iy;
reg signed [15:0] iw;
always @(posedge clk)
begin
if (m_req == 1'b1) begin
dx <= ($unsigned(addr_x1) > $unsigned(addr_x0))?($unsigned(addr_x1) - $unsigned(addr_x0)):($unsigned(addr_x0) - $unsigned(addr_x1));//求绝对值
dy <= ($unsigned(addr_y1) > $unsigned(addr_y0))?($unsigned(addr_y1) - $unsigned(addr_y0)):($unsigned(addr_y0) - $unsigned(addr_y1));//求绝对值
ix <= ($unsigned(addr_x1) > $unsigned(addr_x0))?1:-1;//x轴步进
iy <= ($unsigned(addr_y1) > $unsigned(addr_y0))?1:-1;//y轴步进
iw <= ($unsigned(addr_y1) > $unsigned(addr_y0))?1280:-1280; //图像为

本文介绍了如何使用Verilog语言实现Bresenham算法来绘制任意斜率的直线,包括斜率大于-1、小于-1、小于1、大于1、垂直和水平的情况。
最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



