You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
3.1 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. `include "config.v"
  2. module spi_reg_bus (
  3. input clk, //clock input
  4. input rst_n, //asynchronous reset input, low active
  5. //regbus interface
  6. output [31:0] addr,
  7. output [31:0] wr_data,
  8. output wr_en,
  9. //
  10. input wire spi_cs_pin, //
  11. input wire spi_clk_pin, //
  12. input wire spi_rx_pin, //
  13. output wire spi_tx_pin,
  14. input [31:0] rd_data_module_fpga_info,
  15. input [31:0] rd_data_module_ttlin,
  16. input [31:0] rd_data_module_timecode_in,
  17. input [31:0] rd_data_module_genlock_in,
  18. input [31:0] rd_data_module_internal_timecode,
  19. input [31:0] rd_data_module_internal_genlock,
  20. input [31:0] rd_data_module_internal_clock,
  21. input [31:0] rd_data_module_ttlout1,
  22. input [31:0] rd_data_module_ttlout2,
  23. input [31:0] rd_data_module_ttlout3,
  24. input [31:0] rd_data_module_ttlout4,
  25. input [31:0] rd_data_module_timecode_out,
  26. input [31:0] rd_data_module_genlock_out,
  27. input [31:0] rd_data_module_camera_sync_out,
  28. input [31:0] rd_data_module_sys_timecode,
  29. input [31:0] rd_data_module_sys_genlock,
  30. input [31:0] rd_data_module_sys_clock,
  31. input [31:0] rd_data_module_record_sig_generator
  32. );
  33. reg [31:0] rd_data;
  34. spi_reg_reader spi_reg_reader_inst (
  35. .clk (clk),
  36. .rst_n (rst_n),
  37. .addr (addr),
  38. .wr_data (wr_data),
  39. .wr_en (wr_en),
  40. .rd_data (rd_data),
  41. .spi_cs_pin (spi_cs_pin),
  42. .spi_clk_pin(spi_clk_pin),
  43. .spi_rx_pin (spi_rx_pin),
  44. .spi_tx_pin (spi_tx_pin)
  45. );
  46. // 数据路由
  47. wire [31:0] addr_group;
  48. assign addr_group = addr & 31'hFFFF_FFF0;
  49. always @(*) begin
  50. case (addr_group)
  51. `REGADDOFF__FPGA_INFO: rd_data <= rd_data_module_fpga_info;
  52. `REGADDOFF__TTLIN: rd_data <= rd_data_module_ttlin;
  53. `REGADDOFF__TIMECODE_IN: rd_data <= rd_data_module_timecode_in;
  54. `REGADDOFF__GENLOCK_IN: rd_data <= rd_data_module_genlock_in;
  55. `REGADDOFF__INTERNAL_TIMECODE: rd_data <= rd_data_module_internal_timecode;
  56. `REGADDOFF__INTERNAL_GENLOCK: rd_data <= rd_data_module_internal_genlock;
  57. `REGADDOFF__INTERNAL_CLOCK: rd_data <= rd_data_module_internal_clock;
  58. `REGADDOFF__TTLOUT1: rd_data <= rd_data_module_ttlout1;
  59. `REGADDOFF__TTLOUT2: rd_data <= rd_data_module_ttlout2;
  60. `REGADDOFF__TTLOUT3: rd_data <= rd_data_module_ttlout3;
  61. `REGADDOFF__TTLOUT4: rd_data <= rd_data_module_ttlout4;
  62. `REGADDOFF__TIMECODE_OUT: rd_data <= rd_data_module_timecode_out;
  63. `REGADDOFF__GENLOCK_OUT: rd_data <= rd_data_module_genlock_out;
  64. `REGADDOFF__CAMERA_SYNC_OUT: rd_data <= rd_data_module_camera_sync_out;
  65. `REGADDOFF__SYS_TIMECODE: rd_data <= rd_data_module_sys_timecode;
  66. `REGADDOFF__SYS_GENLOCK: rd_data <= rd_data_module_sys_genlock;
  67. `REGADDOFF__SYS_CLOCK: rd_data <= rd_data_module_sys_clock;
  68. `REGADDOFF__RECORD_SIG_GENERATOR: rd_data <= rd_data_module_record_sig_generator;
  69. default: rd_data <= 0;
  70. endcase
  71. end
  72. endmodule