Advertisement
Guest User

Untitled

a guest
May 9th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. input [3:0] remote_full_flags;
  2. input [3:0] local_full_flags;
  3.  
  4. wire [7:0] full_flags;
  5. assign full_flags = {remote_full_flags, local_full_flags};
  6.  
  7. reg [2:0] leading_ones;
  8.  
  9. always @(*) begin
  10.     casez(full_flags << addr) begin
  11.         8'b0???????: leading_ones = 0;
  12.         8'b10??????: leading_ones = 1;
  13.         8'b110?????: leading_ones = 2;
  14.         8'b1110????: leading_ones = 3;
  15.         8'b11110???: leading_ones = 4;
  16.         8'b111110??: leading_ones = 5;
  17.         8'b1111110?: leading_ones = 6;
  18.         8'b11111110: leading_ones = 7;
  19.         8'b11111111: begin
  20.             leading_ones = 0;
  21.             all_full = 1;
  22.         end
  23.     endcase
  24. end
  25.  
  26. reg [1:0] addr;
  27.  
  28. initial
  29.     addr = 2'b00;
  30.  
  31. always@(posedge clk) begin
  32.   if (all_full)
  33.     addr <= addr + 1 + leading_ones;
  34. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement