emulate crosstalk display artifact

This commit is contained in:
nino-porcino 2022-01-09 19:27:54 +01:00
parent b55ca2d093
commit 071afcf1b1
4 changed files with 30 additions and 23 deletions

View File

@ -43,13 +43,12 @@ module apple1(
// interrupt signa
input INT_n,
// Outputs to VGA display
output vga_h_sync, // hozizontal VGA sync pulse
output vga_v_sync, // vertical VGA sync pulse
output vga_red, // red VGA signal
output vga_grn, // green VGA signal
output vga_blu, // blue VGA signal
input vga_cls, // clear screen button
// video outputs
output vga_h_sync, // hozizontal sync pulse
output vga_v_sync, // vertical sync pulse
output [5:0] vga_red, // red signal
output [5:0] vga_grn, // green signal
output [5:0] vga_blu, // blue signal
output reset_key, // keyboard shortcut for reset
output poweroff_key // keyboard shortcut for poweroff/on

View File

@ -15,10 +15,10 @@
// TODO keyboard: isolate ps2 keyboard from apple1
// TODO keyboard: check ps2 clock
// TODO keyboard: make a true ascii keyboard
// TODO keyboard: why can't be reset hit twice ?
// TODO osd menu yellow, why it doesn't work?
// TODO display: check NTSC AD724 hsync problem
// TODO display: powerup values
// TODO display: simplify rom font
// TODO display: blinking at powerup
// TODO display: reduce to 512 bytes font
// TODO display: check parameters vs real apple1
// TODO display: check cursor blinking vs 555 timings
@ -88,10 +88,6 @@ localparam conf_str_len = $size(CONF_STR)>>3;
wire st_reset_switch = buttons[1];
wire r, g, b;
wire hs, vs;
wire [31:0] status;
wire [1:0] buttons;
wire [1:0] switches;
@ -306,6 +302,11 @@ wire [7:0] bus_dout = rom_cs ? rom_dout :
wire reset_key;
wire poweroff_key;
wire [5:0] r;
wire [5:0] g;
wire [5:0] b;
wire hs, vs;
// detects the rising edge of the keyboard reset key
// otherwise keyboard stays in reset mode
wire reset_key_edge = reset_key_old == 0 && reset_key == 1;
@ -357,7 +358,7 @@ apple1 apple1
mist_video
#(
.COLOR_DEPTH(1), // 1 bit color depth
.COLOR_DEPTH(6), // 1 bit color depth
.OSD_AUTO_CE(1), // OSD autodetects clock enable
.OSD_COLOR(3'b110), // yellow menu color
.SYNC_AND(1),

View File

@ -8,11 +8,11 @@ module display (
input clr_screen, // clear screen button
// video output
output vga_h_sync, // horizontal VGA sync pulse
output vga_v_sync, // vertical VGA sync pulse
output vga_red, // red VGA signal
output vga_grn, // green VGA signal
output vga_blu, // blue VGA signal
output vga_h_sync, // horizontal sync pulse
output vga_v_sync, // vertical sync pulse
output [5:0] vga_red, // red signal
output [5:0] vga_grn, // green signal
output [5:0] vga_blu, // blue signal
output reg ready, // display ready (PB7 of CIA)
@ -184,11 +184,15 @@ module display (
assign font_pixel = h_dot;
assign font_line = v_dot * 2 + 4;
wire cross_talk_artifact = (h_active & v_active) && v_dot == 0 && h_dot == 0;
wire [5:0] pixel_out = { font_out, font_out, font_out, font_out, font_out | cross_talk_artifact, font_out };
// vga signals out to monitor
assign vga_red = (h_active & v_active) ? font_out : 1'b0;
assign vga_grn = (h_active & v_active) ? font_out : 1'b0;
assign vga_blu = (h_active & v_active) ? font_out : 1'b0;
assign vga_red = (h_active & v_active) ? pixel_out : 6'b0;
assign vga_grn = (h_active & v_active) ? pixel_out : 6'b0;
assign vga_blu = (h_active & v_active) ? pixel_out : 6'b0;
assign vga_h_sync = (h_cnt < h_pulse) ? 0 : 1;
assign vga_v_sync = (v_cnt < v_pulse) ? 0 : 1;

View File

@ -30,12 +30,14 @@ module font_rom (
);
reg [7:0] rom[0:1023];
//reg [7:0] rom[0:511];
initial
$readmemh("roms/vga_font_bitreversed.hex", rom, 0, 1023);
//$readmemb("roms/s2513.bin", rom, 0, 511);
// double height of pixel by ignoring bit 0
wire [3:0] line_ptr = line[4:1];
wire [3:0] line_ptr = line[4:1];
// Note: Quartus II reverses the pixels when we do:
//
@ -53,6 +55,7 @@ module font_rom (
always @(posedge clk)
begin
romout = rom[(character * 10) + {2'd0, line_ptr}];
//romout = rom[(character * 8) + {2'd0, line_ptr}];
out <= romout[pixel];
end