void Draw_Line(UCHAR x1,UCHAR y1,UCHAR x2,UCHAR y2)
{ UCHAR u1,v1,u2,v2;
signed int dx=x2-x1;
signed int dy=y2-y1;
UCHAR k;
If(dx*dy>=0)
{ if (abs(x1-x2)>= abs(y1-y2))
//斜率在[0,1]范围内
{ k=1; u1=x1;v1=y1;u2=x2;v2=y2;}
else { k=2;u1=y1;v1=x1;u2=y2;v2=x2;}
//斜率在(1,∞)范围内 }
else { if(abs(x1-x2)>=abs(y1-y2))
//斜率在[-1,0]范围内
{ k=3;u1=x1;v1=y1;u2=x2;v2=2*y1-y2;}
else {k=4;u1=y1;v1=x1;u2=2*y1-y2;v2=x2;}
//斜率在(-∞,-1)范围内 }
int u,v,uEnd,p=2*abs(v1-v2)-abs(u1-u2);
int twoDv=2*abs(v1-v2,twoDvDu=2*(abs(v1-v2)-abs(u1-u2));
if(u1>u2) {u=u2;v=v2;uEnd=u1;}
else {u=u1;v=v1;uEnd=u2;}
switch(k)
{
case 1: Draw_Point(u,v);break;
case 2: Draw_Point(v,u);break;
case 3: Draw_Point(u,2*y1-v);break;
case 4: Draw_Point(v,2*y1-u);break;
default :break;}
while(u { u++;
if(p<0) {p+=twoDv;}
else {v++;p+=twoDvDu;}
switch(k)
{case 1: Draw_Point(u,v);break;
case 2: Draw_Point(v,u);break;
case 3: Draw_Point(u,2*y1-v);break;
case 4: Draw_Point(v,2(y1-u);break;
default:break;}
}
}
4 结束语
在FPGA中使用软核处理器Nios II比硬核的优势在于:硬核实现没有灵活性,通常无法适应最新技术的发展;而基于Nios II处理器的方案是基于HDL源码构建的,可配置的程度很高。Nios II处理器可以将外部存储器、液晶显示屏、以太网控制器、RS-232通信和USB接口等外部设备连接在一起,进行外设的协调工作和数据共享,并能够根据系统的性能要求添加多个Nios II处理器,实现多CPU内核;还可以在Nios II核中加入实时操作系统,实现多任务的调度。
上一篇:优化高速接口的时序裕量