Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.59 KB | None | 0 0
  1.  
  2.  
  3. module syswb(VGA_R, VGA_G, VGA_B, VGA_HS, VGA_VS, CLOCK_27);
  4. output reg[3:0] VGA_R;
  5. output reg[3:0] VGA_G;
  6. output reg[3:0] VGA_B;
  7. reg [9:0] HS_count;
  8.  
  9. output reg VGA_VS;
  10. output reg VGA_HS;
  11. input [1:0] CLOCK_27;
  12. parameter FRONT_PORCH_A = 16;
  13. parameter SYNC_PULSE_B = 96;
  14. parameter BACK_PORCH_C = 48;
  15. parameter ACTIVE_VIDEO_D = 640;
  16.  
  17. parameter V_FRONT_PORCH_A = 10;
  18. parameter V_SYNC_PULSE_B = 2;
  19. parameter V_BACK_PORCH_C = 33;
  20. parameter V_ACTIVE_VIDEO_D = 480;
  21.  
  22. wire VGA_CLK;
  23. clock u0 (
  24. .clk_clk (CLOCK_27[1]), // clk.clk
  25. .reset_reset_n (0), // reset.reset_n
  26. .clk_out_clk (VGA_CLK), // clk_out.clk
  27. .clk_in_clk (CLOCK_27[1]), // clk_in.clk
  28. .clk_res_reset (0) // clk_res.reset
  29. );
  30.  
  31. always @(*)
  32. begin
  33. /*
  34. if(HS_count>=BACK_PORCH_C + 320+ SYNC_PULSE_B &&
  35. HS_count <= BACK_PORCH_C + SYNC_PULSE_B + ACTIVE_VIDEO_D &&
  36. VS_count >= V_BACK_PORCH_C + V_SYNC_PULSE_B &&
  37. VS_count<= V_BACK_PORCH_C -240+ V_SYNC_PULSE_B + V_ACTIVE_VIDEO_D)
  38. begin
  39. VGA_R = 4'd15;
  40. VGA_B = 0;
  41. VGA_G = 0;
  42. end
  43. else if(HS_count>=BACK_PORCH_C + SYNC_PULSE_B &&
  44. HS_count <= BACK_PORCH_C - 320 + SYNC_PULSE_B + ACTIVE_VIDEO_D &&
  45. VS_count >= V_BACK_PORCH_C + V_SYNC_PULSE_B &&
  46. VS_count<= V_BACK_PORCH_C - 240 + V_SYNC_PULSE_B + V_ACTIVE_VIDEO_D)
  47. begin
  48. VGA_R = 0;
  49. VGA_B = 4'd15;
  50. VGA_G = 0;
  51. end
  52. else if(HS_count>=BACK_PORCH_C + SYNC_PULSE_B &&
  53. HS_count <= BACK_PORCH_C -320+ SYNC_PULSE_B + ACTIVE_VIDEO_D &&
  54. VS_count >= V_BACK_PORCH_C + 240 + V_SYNC_PULSE_B &&
  55. VS_count<= V_BACK_PORCH_C+ V_SYNC_PULSE_B + V_ACTIVE_VIDEO_D)
  56. begin
  57. VGA_R = 0;
  58. VGA_B = 0;
  59. VGA_G = 4'd15;
  60. end
  61. */
  62. if(HS_count>=BACK_PORCH_C + SYNC_PULSE_B &&
  63. HS_count <= BACK_PORCH_C -320+ SYNC_PULSE_B + ACTIVE_VIDEO_D &&
  64. VS_count >= V_BACK_PORCH_C + 240 + V_SYNC_PULSE_B &&
  65. VS_count<= V_BACK_PORCH_C+ V_SYNC_PULSE_B + V_ACTIVE_VIDEO_D)
  66. begin
  67. VGA_R = 4'd15;
  68. VGA_B = 0;
  69. VGA_G = 0;
  70. end
  71.  
  72.  
  73. end
  74.  
  75. /*
  76. assign VGA_R =(HS_count>=BACK_PORCH_C + 320 + SYNC_PULSE_B &&
  77. HS_count <= BACK_PORCH_C + SYNC_PULSE_B + ACTIVE_VIDEO_D &&
  78. VS_count >= V_BACK_PORCH_C + V_SYNC_PULSE_B &&
  79. VS_count<= V_BACK_PORCH_C -240+ V_SYNC_PULSE_B + V_ACTIVE_VIDEO_D)
  80. ? 4'd15 : 0;
  81.  
  82. assign VGA_B =(HS_count>=BACK_PORCH_C + SYNC_PULSE_B &&
  83. HS_count <= BACK_PORCH_C -320+ SYNC_PULSE_B + ACTIVE_VIDEO_D &&
  84. VS_count >= V_BACK_PORCH_C + V_SYNC_PULSE_B &&
  85. VS_count<= V_BACK_PORCH_C - 240 + V_SYNC_PULSE_B + V_ACTIVE_VIDEO_D)
  86. ? 4'd15 : 0;
  87.  
  88. assign VGA_G =(HS_count>=BACK_PORCH_C + SYNC_PULSE_B &&
  89. HS_count <= BACK_PORCH_C -320+ SYNC_PULSE_B + ACTIVE_VIDEO_D &&
  90. VS_count >= V_BACK_PORCH_C + 240 + V_SYNC_PULSE_B &&
  91. VS_count<= V_BACK_PORCH_C+ V_SYNC_PULSE_B + V_ACTIVE_VIDEO_D)
  92. ? 4'd15 : 0;
  93. */
  94.  
  95.  
  96. //HS signal generator
  97. always @(posedge VGA_CLK)
  98. begin
  99. if (HS_count < FRONT_PORCH_A + SYNC_PULSE_B +
  100. BACK_PORCH_C + ACTIVE_VIDEO_D)
  101. HS_count <= HS_count + 1;
  102. else
  103. HS_count <= 0;
  104.  
  105. if (HS_count < SYNC_PULSE_B)
  106. VGA_HS <= 0;
  107. else
  108. VGA_HS <= 1;
  109. end
  110. reg [9:0] VS_count;
  111. //VS signal generator
  112. always @(posedge VGA_CLK)
  113. begin
  114. if (HS_count==0)
  115. begin
  116. if (VS_count < V_FRONT_PORCH_A + V_SYNC_PULSE_B
  117. + V_BACK_PORCH_C + V_ACTIVE_VIDEO_D)
  118. VS_count <= VS_count +1;
  119. else
  120. VS_count <= 0;
  121.  
  122. if (VS_count < V_SYNC_PULSE_B)
  123. VGA_VS <= 0;
  124. else
  125. VGA_VS <=1;
  126. end
  127. end
  128. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement