Advertisement
Guest User

Untitled

a guest
May 14th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module Output(
  2.     input       [6:0] TESTCOM,
  3.     input       [1:0]   Enabled,
  4.    
  5.     input                       VGA_CLK,
  6.     input           [7:0]       VGA_R_IN,
  7.     input           [7:0]       VGA_G_IN,
  8.     input           [7:0]       VGA_B_IN,
  9.     input           [12:0]  H_CNT,
  10.     input           [12:0]  V_CNT,
  11.     input           [31:0]      ScoreA,
  12.     input           [31:0]      ScoreB,
  13.     input           [31:0]      COM,
  14.    
  15.     output reg      [7:0]       VGA_R_OUT,
  16.     output reg      [7:0]       VGA_G_OUT,
  17.     output reg      [7:0]       VGA_B_OUT
  18. );
  19. //reg [0:7] top[0:8];
  20.  
  21. //top[0] = 8;
  22. //top[1] = 10;
  23.  
  24.  
  25. //BUGS
  26. //LAATSTE CHARACTER WORDT HERHAALD
  27. parameter OUTPUT_X = 150;
  28. parameter OUTPUT_Y0 = 100;
  29. parameter OUTPUT_Y1 = 130;
  30. parameter OUTPUT_Y2 = 160;
  31. parameter OUTPUT_Y3 = 190;
  32. parameter OUTPUT_Y4 = 220;
  33. parameter OUTPUT_Y5 = 250;
  34. parameter OUTPUT_Y6 = 280;
  35. parameter OUTPUT_Y7 = 310;
  36. parameter OUTPUT_Y8 = 340;
  37.  
  38. shortint unsigned side1 = 0;
  39. shortint unsigned side2 = 0;
  40.  
  41. reg [7:0] f;
  42.  
  43. parameter BLOCK_SIZE = 5;
  44. parameter MARGIN = 1;
  45. parameter FONT_WIDTH = 5;
  46. parameter FONT_HEIGHT = 5;
  47. parameter CHARACTER_ARRAY_SIZE = 13; //onderstaande regel font: 0:11 pak dan 11 en doe +1
  48.  
  49. reg [24:0] font[0:12] = '{
  50.     25'b11111_10000_11100_10000_10000, // F                 0
  51.     25'b11110_10001_11111_10001_11110, // B //              1
  52.     25'b10001_10001_10001_10001_01110, // U //              2
  53.     25'b11110_10001_10001_10001_11110, // D //              3
  54.     25'b10000_10000_10000_10000_11110, // L //              4
  55.     25'b11110_10001_11110_10100_10010, // R //              5
  56.      25'b11111_11111_11111_11111_11111, // wit blok         6
  57.      25'b11111_11111_11111_11111_11111, // rood blok        7
  58.      25'b11111_11111_11111_11111_11111, // groen blok       8
  59.      25'b11111_11111_11111_11111_11111, // blauw blok       9
  60.      25'b11111_11111_11111_11111_11111, // geel blok        10
  61.      25'b11111_11111_11111_11111_11111, // oranje blok      11
  62.      25'b00000_00000_00000_00000_00000 // doorzichtig       12
  63. };
  64.  
  65.  
  66. function font_pixel;
  67. input [3:0] digit;
  68. input [15:0] x_pos;
  69. input [15:0] y_pos;
  70.  
  71.  
  72. begin
  73.     case (digit)
  74.         0: font_pixel = font[0][x_pos + y_pos * FONT_WIDTH];
  75.         1: font_pixel = font[1][x_pos + y_pos * FONT_WIDTH];
  76.         2:  font_pixel = font[2][x_pos + y_pos * FONT_WIDTH];
  77.         3: font_pixel = font[3][x_pos + y_pos * FONT_WIDTH];
  78.         4: font_pixel = font[4][x_pos + y_pos * FONT_WIDTH];
  79.         5: font_pixel = font[5][x_pos + y_pos * FONT_WIDTH];
  80.         6: font_pixel = font[6][x_pos + y_pos * FONT_WIDTH];
  81.         7: font_pixel = font[7][x_pos + y_pos * FONT_WIDTH];
  82.         8: font_pixel = font[8][x_pos + y_pos * FONT_WIDTH];
  83.         9:  font_pixel = font[9][x_pos + y_pos * FONT_WIDTH];
  84.         10: font_pixel = font[10][x_pos + y_pos * FONT_WIDTH];
  85.         11: font_pixel = font[11][x_pos + y_pos * FONT_WIDTH];
  86.        
  87.     endcase
  88. end
  89. endfunction
  90.  
  91.  
  92. function [7:0] hahabier;
  93.     input [3:0] digit1, x_pos1, y_pos1;
  94.     begin
  95.         if (digit1 == 7) begin //wit
  96.               if (font_pixel(digit1, FONT_WIDTH - 1 - x_pos1, FONT_HEIGHT - 1 - y_pos1)) begin
  97.               VGA_R_OUT = 255;
  98.               VGA_G_OUT = 255;
  99.               VGA_B_OUT = 255;
  100.               end
  101.          end else if (digit1 == 8) begin //rood
  102.               if (font_pixel(digit1, FONT_WIDTH - 1 - x_pos1, FONT_HEIGHT - 1 - y_pos1)) begin
  103.               VGA_R_OUT = 255;
  104.               VGA_G_OUT = 0;
  105.               VGA_B_OUT = 0;
  106.               end
  107.          end else if (digit1 == 9) begin //groen
  108.               if (font_pixel(digit1, FONT_WIDTH - 1 - x_pos1, FONT_HEIGHT - 1 - y_pos1)) begin
  109.               VGA_R_OUT = 0;
  110.               VGA_G_OUT = 255;
  111.               VGA_B_OUT = 0;
  112.               end
  113.          end else if (digit1 == 10) begin //blauw
  114.               if (font_pixel(digit1, FONT_WIDTH - 1 - x_pos1, FONT_HEIGHT - 1 - y_pos1)) begin
  115.               VGA_R_OUT = 0;
  116.               VGA_G_OUT = 0;
  117.               VGA_B_OUT = 255;
  118.               end
  119.          end else if (digit1 == 11) begin //geel
  120.               if (font_pixel(digit1, FONT_WIDTH - 1 - x_pos1, FONT_HEIGHT - 1 - y_pos1)) begin
  121.               VGA_R_OUT = 255;
  122.               VGA_G_OUT = 255;
  123.               VGA_B_OUT = 0;
  124.               end
  125.          end else if (digit1 == 12) begin // oranje
  126.               if (font_pixel(digit1, FONT_WIDTH - 1 - x_pos1, FONT_HEIGHT - 1 - y_pos1)) begin
  127.               VGA_R_OUT = 255;
  128.               VGA_G_OUT = 140;
  129.               VGA_B_OUT = 0;
  130.               end
  131.          end else if (digit1  <7) begin //geel voor de stap
  132.               if (font_pixel(digit1, FONT_WIDTH - 1 - x_pos1, FONT_HEIGHT - 1 - y_pos1)) begin
  133.               VGA_R_OUT = 255;
  134.               VGA_G_OUT = 0;
  135.               VGA_B_OUT = 255;
  136.               end
  137.          end
  138.  
  139.  
  140.  
  141.     end
  142. endfunction
  143.  
  144.  
  145. always @(posedge VGA_CLK) begin
  146.     byte unsigned i, dig;
  147.     shortint unsigned x, y, x_tgt;
  148.      
  149.      side1 = COM; //ScoreA
  150.      //side1 =
  151.    
  152.     x = H_CNT - X_START;
  153.     y = V_CNT - Y_START;
  154.    
  155.     VGA_R_OUT = VGA_R_IN;
  156.     VGA_G_OUT = VGA_G_IN;
  157.     VGA_B_OUT = VGA_B_IN;
  158.      
  159.      
  160.  
  161.      
  162. if (x > 200 && x < 300  && y < 100 && y > 200) begin
  163.             VGA_R_OUT = 255;
  164.             VGA_G_OUT = 255;
  165.             VGA_B_OUT = 255;
  166.         end
  167.      
  168.    
  169.     //0
  170.     if (Enabled && y > OUTPUT_Y0 && y < (OUTPUT_Y0 + BLOCK_SIZE * FONT_HEIGHT)) begin
  171.        
  172.         for(i = 0; i < CHARACTER_ARRAY_SIZE -1; i = i+1) begin
  173.             x_tgt = OUTPUT_X + i * (BLOCK_SIZE * FONT_WIDTH + MARGIN);
  174.        
  175.             if (x > x_tgt && x < (x_tgt + BLOCK_SIZE * FONT_WIDTH)) begin
  176.                 byte unsigned x_pos, y_pos;
  177.                
  178.                 x_pos = (x - x_tgt) / BLOCK_SIZE;
  179.                 y_pos = (y - OUTPUT_Y0) / BLOCK_SIZE;
  180.                
  181.                 case (i)
  182. //                   0 : dig = row[x_grid] % 1000 / 100;
  183. //                              1 : dig = row[x_grid] % 100 / 10;
  184. //                              2 : dig = row[x_grid] % 10;
  185.                      
  186.                      
  187. //                    0: dig = side1 % 100000 / 10000;
  188. //                    1: dig = side1 % 10000 / 1000;
  189. //                    2: dig = side1 % 1000 / 100;
  190. //                    3: dig = side1 % 100 / 10;
  191. //                    4: dig = side1 % 10;
  192.                     0: dig = 6;
  193.                     1: dig = 6;
  194.                     2: dig = 6;
  195.                     3: dig = 6;
  196.                     4: dig = 6;
  197.                     5: dig = 6;
  198.                     6: dig = 6;
  199.                     7: dig = 6;
  200.                     8: dig = 6;
  201.                     9: dig = 6;
  202.                     10: dig = 6;
  203.                     11: dig = 6;
  204.                 endcase
  205.                      
  206.        
  207. //                   
  208. //if (dig == 7) begin //wit
  209. //                    if (font_pixel(dig, FONT_WIDTH - 1 - x_pos, FONT_HEIGHT - 1 - y_pos)) begin
  210. //                    VGA_R_OUT = 255;
  211. //                    VGA_G_OUT = 255;
  212. //                    VGA_B_OUT = 255;
  213. //                    end
  214. //                end else if (dig == 8) begin //rood
  215. //                    if (font_pixel(dig, FONT_WIDTH - 1 - x_pos, FONT_HEIGHT - 1 - y_pos)) begin
  216. //                    VGA_R_OUT = 255;
  217. //                    VGA_G_OUT = 0;
  218. //                    VGA_B_OUT = 0;
  219. //                    end
  220. //                end else if (dig == 9) begin //groen
  221. //                    if (font_pixel(dig, FONT_WIDTH - 1 - x_pos, FONT_HEIGHT - 1 - y_pos)) begin
  222. //                    VGA_R_OUT = 0;
  223. //                    VGA_G_OUT = 255;
  224. //                    VGA_B_OUT = 0;
  225. //                    end
  226. //                end else if (dig == 10) begin //blauw
  227. //                    if (font_pixel(dig, FONT_WIDTH - 1 - x_pos, FONT_HEIGHT - 1 - y_pos)) begin
  228. //                    VGA_R_OUT = 0;
  229. //                    VGA_G_OUT = 0;
  230. //                    VGA_B_OUT = 255;
  231. //                    end
  232. //                end else if (dig == 11) begin //geel
  233. //                    if (font_pixel(dig, FONT_WIDTH - 1 - x_pos, FONT_HEIGHT - 1 - y_pos)) begin
  234. //                    VGA_R_OUT = 255;
  235. //                    VGA_G_OUT = 255;
  236. //                    VGA_B_OUT = 0;
  237. //                    end
  238. //                end else if (dig == 12) begin // oranje
  239. //                    if (font_pixel(dig, FONT_WIDTH - 1 - x_pos, FONT_HEIGHT - 1 - y_pos)) begin
  240. //                    VGA_R_OUT = 255;
  241. //                    VGA_G_OUT = 140;
  242. //                    VGA_B_OUT = 0;
  243. //                    end
  244. //                end else if (dig  <7) begin //geel voor de stap
  245. //                    if (font_pixel(dig, FONT_WIDTH - 1 - x_pos, FONT_HEIGHT - 1 - y_pos)) begin
  246. //                    VGA_R_OUT = 255;
  247. //                    VGA_G_OUT = 0;
  248. //                    VGA_B_OUT = 255;
  249. //                    end
  250. //                end
  251. //            end
  252. //        end
  253. //    end
  254.  
  255.     #10 f = hahabier(dig, x_pos, y_pos);
  256.     end
  257.     end
  258.     end
  259.    
  260.    
  261.     //1
  262.     if (Enabled && y > OUTPUT_Y1 && y < (OUTPUT_Y1 + BLOCK_SIZE * FONT_HEIGHT)) begin
  263.        
  264.         for(i = 0; i < CHARACTER_ARRAY_SIZE-1; i = i+1) begin
  265.             x_tgt = OUTPUT_X + i * (BLOCK_SIZE * FONT_WIDTH + MARGIN);
  266.        
  267.             if (x > x_tgt && x < (x_tgt + BLOCK_SIZE * FONT_WIDTH)) begin
  268.                 byte unsigned x_pos, y_pos;
  269.                
  270.                 x_pos = (x - x_tgt) / BLOCK_SIZE;
  271.                 y_pos = (y - OUTPUT_Y1) / BLOCK_SIZE;
  272.                
  273.                 case (i)
  274.                     0: dig = 4;
  275.                     1: dig = 4;
  276.                     2: dig = 4;
  277.                     3: dig = 4;
  278.                     4: dig = 4;
  279.                     5: dig = 4;
  280.                     6: dig = 4;
  281.                     7: dig = 8;
  282.                     8: dig = 8;
  283.                     9: dig = 8;
  284.                     10: dig = 8;
  285.                     11: dig = 8;
  286.                 endcase
  287.                
  288. #10 f = hahabier(dig, x_pos, y_pos);
  289.     end
  290.     end
  291.     end
  292.    
  293.     //2
  294.     if (Enabled && y > OUTPUT_Y2 && y < (OUTPUT_Y2 + BLOCK_SIZE * FONT_HEIGHT)) begin
  295.        
  296.         for(i = 0; i < CHARACTER_ARRAY_SIZE-1; i = i+1) begin
  297.             x_tgt = OUTPUT_X + i * (BLOCK_SIZE * FONT_WIDTH + MARGIN);
  298.        
  299.             if (x > x_tgt && x < (x_tgt + BLOCK_SIZE * FONT_WIDTH)) begin
  300.                 byte unsigned x_pos, y_pos;
  301.                
  302.                 x_pos = (x - x_tgt) / BLOCK_SIZE;
  303.                 y_pos = (y - OUTPUT_Y2) / BLOCK_SIZE;
  304.                
  305.                 case (i)
  306.                     0: dig = 13;
  307.                     1: dig = 13;
  308.                     2: dig = 13;
  309.                     3: dig = 8;
  310.                     4: dig = 8;
  311.                     5: dig = 8;
  312.                     6: dig = 13;
  313.                     7: dig = 13;
  314.                     8: dig = 13;
  315.                     9: dig = 13;
  316.                     10: dig = 13;
  317.                     11: dig = 13;
  318.                 endcase
  319.                
  320. #10 f = hahabier(dig, x_pos, y_pos);
  321.     end
  322.     end
  323.     end
  324.    
  325.     //3
  326.     if (Enabled && y > OUTPUT_Y3 && y < (OUTPUT_Y3 + BLOCK_SIZE * FONT_HEIGHT)) begin
  327.        
  328.         for(i = 0; i < CHARACTER_ARRAY_SIZE-1; i = i +1) begin
  329.             x_tgt = OUTPUT_X + i * (BLOCK_SIZE * FONT_WIDTH + MARGIN);
  330.        
  331.             if (x > x_tgt && x < (x_tgt + BLOCK_SIZE * FONT_WIDTH)) begin
  332.                 byte unsigned x_pos, y_pos;
  333.                
  334.                 x_pos = (x - x_tgt) / BLOCK_SIZE;
  335.                 y_pos = (y - OUTPUT_Y3) / BLOCK_SIZE;
  336.                
  337.                 case (i)
  338.                     0: dig = 7;
  339.                     1: dig = 7;
  340.                     2: dig = 7;
  341.                     3: dig = 8;
  342.                     4: dig = 8;
  343.                     5: dig = 8;
  344.                     6: dig = 9;
  345.                     7: dig = 9;
  346.                     8: dig = 9;
  347.                     9: dig = 10;
  348.                     10: dig = 10;
  349.                     11: dig = 10;
  350.                 endcase
  351.                
  352. #10 f = hahabier(dig, x_pos, y_pos);
  353.     end
  354.     end
  355.     end
  356.    
  357.     //4
  358.     if (Enabled && y > OUTPUT_Y4 && y < (OUTPUT_Y4 + BLOCK_SIZE * FONT_HEIGHT)) begin
  359.        
  360.         for(i = 0; i < CHARACTER_ARRAY_SIZE-1; i = i+1) begin
  361.             x_tgt = OUTPUT_X + i * (BLOCK_SIZE * FONT_WIDTH + MARGIN);
  362.        
  363.             if (x > x_tgt && x < (x_tgt + BLOCK_SIZE * FONT_WIDTH)) begin
  364.                 byte unsigned x_pos, y_pos;
  365.                
  366.                 x_pos = (x - x_tgt) / BLOCK_SIZE;
  367.                 y_pos = (y - OUTPUT_Y4) / BLOCK_SIZE;
  368.                
  369.                 case (i)
  370.                     0: dig = 7;
  371.                     1: dig = 7;
  372.                     2: dig = 7;
  373.                     3: dig = 8;
  374.                     4: dig = 8;
  375.                     5: dig = 8;
  376.                     6: dig = 9;
  377.                     7: dig = 9;
  378.                     8: dig = 9;
  379.                     9: dig = 10;
  380.                     10: dig = 11;
  381.                     11: dig = 12;
  382.                 endcase
  383.                
  384. #10 f = hahabier(dig, x_pos, y_pos);
  385.     end
  386.     end
  387.     end
  388.    
  389.     //5
  390.     if (Enabled && y > OUTPUT_Y5 && y < (OUTPUT_Y5 + BLOCK_SIZE * FONT_HEIGHT)) begin
  391.        
  392.         for(i = 0; i < CHARACTER_ARRAY_SIZE-1; i = i+1) begin
  393.             x_tgt = OUTPUT_X + i * (BLOCK_SIZE * FONT_WIDTH + MARGIN);
  394.        
  395.             if (x > x_tgt && x < (x_tgt + BLOCK_SIZE * FONT_WIDTH)) begin
  396.                 byte unsigned x_pos, y_pos;
  397.                
  398.                 x_pos = (x - x_tgt) / BLOCK_SIZE;
  399.                 y_pos = (y - OUTPUT_Y5) / BLOCK_SIZE;
  400.                
  401.                 case (i)
  402.                     0: dig = 7;
  403.                     1: dig = 7;
  404.                     2: dig = 7;
  405.                     3: dig = 8;
  406.                     4: dig = 8;
  407.                     5: dig = 8;
  408.                     6: dig = 9;
  409.                     7: dig = 9;
  410.                     8: dig = 9;
  411.                     9: dig = 10;
  412.                     10: dig = 10;
  413.                     11: dig = 10;
  414.                 endcase
  415.                
  416. #10 f = hahabier(dig, x_pos, y_pos);
  417.     end
  418.     end
  419.     end
  420.    
  421.     //6
  422.     if (Enabled && y > OUTPUT_Y6 && y < (OUTPUT_Y6 + BLOCK_SIZE * FONT_HEIGHT)) begin
  423.        
  424.         for(i = 0; i < CHARACTER_ARRAY_SIZE-1; i = i+1) begin
  425.             x_tgt = OUTPUT_X + i * (BLOCK_SIZE * FONT_WIDTH + MARGIN);
  426.        
  427.             if (x > x_tgt && x < (x_tgt + BLOCK_SIZE * FONT_WIDTH)) begin
  428.                 byte unsigned x_pos, y_pos;
  429.                
  430.                 x_pos = (x - x_tgt) / BLOCK_SIZE;
  431.                 y_pos = (y - OUTPUT_Y6) / BLOCK_SIZE;
  432.                
  433.                 case (i)
  434.                     0: dig = 13;
  435.                     1: dig = 13;
  436.                     2: dig = 13;
  437.                     3: dig = 8;
  438.                     4: dig = 8;
  439.                     5: dig = 8;
  440.                     6: dig = 13;
  441.                     7: dig = 13;
  442.                     8: dig = 13;
  443.                     9: dig = 13;
  444.                     10: dig = 13;
  445.                     11: dig = 13;
  446.                 endcase
  447.                
  448. #10 f = hahabier(dig, x_pos, y_pos);
  449.     end
  450.     end
  451.     end
  452.     //7
  453.     if (Enabled && y > OUTPUT_Y7 && y < (OUTPUT_Y7 + BLOCK_SIZE * FONT_HEIGHT)) begin
  454.        
  455.         for(i = 0; i < CHARACTER_ARRAY_SIZE-1; i = i+1) begin
  456.             x_tgt = OUTPUT_X + i * (BLOCK_SIZE * FONT_WIDTH + MARGIN);
  457.        
  458.             if (x > x_tgt && x < (x_tgt + BLOCK_SIZE * FONT_WIDTH)) begin
  459.                 byte unsigned x_pos, y_pos;
  460.                
  461.                 x_pos = (x - x_tgt) / BLOCK_SIZE;
  462.                 y_pos = (y - OUTPUT_Y7) / BLOCK_SIZE;
  463.                
  464.                 case (i)
  465.                     0: dig = 13;
  466.                     1: dig = 13;
  467.                     2: dig = 13;
  468.                     3: dig = 8;
  469.                     4: dig = 8;
  470.                     5: dig = 8;
  471.                     6: dig = 13;
  472.                     7: dig = 13;
  473.                     8: dig = 13;
  474.                     9: dig = 13;
  475.                     10: dig = 13;
  476.                     11: dig = 13;
  477.                 endcase
  478.                
  479. #10 f = hahabier(dig, x_pos, y_pos);
  480.     end
  481.     end
  482.     end
  483.    
  484.     if (Enabled && y > OUTPUT_Y8 && y < (OUTPUT_Y8 + BLOCK_SIZE * FONT_HEIGHT)) begin
  485.        
  486.         for(i = 0; i < CHARACTER_ARRAY_SIZE-1; i = i+1) begin
  487.             x_tgt = OUTPUT_X + i * (BLOCK_SIZE * FONT_WIDTH + MARGIN);
  488.        
  489.             if (x > x_tgt && x < (x_tgt + BLOCK_SIZE * FONT_WIDTH)) begin
  490.                 byte unsigned x_pos, y_pos;
  491.                
  492.                 x_pos = (x - x_tgt) / BLOCK_SIZE;
  493.                 y_pos = (y - OUTPUT_Y8) / BLOCK_SIZE;
  494.                
  495.                 case (i)
  496.                     0: dig = 13;
  497.                     1: dig = 13;
  498.                     2: dig = 13;
  499.                     3: dig = 8;
  500.                     4: dig = 8;
  501.                     5: dig = 8;
  502.                     6: dig = 13;
  503.                     7: dig = 13;
  504.                     8: dig = 13;
  505.                     9: dig = 13;
  506.                     10: dig = 13;
  507.                     11: dig = 13;
  508.                 endcase
  509.                
  510. #10 f = hahabier(dig, x_pos, y_pos);
  511. end
  512. end
  513. end
  514. end
  515.  
  516. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement