Advertisement
Guest User

GfxCruncher

a guest
Sep 26th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Pixel -- X,Y,Color (19)
  2. // Line -- X1, X2, Y1, Y2, Color (35)
  3. // Triangle -- X1, X2, X3, Y1, Y2, Y3, Color, Fill (54)
  4. // Rectangle -- X1, X2, X3, X4, Y1, Y2, Y3, Y4, Color, Fill (70)
  5.  
  6. #define PIXEL     2'b00
  7. #define LINE      2'b01
  8. #define TRIANGLE  2'b10
  9. #define RECTANGLE 2'b11
  10.  
  11. #define MAGENTA 3'b101
  12.  
  13. module GfxCruncher (
  14.     input [1:0] type,
  15.     input [69:0] data,
  16.     input ce,
  17.     output reg [7:0] row, column,
  18.     output reg [2:0] pixel
  19.     );
  20.  
  21.     integer r, c;
  22.  
  23.     always @ (type or data) begin
  24.         if (ce) begin
  25.             case (type)
  26.                 PIXEL: begin
  27.                     row = data[7:0];
  28.                     column = data[15:8];
  29.                     pixel = data[18:16];
  30.                 end
  31.                 LINE: begin
  32.                     pixel = data[34:32];
  33.                     if (data[23:16] ) begin
  34.                         for (r = data[23:16]; r <= data[31:24]; r = r + 1) begin
  35.                             row = r;
  36.                             for (c = data[7:0]; c <= data[15:8]; c = c + 1) begin
  37.                                 column = c;
  38.                             end
  39.                         end
  40.                     end
  41.                 end
  42.                 TRIANGLE:;
  43.                 RECTANGLE:;
  44.                 default: begin
  45.                     row = 8'b0;
  46.                     column = 8'b0;
  47.                     pixel = MAGENTA;
  48.                 end
  49.             endcase
  50.         end
  51.     end
  52.  
  53. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement