使用VGA
注:altera的板子使用了VGA、DAC
棋子的存储
棋盘是15*15的规格,所以一共有225个位置。
我们将白子和黑子的位置信息分开存储,利用位宽为225的寄存器来进行存储。
Reg [224:0] black;
Reg [224:0] white;
例如当5行6列处放置一枚白子时,那么
Poi=4*15+6-1=65,white[poi]=1
棋盘和棋子的显示
1、VGA是逐行从左往右逐点扫描,在想要显示棋盘的地方输出相应的BGR信息就可以显示棋盘。
2、因为棋子显示权最高(棋子的显示要覆盖棋盘和背景),相应的在if-else if-else语句中是有优先权关系,所以棋子应该写在condition1的位置。
If (poi1) condition1;
Else if (poi1) condition2;
Else condition3;
在poi1处执行的是condition1而不是condition2
棋盘和棋子的显示
例如判断在1行1列处是否有棋子
if((CN1>=98) && (CN1<=102) && (CN2>=63) && (CN2<=67)) begin
if(white[0]) begin
b_data <= 11111111;
g_data <= 11111111;
r_data <= 11111111;
end
else if(black[0]) begin
b_data <= 00000000;
g_data <= 00000000;
r_data <= 00000000;
end
End
注:CN1是屏幕上的列数(98~102/640),CN2是屏幕上的行数(63~67/480)。CN1=100,CN2=65屏幕上的这个位置,是棋盘上的1行1列的位置。