项目名称
彩色环显示
具体要求
先显示圆,半径为100,然后在圆外面有圆环,依次形成彩色环
设计说明
设计架构 与VGA驱动显示相同,不再多说,先将显示区域左上角像素点同步到以(0,0)坐标为起点,确定圆的半径、及中心坐标(320,240),将圆显示区里面的像素点看成是变量(v_x,v_y)。
根据公式计算出显示区域(v_x-320)^2+(v_y-240)^2<=半径,就可以进行显示。
代码设计
主要代码设计,需要注意的是对变量进行赋值时,赋值不是常数,必须在assign和always块中进行
//圆的中心点坐标(320,240)
parameter ox=10'd320;
parameter oy=10'd240;
// 计算圆的显示区域,屏幕显示区域同步到以0开始的坐标上
reg [10:0] cy;
reg [10:0] cx;
always@(*)
begin
cx=cnt1-10'd144;
cy=cnt2-10'd35;
end
integer v_x;//有符号寄存器类型
integer v_y;
always@(*)
begin
v_x=cx-ox;
v_y=cy-oy;
end
always@(*)
if(!rst_n)
vga_rgb<=0;
else begin
if((v_x*v_x+v_y*v_y)<=10000)
vga_rgb<=white;
else if((v_x*v_x+v_y*v_y)<=16384)
vga_rgb<=blue;
else if((v_x*v_x+v_y*v_y)<=24336)
vga_rgb<=green;
else if((v_x*v_x+v_y*v_y)<=33856)
vga_rgb<=red;
else if((v_x*v_x+v_y*v_y)<=24336)
vga_rgb<=yellow;
else if((v_x*v_x+v_y*v_y)<=57600)
vga_rgb<=cyan;
else
vga_rgb<=royal;
end