fix(vga): 光标框改成黄色常亮 2 像素,一眼可见
原来是 1 像素浅灰 + blink 闪动(约 1.3 s 周期):在白色未揭开格上几乎看不清, 且仿真截图有一半概率正好截到灭的相位,导致看图时找不到指针。 - cpu21_vga.v: on_border 1px -> 2px,去掉 blink(常亮),颜色 7(浅灰) -> 6(黄) - fb2png.py: 渲染器同步同样的规则 实测:仿真截图里黄色光标框清晰可辨
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
// 25 MHz 的像素节拍。**不引入第二个时钟域**,因此显示缓冲区的读(本模块)
|
||||
// 与写(MMIO,同一时钟)之间没有跨时钟域问题。
|
||||
//
|
||||
// 光标:由 CURSOR 寄存器的 (x,y) 决定,在对应格子上画一个白色闪动的方框
|
||||
// 光标:由 CURSOR 寄存器的 (x,y) 决定,在对应格子上画一个黄色常亮的方框(2 像素宽)
|
||||
// (CTRL[0] 控制显示与否)。缓冲区字节的 bit7 在本模块中不使用(保留)。
|
||||
// -----------------------------------------------------------------------------
|
||||
module cpu21_vga #(
|
||||
@@ -174,21 +174,16 @@ module cpu21_vga #(
|
||||
wire glyph_px = frow[3'd7 - fx]; // 1 = 画字模点
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 光标框(闪动)
|
||||
// 光标框:黄色、常亮、2 像素宽
|
||||
// 原来是 1 像素浅灰 + 闪动(blink 周期约 1.3 s):在白色未揭开格上几乎看不清,
|
||||
// 而且截图有一半概率正好截到"灭"的那个相位。改成黄色常亮 2 像素后,
|
||||
// VGA 上和图里都能一眼看到指针。想改回闪动:把 blink_q 加回来,
|
||||
// 再在 cursor_box 里与上 blink 即可。
|
||||
// ---------------------------------------------------------------------------
|
||||
reg [24:0] blink_q;
|
||||
always @(posedge clk or posedge reset) begin
|
||||
if (reset)
|
||||
blink_q <= 25'd0;
|
||||
else if (tick)
|
||||
blink_q <= blink_q + 25'd1;
|
||||
end
|
||||
wire blink = blink_q[24];
|
||||
|
||||
wire cursor_here = (cursor_i[4:0] == ccol) && (cursor_i[12:8] == crow);
|
||||
wire on_border = (hx[3:0] == 4'd0) || (hx[3:0] == 4'd15) ||
|
||||
(vy[3:0] == 4'd0) || (vy[3:0] == 4'd15);
|
||||
wire cursor_box = cursor_here && blink && ctrl_i[0] && on_border;
|
||||
wire on_border = (hx[3:0] < 4'd2) || (hx[3:0] > 4'd13) ||
|
||||
(vy[3:0] < 4'd2) || (vy[3:0] > 4'd13);
|
||||
wire cursor_box = cursor_here && ctrl_i[0] && on_border;
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 颜色(3 位调色板 -> 4:4:4 RGB)
|
||||
@@ -218,7 +213,7 @@ module cpu21_vga #(
|
||||
endfunction
|
||||
|
||||
wire [2:0] px_color = glyph_px ? gcolor : bgcolor;
|
||||
wire [2:0] px_final = cursor_box ? 3'd7 : px_color;
|
||||
wire [2:0] px_final = cursor_box ? 3'd6 : px_color; // 6 = 黄,光标框
|
||||
wire [11:0] px_rgb = de ? pal(px_final) : 12'h000;
|
||||
|
||||
always @(posedge clk or posedge reset) begin
|
||||
|
||||
Reference in New Issue
Block a user