Advertisement
Guest User

Untitled

a guest
Aug 24th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 24.08.2018 16:25:38
  7. // Design Name:
  8. // Module Name: dith_simple
  9. // Project Name:
  10. // Target Devices:
  11. // Tool Versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21.  
  22.  
  23. module dith_simple #(parameter n=8)(
  24.     input [3*n-1:0] colour_data,
  25.     input [1:0] countx,     //  posicion x en la matriz
  26.     input [1:0] county,     //  posicion y en la matriz
  27.     input SW,
  28.     output [11:0] VGA_DIT
  29.     );
  30.    
  31.     logic [5:0][7:0]M_1;
  32.     logic [5:0][7:0]M_2;
  33.     logic [5:0][7:0]M_3;
  34.     logic [5:0][7:0]M_4;
  35.    
  36.    
  37.     logic [n-1:0] red, blue, green;
  38.     logic [3:0] out_red, out_blue, out_green;
  39.    
  40.     logic [3:0] m_value;
  41.    
  42.     assign {red, blue, green} = colour_data;
  43.     assign VGA_DIT = {out_red, out_blue, out_green};
  44.    
  45.     initial begin            // cambiar a always_ff si no funciona
  46.         M_1 = '{'d0, 'd8, 'd2, 'd10};
  47.         M_2 = '{'d12, 'd4, 'd14, 'd6};
  48.         M_3 = '{'d3, 'd11, 'd1, 'd9};
  49.         M_4 = '{'d15, 'd13, 'd7, 'd5};
  50.     end
  51.    
  52.    
  53.  
  54.     always_comb begin
  55.         case (county)                       //rescata el valor del mapa de threshold
  56.             'd0:
  57.                 m_value = M_1[countx];
  58.             'd1:
  59.                 m_value = M_2[countx];
  60.             'd2:
  61.                 m_value = M_3[countx];
  62.             'd3:
  63.                 m_value = M_4[countx];
  64.          endcase    
  65.            
  66.         if (SW) begin
  67.             if (red == 'd256)
  68.                 out_red = red[n-1:n-4];
  69.             if (blue == 'd256)
  70.                 out_blue = blue[n-1:n-4];
  71.             if (green == 'd256)
  72.                 out_green = green[n-1:n-4];
  73.             else begin
  74.             out_red = (red[n-5:n-8] > m_value)?(red[n-1:n-4]+'d1):red[n-1:n-4];    //canales redondeados a 4 bits por color
  75.             out_blue = (blue[n-5:n-8] > m_value)?(blue[n-1:n-4]+'d1):blue[n-1:n-4];
  76.             out_green = (green[n-5:n-8] > m_value)?(green[n-1:n-4]+'d1):green[n-1:n-4];
  77.             end
  78.         end else begin
  79.             out_red = red[n-1:n-4];
  80.             out_blue = blue[n-1:n-4];
  81.             out_green = green[n-1:n-4];
  82.         end
  83.     end
  84.    
  85. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement