xadc_bram.v 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. `timescale 1 ns / 1 ps
  2. module xadc_bram
  3. (
  4. // XADC inputs
  5. (* X_INTERFACE_INFO = "xilinx.com:interface:diff_analog_io:1.0 Vp_Vn V_P" *)
  6. input wire Vp_Vn_p,
  7. (* X_INTERFACE_INFO = "xilinx.com:interface:diff_analog_io:1.0 Vp_Vn V_N" *)
  8. input wire Vp_Vn_n,
  9. (* X_INTERFACE_INFO = "xilinx.com:interface:diff_analog_io:1.0 Vaux0 V_P" *)
  10. input wire Vaux0_p,
  11. (* X_INTERFACE_INFO = "xilinx.com:interface:diff_analog_io:1.0 Vaux0 V_N" *)
  12. input wire Vaux0_n,
  13. (* X_INTERFACE_INFO = "xilinx.com:interface:diff_analog_io:1.0 Vaux1 V_P" *)
  14. input wire Vaux1_p,
  15. (* X_INTERFACE_INFO = "xilinx.com:interface:diff_analog_io:1.0 Vaux1 V_N" *)
  16. input wire Vaux1_n,
  17. (* X_INTERFACE_INFO = "xilinx.com:interface:diff_analog_io:1.0 Vaux8 V_P" *)
  18. input wire Vaux8_p,
  19. (* X_INTERFACE_INFO = "xilinx.com:interface:diff_analog_io:1.0 Vaux8 V_N" *)
  20. input wire Vaux8_n,
  21. (* X_INTERFACE_INFO = "xilinx.com:interface:diff_analog_io:1.0 Vaux9 V_P" *)
  22. input wire Vaux9_p,
  23. (* X_INTERFACE_INFO = "xilinx.com:interface:diff_analog_io:1.0 Vaux9 V_N" *)
  24. input wire Vaux9_n,
  25. // BRAM port
  26. (* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 b_bram CLK" *)
  27. input wire b_bram_clk,
  28. (* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 b_bram RST" *)
  29. input wire b_bram_rst,
  30. (* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 b_bram EN" *)
  31. input wire b_bram_en,
  32. (* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 b_bram ADDR" *)
  33. input wire [4:0] b_bram_addr,
  34. (* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 b_bram DOUT" *)
  35. output wire [15:0] b_bram_rdata
  36. );
  37. wire [15:0] int_data_wire;
  38. wire [4:0] int_addr_wire;
  39. wire int_eoc_wire, int_we_wire;
  40. XADC #(
  41. .INIT_40(16'h0000),
  42. .INIT_41(16'h8100),
  43. .INIT_42(16'h1900),
  44. .INIT_48(16'h0800),
  45. .INIT_49(16'h0303),
  46. .INIT_4A(16'h0000),
  47. .INIT_4B(16'h0000),
  48. .INIT_4C(16'h0000),
  49. .INIT_4D(16'h0000),
  50. .INIT_4E(16'h0000),
  51. .INIT_4F(16'h0000),
  52. .INIT_50(16'hb5ed),
  53. .INIT_51(16'h57e4),
  54. .INIT_52(16'ha147),
  55. .INIT_53(16'hca33),
  56. .INIT_54(16'ha93a),
  57. .INIT_55(16'h52c6),
  58. .INIT_56(16'h9555),
  59. .INIT_57(16'hae4e),
  60. .INIT_58(16'h5999),
  61. .INIT_5C(16'h5111),
  62. .INIT_59(16'h5555),
  63. .INIT_5D(16'h5111),
  64. .INIT_5A(16'h9999),
  65. .INIT_5E(16'h91eb),
  66. .INIT_5B(16'h6aaa),
  67. .INIT_5F(16'h6666)
  68. ) xadc_0 (
  69. .DCLK(b_bram_clk),
  70. .RESET(b_bram_rst),
  71. .DEN(int_eoc_wire),
  72. .DADDR({2'd0, int_addr_wire}),
  73. .CHANNEL(int_addr_wire),
  74. .DO(int_data_wire),
  75. .DRDY(int_we_wire),
  76. .EOC(int_eoc_wire),
  77. .VN(Vp_Vn_n),
  78. .VP(Vp_Vn_p),
  79. .VAUXN({6'd0,Vaux9_n,Vaux8_n,6'd0,Vaux1_n,Vaux0_n}),
  80. .VAUXP({6'd0,Vaux9_p,Vaux8_p,6'd0,Vaux1_p,Vaux0_p})
  81. );
  82. xpm_memory_dpdistram #(
  83. .ADDR_WIDTH_A(5),
  84. .ADDR_WIDTH_B(5),
  85. .MEMORY_SIZE(512),
  86. .BYTE_WRITE_WIDTH_A(16),
  87. .WRITE_DATA_WIDTH_A(16),
  88. .READ_DATA_WIDTH_A(16),
  89. .READ_DATA_WIDTH_B(16),
  90. .READ_LATENCY_A(1),
  91. .READ_LATENCY_B(1)
  92. ) ram_0 (
  93. .clka(b_bram_clk),
  94. .rsta(b_bram_rst),
  95. .rstb(b_bram_rst),
  96. .addra(int_addr_wire),
  97. .dina(int_data_wire),
  98. .ena(int_we_wire),
  99. .wea(int_we_wire),
  100. .regcea(1'b0),
  101. .addrb(b_bram_addr),
  102. .doutb(b_bram_rdata),
  103. .enb(b_bram_en),
  104. .regceb(b_bram_en)
  105. );
  106. endmodule