Advertisement
Guest User

Untitled

a guest
Apr 8th, 2014
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module wb_next_adr
  2.   #(parameter aw = 32)
  3.   (input [aw-1:0] addr_i,
  4.    input [2:0]     cti_i,
  5.    input [1:0]     bte_i,
  6.    output [aw-1:0] addr_o);
  7.  
  8. `include "wb_bfm_params.v"  
  9.  
  10.    assign addr_o = next_adr(addr_i, cti_i, bte_i);
  11.    
  12.    function [aw-1:0] next_adr;
  13.       input [aw-1:0] addr_i;
  14.       input [2:0]    cti_i;
  15.       input [1:0]    bte_i;
  16.       begin
  17.      if(cti_i == 3'b010)
  18.        case (bte_i)
  19.          LINEAR_BURST  : next_adr = addr_i + 4;
  20.          WRAP_4_BURST  : next_adr = {addr_i[aw-1:4], addr_i[3:0]+4'd4};
  21.          WRAP_8_BURST  : next_adr = {addr_i[aw-1:5], addr_i[4:0]+5'd4};
  22.          WRAP_16_BURST : next_adr = {addr_i[aw-1:6], addr_i[5:0]+6'd4};
  23.        endcase
  24.      else
  25.     next_adr = addr_i;
  26.      //default : $error("%d : Illegal burst type (%b)", $time, burst_type_i);
  27.       end
  28.    endfunction
  29. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement