//-------------------------- // VGA driver // // Datum: Nov 8, 2007 // Auteur: fotoopa // Copyright (c) 2007 http://www.pbase.com/fotoopa // Deze routines mogen enkel gebruikt worden voor persoonlijke doeleinden en // mits behoud van deze copyright teksten. // Voor het wijzigen van de parameters is wel enig inzicht nodig van de timingen // van een VGA monitor. Er kunnen heel veel instellingen aangepast worden // zolang je binnen de perken van de totale timingen blijft. // Tracht tijdens het experimenteren met de parameters slecht een per een te // wijzigen zodat je beter de invloed van elke parameter begrijpt. // op mijn web is een meer gedetailieerde beschrijving beschikbaar. // http://users.skynet.be/fotoopa/fpga/fpga.htm //-------------------------- // parameter definitie's voor 32 lijnen x 76 characters per lijn. // Horizontal timing pixels parameter H_DISPLAY_PIXELS = 640; // horizontal zichtbare pixels parameter H_SYNC = 96; // horizontal sync breedte in pixels parameter H_BLANKING = 28; // front porch pixels hier wordt het zwart level bepaald parameter H_PIXEL_RAND_LINKS = 74; // hor image rand links volgens image kleur parameter H_PIXEL_TO_IMAGE_BEG = H_SYNC // vanaf hier beginnen de zichtbare pixels. + H_BLANKING; parameter H_PIXEL_TO_CHAR_BEG = H_PIXEL_TO_IMAGE_BEG // vanaf hier beginnen de characters + H_PIXEL_RAND_LINKS; parameter H_PIXEL_TO_CHAR_END = H_PIXEL_TO_IMAGE_BEG // vanaf hier stoppen de characters, begin weer de image kleur +(H_CHAR*H_DOTS_PER_CHAR*H_DOT_PIXELS) + H_PIXEL_RAND_LINKS; parameter H_PIXEL_TO_IMAGE_END= H_PIXEL_TO_IMAGE_BEG // hier stoppen alle display pixels, moet zwart zijn + H_DISPLAY_PIXELS; parameter H_TOTAL_PIXELS = 800; // horizontal total pixels timing monitor // horizontal font timing pixels parameter H_DOT_PIXELS = 10; // horizontal pixels per dot range 1..63 parameter H_DOTS_PER_CHAR = 8; // horizontal dots per character range 1..16 default 8 parameter H_CHAR = 6; // hor aantal characters range 1..63 max // vertikal timing pixels parameter V_DISPLAY_PIXELS = 480; // vertikal zichtbare pixels parameter V_SYNC = 2; // vertikal sync breedte in lijnen parameter V_BLANKING = 30; // vertikal front porch pixels wordt zwart weergegeven parameter V_PIXEL_RAND_BOVEN = 90; // vert image rand in lijnen boven met image kleur parameter V_PIXEL_TO_IMAGE_BEG= V_SYNC // vanaf hier beginnen de zichtbare pixels. + V_BLANKING; parameter V_PIXEL_TO_CHAR_BEG = V_PIXEL_TO_IMAGE_BEG // vanaf hier beginnen de characters + V_PIXEL_RAND_BOVEN; parameter V_PIXEL_TO_CHAR_END = V_PIXEL_TO_IMAGE_BEG // vanaf hier stoppen de characters, begin weer de image kleur +(V_CHAR*V_FONT_TOTAL*V_DOT_PIXELS) + V_PIXEL_RAND_BOVEN; parameter V_PIXEL_TO_IMAGE_END= V_PIXEL_TO_IMAGE_BEG // hier stoppen alle display pixels, moet zwart zijn + V_DISPLAY_PIXELS; parameter V_TOTAL_PIXELS = 525; // totaal frametijd in lijnen timing monitor // vertikal font timing pixels parameter V_DOT_PIXELS = 12; // vertikaal pixels/char dot range 1..31 parameter V_DOTS_PER_CHAR = 8; // vert font dots per character (fontrom) default 8 parameter V_CHAR = 2; // aantal character regels vertikaal parameter V_FONT_BLANK_START = 2; // vert blanke font dots range 0..31 tot V_FONT_TOTAL = 63 ! default = 2 parameter V_FONT_BLANK_END = 2; // vert blanke font dots range 0..31 tot V_FONT_TOTAL = 63 ! default = 3 parameter V_FONT_CHAR_END = V_FONT_BLANK_START + V_DOTS_PER_CHAR+1; // aantal vert blanke back dots parameter V_FONT_TOTAL = V_FONT_CHAR_END + V_FONT_BLANK_END; // aantal vert. dots per frame (met blanke lijnen) parameter BYTES_PER_FONT = 16; // aantal bytes per character font vast volgens font parameter DPRAM_AND_MASK = 12'b111110000000; // ram buffer is 128 bytes breed parameter DPRAM_ADD_MASK = 12'b000010000000; // per regel + 128 bytes optellen parameter ZONE_ZWART = 2'b11; // zwart level parameter ZONE_IMAGE = 2'b01; // rand kleur parameter ZONE_DOT = 2'b10; // font kleur parameter R_image = 2'b00; // rand kleur rood parameter G_image = 2'b00; // rand kleur groen parameter B_image = 2'b01; // rand kleur blauw parameter R_dot_L = 2'b10; // font achtergrond rode kleur parameter G_dot_L = 2'b00; // font achtergrond groene kleur parameter B_dot_L = 2'b00; // font achtergrond blauwe kleur parameter R_dot_H = 2'b11; // font voorgrond rode kleur parameter G_dot_H = 2'b11; // font voorgrond groene kleur parameter B_dot_H = 2'b11; // font voorgrond blauwe kleur parameter ZWART_LEVEL = 0; // zwart level voor monitor