Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module test(
  2.   input wire CLK50MHZ,
  3.   output wire [3:0]led,
  4.   output wire h,v,r,g,b
  5. );
  6.  
  7. wire wc0;
  8.  
  9. // clock 85.500 MHZ
  10. pll pll_ (
  11.     .inclk0(CLK50MHZ),
  12.     .c0(wc0)
  13.     );
  14.    
  15. reg [31:0]counter;
  16.  
  17. // http://gfiles.chinaaet.com/crazybingo/group/20170606/334-6363235373199427985140055.pdf
  18. // Resolution: 1366 x 768 at 60 Hz (non-interlaced) NORMAL BLANKING
  19. localparam [31:0] h_front_porch = 70;
  20. localparam [31:0] h_sync = 143;
  21. localparam [31:0] h_back_porch = 213;
  22. localparam [31:0] h_resolution = 1366;
  23.  
  24. localparam [31:0] v_front_porch = 3;
  25. localparam [31:0] v_sync = 3;
  26. localparam [31:0] v_back_porch = 24;
  27. localparam [31:0] v_resolution = 768;
  28.  
  29. // counters
  30. reg [31:0]vertical;
  31. reg [31:0]horizontal;
  32.  
  33. // tmp regs
  34. reg [1:0]_v;
  35. reg [1:0]_h;
  36. reg [1:0]_r;
  37. reg [1:0]_g;
  38. reg [1:0]_b;
  39.  
  40. // on pll clock
  41. always @(posedge wc0)
  42. begin
  43.     // leds for test
  44.     counter <= counter + 1;
  45.  
  46.     // clock horizontal and vertical clock
  47.     if (horizontal < (h_resolution + h_front_porch + h_sync + h_back_porch ) - 1)
  48.     begin
  49.         horizontal <= horizontal + 1;
  50.     end
  51.     else
  52.     begin
  53.         horizontal <= 0;
  54.        
  55.         if (vertical < (v_resolution + v_front_porch + v_sync + v_back_porch ) - 1)
  56.         begin
  57.             vertical <= vertical + 1;
  58.         end
  59.         else
  60.         begin
  61.             vertical <= 0;
  62.         end
  63.    end
  64.    
  65.  
  66.     // do sync pulses
  67.     // http://www.lucidscience.com/projects/VGA%20Video%20Generator/8.jpg
  68.     if ((horizontal >= h_resolution + h_front_porch) && (horizontal < h_resolution + h_front_porch + h_sync))
  69.     begin
  70.         _h <= 1;
  71.     end
  72.     else
  73.     begin
  74.         _h <= 0;
  75.    end
  76.    
  77.     if ((vertical >= v_resolution + v_front_porch) && (vertical < v_resolution + v_front_porch + v_sync))
  78.     begin
  79.         _v <= 1;
  80.     end
  81.     else
  82.     begin
  83.         _v <= 0;
  84.    end
  85.    
  86.     // do rgb squares
  87.     if ((vertical >= 0) && (vertical < 256))
  88.     begin
  89.         if((horizontal >= 0) && (horizontal < 456))
  90.         begin
  91.             _r <= 1;
  92.             _g <= 0;
  93.             _b <= 0;
  94.         end
  95.         else if((horizontal >= 456) && (horizontal < 912))
  96.         begin
  97.             _r <= 0;
  98.             _g <= 1;
  99.             _b <= 0;
  100.         end
  101.         else if((horizontal >= 912) && (horizontal < 1366))
  102.         begin
  103.             _r <= 0;
  104.             _g <= 0;
  105.             _b <= 1;
  106.         end
  107.         else
  108.         begin
  109.             _r <= 0;
  110.             _g <= 0;
  111.             _b <= 0;
  112.         end
  113.     end
  114.     else if ((vertical >= 256) && (vertical < 512))
  115.     begin
  116.         if((horizontal >= 0) && (horizontal < 456))
  117.         begin
  118.             _r <= 1;
  119.             _g <= 1;
  120.             _b <= 0;
  121.         end
  122.         else if((horizontal >= 456) && (horizontal < 912))
  123.         begin
  124.             _r <= 0;
  125.             _g <= 1;
  126.             _b <= 1;
  127.         end
  128.         else if((horizontal >= 912) && (horizontal < 1366))
  129.         begin
  130.             _r <= 1;
  131.             _g <= 0;
  132.             _b <= 1;
  133.         end
  134.         else
  135.         begin
  136.             _r <= 0;
  137.             _g <= 0;
  138.             _b <= 0;
  139.         end
  140.     end
  141.     else if ((vertical >= 512) && (vertical < v_resolution))
  142.     begin
  143.         if((horizontal >= 0) && (horizontal < 456))
  144.         begin
  145.             _r <= 1;
  146.             _g <= 1;
  147.             _b <= 1;
  148.         end
  149.         else if((horizontal >= 456) && (horizontal < 912))
  150.         begin
  151.             _r <= 0;
  152.             _g <= 0;
  153.             _b <= 0;
  154.         end
  155.         else if((horizontal >= 912) && (horizontal < 1366))
  156.         begin
  157.             _r <= 0;
  158.             _g <= 0;
  159.             _b <= 0;
  160.         end
  161.         else
  162.         begin
  163.             _r <= 0;
  164.             _g <= 0;
  165.             _b <= 0;
  166.         end
  167.     end
  168.     else
  169.     begin
  170.         _r <= 0;
  171.         _g <= 0;
  172.         _b <= 0;
  173.     end
  174. end
  175.  
  176.  
  177. // write clock
  178. assign led = counter[23:20];
  179.  
  180. // write sync
  181. assign h = _h;
  182. assign v = _v;
  183.  
  184. // write color
  185. assign r = _r;
  186. assign g = _g;
  187. assign b = _b;
  188.  
  189. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement