Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. /*****************************************************************************
  2. * *
  3. * Module: SRAM_Controller *
  4. * Description: *
  5. * This module is used for the SRAM controller for part II of the bus *
  6. * communication exercise in Altera's computer organization lab set. *
  7. * *
  8. * This module is a skeleton and must be completed as part of this exercise. *
  9. * *
  10. *****************************************************************************/
  11.  
  12. module SRAM_Controller (
  13. // Inputs
  14. clk_clk,
  15. reset_reset_n,
  16.  
  17. address,
  18. bus_enable,
  19. byte_enable,
  20. rw,
  21. write_data,
  22.  
  23. // Bidirectionals
  24. SRAM_DQ,
  25.  
  26. // Outputs
  27. acknowledge,
  28. read_data,
  29.  
  30. SRAM_ADDR,
  31.  
  32. SRAM_CE_N,
  33. SRAM_WE_N,
  34. SRAM_OE_N,
  35. SRAM_UB_N,
  36. SRAM_LB_N
  37. );
  38.  
  39. /*****************************************************************************
  40. * Port Declarations *
  41. *****************************************************************************/
  42.  
  43. // Inputs
  44. input clk_clk;
  45. input reset_reset_n;
  46.  
  47. input [19:0] address;
  48. input bus_enable;
  49. input [1:0] byte_enable;
  50. input rw;
  51. input [15:0] write_data;
  52.  
  53. // Bidirectionals
  54. inout [15:0] SRAM_DQ;
  55.  
  56. // Outputs
  57. output acknowledge;
  58. output [15:0] read_data;
  59.  
  60. output [17:0] SRAM_ADDR;
  61.  
  62. output SRAM_CE_N;
  63. output SRAM_WE_N;
  64. output SRAM_OE_N;
  65. output SRAM_UB_N;
  66. output SRAM_LB_N;
  67.  
  68. /*****************************************************************************
  69. * Combinational Logic *
  70. *****************************************************************************/
  71.  
  72. assign acknowledge = ~address[19] ? bus_enable : 1'bz;
  73. assign read_data = (~address[19] & rw) ? SRAM_DQ : {16{1'bz}};
  74.  
  75. assign SRAM_DQ = (~rw) ? write_data : {16{1'bz}} ; // tri-state logic allows SRAM to control DQ line during read
  76.  
  77. assign SRAM_ADDR = address[17:0];
  78.  
  79. assign SRAM_CE_N = ~(bus_enable & ~address[19]); /* active low; active when MSB=0 */
  80. assign SRAM_WE_N = ~(~rw & bus_enable); /* active low */
  81. assign SRAM_OE_N = ~(rw & bus_enable); /* active low */
  82. assign SRAM_UB_N = ~(byte_enable[1] & bus_enable);/* active low */
  83. assign SRAM_LB_N = ~(byte_enable[0] & bus_enable);/* active low */
  84.  
  85. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement