MODULE dimmpb CLK PIN; RESETIN PIN; P1 PIN; P83 PIN; P82 PIN; P81 PIN; LED PIN istype 'pos,com'; MODE14..MODE0 PIN istype 'pos,com'; csync50 interface ( CLK,RES,ENA -> [HPOS9..HPOS0],[VPOS9..VPOS0],HSYNC,VSYNC,CSYNC,NBLK); SYNCGEN functional_block csync50; HSYNC node istype 'neg,com'; VSYNC node istype 'neg,com'; CSYNC node istype 'neg,com'; ENA node istype 'pos,reg'; SYNCENA node istype 'pos,reg'; HREF node istype 'pos,reg'; GRID node istype 'neg,reg'; GRIDL node istype 'neg,reg'; LOG7..LOG0 node istype 'pos,com'; LOGCKE node istype 'pos,reg'; BLNK node istype 'neg,com'; HPOS9..HPOS0 node istype 'pos,com'; VPOS9..VPOS0 node istype 'pos,com'; XPOS9..XPOS0 node istype 'pos,reg'; YPOS8..YPOS0 node istype 'pos,reg'; Q1..Q0 node istype 'pos,reg'; FRAMESTART node istype 'pos,reg'; VPOS = [VPOS9..VPOS0]; HPOS = [HPOS9..HPOS0]; XPOS = [XPOS9..XPOS0]; YPOS = [YPOS8..YPOS0]; Q = [Q1..Q0]; EQUATIONS Q.CLK = CLK; when(!RESETIN) then{ Q := Q + 1; } XPOS.CLK = CLK; YPOS.CLK = CLK; ENA.CLK = CLK; SYNCENA.CLK = CLK; GRID.CLK = CLK; GRIDL.CLK = CLK; HREF.CLK = CLK; FRAMESTART.CLK = CLK; SYNCGEN.CLK = CLK; SYNCGEN.RES = 0; SYNCGEN.ENA = SYNCENA; [HPOS9..HPOS0] = SYNCGEN.[HPOS9..HPOS0]; [VPOS9..VPOS0] = SYNCGEN.[VPOS9..VPOS0]; HSYNC = SYNCGEN.HSYNC; VSYNC = SYNCGEN.VSYNC; CSYNC = SYNCGEN.CSYNC; BLNK = SYNCGEN.NBLK; FRAMESTART := ((VPOS == 1) & (HPOS == 0) & SYNCENA); when([Q1..Q0] == 2) then SYNCENA := 1; //+3 else SYNCENA := 0; ENA := SYNCENA; when(([HPOS3..HPOS0] == 0) & SYNCENA) then LOGCKE := 1; // +0 else LOGCKE := 0; LOGCKE.CLK = CLK; when(SYNCENA) then { when(0) then HREF := 0; " DUMMY // else when([YPOS7..YPOS3] < 8) then HREF := 0; // else when([YPOS7..YPOS3] >= 24) then HREF := 0; // else when((HPOS == 207) & SYNCENA) then HREF := 1; else when([YPOS8..YPOS3] < 2) then HREF := 0; else when([YPOS8..YPOS3] >= 32) then HREF := 0; else when((HPOS == 137) & SYNCENA) then HREF := 1; else when((HPOS == 793) & SYNCENA) then HREF := 0; else when(!HSYNC & SYNCENA) then HREF := 0; else HREF := HREF.FB; } else HREF := HREF.FB; when(!HSYNC) then XPOS := 0; else when(LOGCKE & HREF) then XPOS := XPOS.FB + 1; else XPOS := XPOS.FB; when(SYNCENA) then{ when([HPOS3..HPOS0] == 15) then GRID := 1; else when([YPOS2..YPOS0] == 0) then GRID := 1; // +2 else GRID := 0; } else GRID := GRID.FB; when(SYNCENA) then{ when(([HPOS3..HPOS0] == 15) & ([XPOS2..XPOS0] == 0)) then GRIDL := 1; else GRIDL := 0; } else GRIDL := GRIDL.FB; when(!VSYNC) then YPOS := 0; else{ when(ENA & (HPOS == 793)) then YPOS := YPOS + 1; // +2 else YPOS := YPOS.FB; } LED = VSYNC; MODE14.OE = 0; MODE13.OE = 0; MODE12.OE = 0; MODE11.OE = 0; MODE10.OE = 1; MODE9.OE = 0; [MODE14..MODE0] = [0,0,0,0,FRAMESTART,0,BLNK, LOGCKE,SYNCENA,GRIDL,GRID,HREF,CSYNC,HSYNC,VSYNC]; END