Advertisement
Guest User

Untitled

a guest
Jul 26th, 2019
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.88 KB | None | 0 0
  1. diff --git a/cores/usb/rtl/usb_ep_buf.v b/cores/usb/rtl/usb_ep_buf.v
  2. index 3743d13..229b47d 100644
  3. --- a/cores/usb/rtl/usb_ep_buf.v
  4. +++ b/cores/usb/rtl/usb_ep_buf.v
  5. @@ -46,6 +46,7 @@ module usb_ep_buf #(
  6.     input  wire wr_en_0,
  7.     input  wire wr_clk
  8.  );
  9. +`ifdef XXX
  10.     // MODE 0:  256 x 16
  11.     // MODE 1:  512 x 8
  12.     // MODE 2: 1024 x 4
  13. @@ -283,5 +284,55 @@ module usb_ep_buf #(
  14.                 assign ram_wdata = wr_data_0_ram[i*16+:16];
  15.         end
  16.     endgenerate
  17. +`else
  18. +
  19. +   reg [31:0] ram[0:512];
  20. +   reg [31:0] ram_rd;
  21. +   reg [1:0] rds;
  22. +   reg [7:0] rdm;
  23. +
  24. +   always @(posedge rd_clk)
  25. +   begin
  26. +       if (rd_en_0) begin
  27. +           if (RWIDTH == 32)
  28. +               ram_rd <= ram[rd_addr_0];
  29. +           else if (RWIDTH == 8)
  30. +               ram_rd <= ram[rd_addr_0[ARW-1:2]];
  31. +
  32. +           rds <= rd_addr_0[1:0];
  33. +       end
  34. +   end
  35. +
  36. +   always @(*)
  37. +       case (rds)
  38. +           2'b00: rdm <= ram_rd[ 7: 0];
  39. +           2'b01: rdm <= ram_rd[15: 8];
  40. +           2'b10: rdm <= ram_rd[23:16];
  41. +           2'b11: rdm <= ram_rd[31:24];
  42. +       endcase
  43. +
  44. +   assign rd_data_1 = (RWIDTH == 32) ? ram_rd : rdm;
  45. +
  46. +   always @(posedge wr_clk)
  47. +   begin
  48. +       if (wr_en_0) begin
  49. +           if (WWIDTH == 32) begin
  50. +               ram[wr_addr_0] <= wr_data_0;
  51. +           end else if (WWIDTH == 8) begin
  52. +               if (wr_addr_0[1:0] == 2'b00)
  53. +                   ram[wr_addr_0[AWW-1:2]][ 7: 0] <= wr_data_0;
  54. +
  55. +               if (wr_addr_0[1:0] == 2'b01)
  56. +                   ram[wr_addr_0[AWW-1:2]][15: 8] <= wr_data_0;
  57. +
  58. +               if (wr_addr_0[1:0] == 2'b10)
  59. +                   ram[wr_addr_0[AWW-1:2]][23:16] <= wr_data_0;
  60. +
  61. +               if (wr_addr_0[1:0] == 2'b11)
  62. +                   ram[wr_addr_0[AWW-1:2]][31:24] <= wr_data_0;
  63. +           end
  64. +       end
  65. +   end
  66.  
  67. +`endif
  68.  endmodule // usb_ep_buf
  69. diff --git a/cores/usb/rtl/usb_ep_status.v b/cores/usb/rtl/usb_ep_status.v
  70. index 5bad34a..28fb59b 100644
  71. --- a/cores/usb/rtl/usb_ep_status.v
  72. +++ b/cores/usb/rtl/usb_ep_status.v
  73. @@ -98,6 +98,7 @@ module usb_ep_status (
  74.             s_dout_3 <= s_zero_2 ? 16'h0000 : dout_2;
  75.  
  76.     // RAM element
  77. +`ifdef XXX
  78.     SB_RAM40_4K #(
  79.  `ifdef SIM
  80.         .INIT_FILE("usb_ep_status.hex"),
  81. @@ -117,5 +118,23 @@ module usb_ep_status (
  82.         .WCLKE(we_1),
  83.         .WE(1'b1)
  84.     );
  85. +`else
  86. +   reg [15:0] ram[0:255];
  87. +   reg [15:0] ram_rd;
  88. +
  89. +`ifdef SIM
  90. +   initial
  91. +       $readmemh("usb_ep_status.hex", ram);
  92. +`endif
  93. +
  94. +   always @(posedge clk)
  95. +   begin
  96. +       ram_rd <= ram[addr_1];
  97. +       if (we_1)
  98. +           ram[addr_1] <= din_1;
  99. +   end
  100. +
  101. +   assign dout_2 = ram_rd;
  102. +`endif
  103.  
  104.  endmodule // usb_ep_status
  105. diff --git a/cores/usb/rtl/usb_trans.v b/cores/usb/rtl/usb_trans.v
  106. index c4cae6c..8410bf8 100644
  107. --- a/cores/usb/rtl/usb_trans.v
  108. +++ b/cores/usb/rtl/usb_trans.v
  109. @@ -195,6 +195,7 @@ module usb_trans #(
  110.             mc_pc_nxt <= mc_pc + 1;
  111.  
  112.     // Microcode ROM
  113. +`ifdef XXX
  114.     SB_RAM40_4K #(
  115.         .INIT_FILE("usb_trans_mc.hex"),
  116.         .WRITE_MODE(0),
  117. @@ -212,6 +213,18 @@ module usb_trans #(
  118.         .WCLKE(1'b0),
  119.         .WE(1'b0)
  120.     );
  121. +`else
  122. +   reg [15:0] rom[0:255];
  123. +   reg [15:0] rom_rd;
  124. +
  125. +   initial
  126. +       $readmemh("usb_trans_mc.hex", rom);
  127. +
  128. +   always @(posedge clk)
  129. +       rom_rd <= rom[mc_pc];
  130. +
  131. +   assign mc_opcode = rom_rd;
  132. +`endif
  133.  
  134.     // Decode opcodes
  135.     assign mc_op_ld      = mc_opcode[15:12] == 4'b0001;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement