Advertisement
Guest User

Untitled

a guest
May 19th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 2.36 KB | None | 0 0
  1. em swioports.vhd
  2.  
  3. RatioMode       : inout std_logic_vector(  2 downto 0 );            -- Pixel Ratio 1:1 for VGA Output (default is 0) (toggle 0-7) (60Hz only)
  4.  
  5.  -- in assignment: 'Port $41 ID212 [Smart Commands]' (write only)
  6.                 if( req = '1' and wrt = '1' and (adr(3 downto 0) = "0001")  and (io40_n = "00101011") )then
  7.                     io41_id212_n    <=  not dbo;
  8.                     case dbo is
  9.                         -- SMART CODE   #000
  10. --                      when "00000000" =>                                  -- 0x00 Null Command (Reserved)
  11. --                          null;
  12.                        
  13.                         when "01111111" =>                                  -- 0x7f Pixel Ratio Toggle for VGA output
  14.                             RatioMode       <=  RatioMode - 1;
  15.  
  16. ----------------------------------
  17.  
  18. em vdp_vga.vhd linha 186
  19.  
  20.  -- PIXEL RATIO 1:1 (NTSC MODE ONLY)
  21.     PROCESS( CLK21M )
  22.     BEGIN
  23.         IF( CLK21M'EVENT AND CLK21M = '1' )THEN
  24.             IF( PALMODE = '1' )THEN
  25.                 DISP_START_X <= "00001010111";                  -- 88  = CENTER (PAL MODE)
  26.             ELSIF( PALMODE = '0' AND RATIOMODE = "000" )THEN
  27.                 DISP_START_X <= "00001000111";                  -- 71  = CENTER (NTSC MODE)
  28.             ELSIF( VCOUNTERIN < 56 )THEN
  29.               IF( VCOUNTERIN(0) = '0' )THEN
  30.                   CASE RATIOMODE IS
  31.                   WHEN "111" => DISP_START_X <= "00000100011";  -- 35  = LEFT -3
  32.                   WHEN "110" => DISP_START_X <= "00000100100";  -- 36  = LEFT -2
  33.                   WHEN "101" => DISP_START_X <= "00000100101";  -- 37  = LEFT -1
  34.                   WHEN "100" => DISP_START_X <= "00000100110";  -- 38  = LEFT   (NTSC MODE) (CENTER - 33)
  35.                   WHEN "011" => DISP_START_X <= "00000100111";  -- 39  = LEFT +1
  36.                   WHEN "010" => DISP_START_X <= "00000101000";  -- 40  = LEFT +2
  37.                   WHEN "001" => DISP_START_X <= "00000101001";  -- 41  = LEFT +3
  38.                   WHEN OTHERS => NULL;
  39.                   END CASE;
  40.               ELSE
  41.                   DISP_START_X <= "00001101010";                -- 106 = RIGHT  (NTSC MODE) (684 - 576 - 2)
  42.               END IF;
  43.             ELSE
  44.                 DISP_START_X <= "00001000111";                  -- 71  = CENTER (NTSC MODE) (RIGHT - 35)
  45.             END IF;
  46.         END IF;
  47.     END PROCESS;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement