Advertisement
Guest User

Untitled

a guest
Jul 9th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module i2s_gray_counter  
  2. (
  3.     input clk,
  4.     input clear,
  5.     input direct_access,
  6.     input en,
  7.     output reg [COUNTER_WIDTH-1:0] gray_count_out    
  8. );
  9.  
  10. parameter COUNTER_WIDTH = 5;
  11.  
  12. // internal signals
  13. reg [COUNTER_WIDTH-1:0] binary_count;
  14.    
  15. always @(posedge clk or posedge direct_access or negedge rst_n) begin
  16.     if (clear) begin
  17.         binary_count <= {COUNTER_WIDTH{1'b0}} + 1;
  18.         gray_count_out <= {COUNTER_WIDTH{1'b0}};
  19.     end
  20.     else begin
  21.         if (direct_access | (clk & en)) begin
  22.             binary_count <= binary_count + 1;
  23.             gray_count_out <= {binary_count[COUNTER_WIDTH-1], binary_count[COUNTER_WIDTH-2:0] ^ binary_count[COUNTER_WIDTH-1:1]};
  24.         end
  25.     end
  26. end
  27.    
  28. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement