daily pastebin goal
30%
SHARE
TWEET

rom_wb

tsuckow Mar 13th, 2011 84 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module rom_wb
  2. #(
  3.         parameter data_width = 8,
  4.         parameter addr_width = 8
  5. )
  6. (
  7.         dat_i,
  8.         dat_o,
  9.         adr_i,
  10.         we_i,
  11.         sel_i,
  12.         cyc_i,
  13.         stb_i,
  14.         ack_o,
  15.         cti_i,
  16.         clk_i,
  17.         rst_i
  18. );
  19.    
  20. // wishbone signals
  21. input      [data_width-1:0] dat_i;  
  22. output     [data_width-1:0] dat_o;
  23. input      [addr_width-1:0] adr_i;
  24. input                       we_i;
  25. input      [3:0]            sel_i;
  26. input                       cyc_i;
  27. input                       stb_i;
  28. output reg                  ack_o;
  29. input      [2:0]            cti_i;
  30.  
  31. input clk_i; // clock
  32. input rst_i; // async reset
  33.  
  34. InferableROM
  35. #(
  36.         .data_width (data_width),
  37.         .addr_width (addr_width-2)
  38. )
  39. myROM
  40. (
  41.         .q_a    (dat_o),
  42.         .addr_a (adr_i[addr_width-1:2]),
  43.         .clk    (clk_i)
  44. );
  45.  
  46. // ack_o
  47. always @ (posedge clk_i or posedge rst_i)
  48. if (rst_i)
  49.         ack_o <= 1'b0;
  50. else
  51.         if (!ack_o)
  52.         begin
  53.                 if (cyc_i & stb_i)
  54.                         ack_o <= 1'b1;
  55.         end  
  56.         else if ((sel_i != 4'b1111) | (cti_i == 3'b000) | (cti_i == 3'b111))
  57.                 ack_o <= 1'b0;
  58.          
  59. endmodule
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top