diff --git a/src/board.cpp b/src/board.cpp index 19cf25b6eeadc5495f64a6830650746fecea5418..5a449356201e7a42ba8a69d1bf3508a6e145b11f 100644 --- a/src/board.cpp +++ b/src/board.cpp @@ -93,12 +93,6 @@ vector<int> Board::get_nodes(void) return nodes; } -CPointMap * Board::get_RegisterMap(int node) -{ - auto n = select_node(node); - return n->get_RegisterMap(); -} - bool Board::monitor(TermOutput& termout) { // cout << "board_monitor start" << endl; diff --git a/src/board.h b/src/board.h index f9b8648e534ac0b49b485dec97ddb6c7773cb9bf..e8caec456fcb9b02ad252da906b5b2e4e1952611 100644 --- a/src/board.h +++ b/src/board.h @@ -66,7 +66,6 @@ public: std::vector<int> unb_pn__to__nodes(std::vector<int> unbs, std::vector<int> pns); uint ipaddr_to_id(const std::string ipaddr); - CPointMap * get_RegisterMap(int node); std::string string_node_id(int node); diff --git a/src/constants.h b/src/constants.h index cf60b6a4006f107d1970bd643c4b4958640d92e1..fbc39cc04cb0bd3581a00ffd7807693b4fc9ebf6 100644 --- a/src/constants.h +++ b/src/constants.h @@ -47,5 +47,10 @@ #define C_N_beamsets 2 #define C_N_step 1 #define C_N_crosslets_max 7 +#define C_N_scrap 512 // Number of 32 bit words in FPGA scrap memory. +#define C_N_pol 2 // Number of antenna polarizations, X and Y. +#define C_A_pn 6 // Number of dual polarization antennas per Processing Node (PN) FPGA. +#define C_N_beamlets 976 // Number of beamlets per antenna band 488, 976 + #endif diff --git a/src/fpga.cpp b/src/fpga.cpp index 65c122ad21f89037d614d7791d78410922b550b4..6bbaae2cf874d494bec4e3bc0f200607dd0f58fd 100644 --- a/src/fpga.cpp +++ b/src/fpga.cpp @@ -58,7 +58,7 @@ Fpga::Fpga(list<class Node*>& nodelist) pointMap->add_register("FPGA_mask_RW", "fpga/enable_mask", nodes.size(), 1, "RW", REG_FORMAT_BOOLEAN); pointMap->add_register("FPGA_status_R", "fpga/status", nodes.size(), 1, "RO", REG_FORMAT_BOOLEAN); pointMap->add_register("FPGA_temp_R", "fpga/temp", nodes.size(), 1, "RO", REG_FORMAT_DOUBLE); - pointMap->add_register("FPGA_version_R", "fpga/name", nodes.size(), 1, "RO", REG_FORMAT_STRING); + // pointMap->add_register("FPGA_version_R", "fpga/name", nodes.size(), 1, "RO", REG_FORMAT_STRING); pointMap->add_register("FPGA_firmware_version_R", "fpga/firmware_version", nodes.size(), 1, "RO", REG_FORMAT_STRING); pointMap->add_register("FPGA_hardware_version_R", "fpga/hardware_version", nodes.size(), 1, "RO", REG_FORMAT_STRING); @@ -128,8 +128,8 @@ Fpga::Fpga(list<class Node*>& nodelist) pointMap->add_register("FPGA_jesd204b_csr_rbd_count_R", "fpga/jesd204b_csr_rbd_count", nodes.size(), C_S_pn, "RO", REG_FORMAT_UINT32); pointMap->add_register("FPGA_jesd204b_csr_dev_syncn_R", "fpga/jesd204b_csr_dev_syncn", nodes.size(), C_S_pn, "RO", REG_FORMAT_UINT32); - pointMap->add_register("FPGA_jesd204b_rx_err0_R", "fpga/jesd204b_csr_rx_err0", nodes.size(), C_S_pn, "RO", REG_FORMAT_UINT32); - pointMap->add_register("FPGA_jesd204b_rx_err1_R", "fpga/jesd204b_csr_rx_err1", nodes.size(), C_S_pn, "RO", REG_FORMAT_UINT32); + pointMap->add_register("FPGA_jesd204b_rx_err0_R", "fpga/jesd204b_rx_err0", nodes.size(), C_S_pn, "RO", REG_FORMAT_UINT32); + pointMap->add_register("FPGA_jesd204b_rx_err1_R", "fpga/jesd204b_rx_err1", nodes.size(), C_S_pn, "RO", REG_FORMAT_UINT32); pointMap->add_register("FPGA_signal_input_samples_delay_R", "fpga/signal_input_samples_delay", nodes.size(), C_S_pn, "RO", REG_FORMAT_UINT32); pointMap->add_register("FPGA_signal_input_samples_delay_RW", "fpga/signal_input_samples_delay", nodes.size(), C_S_pn, "RW", REG_FORMAT_UINT32); @@ -137,37 +137,11 @@ Fpga::Fpga(list<class Node*>& nodelist) pointMap->add_register("FPGA_subband_weights_R", "fpga/subband_weights", nodes.size(), C_S_pn*C_N_sub, "RO", REG_FORMAT_UINT32); pointMap->add_register("FPGA_subband_weights_RW", "fpga/subband_weights", nodes.size(), C_S_pn*C_N_sub, "RW", REG_FORMAT_UINT32); - uint32_t scrap_span = 0; - uint32_t scrap_span_next = 0; - uint32_t scrap_span_prev = 0; - for (uint idx=0; idx<nodes.size(); idx++) { - auto node = select_node(nodes[idx]); - CPointMap *regmap = node->get_RegisterMap(); - scrap_span_next = regmap->getDataSize("fpga/scrap"); - if (scrap_span_next > scrap_span_prev) { - scrap_span = scrap_span_next; - } - scrap_span_prev = scrap_span_next; - } - cout << "scrap_span=" << scrap_span << endl; - pointMap->add_register("FPGA_scrap_R", "fpga/scrap", nodes.size(), scrap_span, "RO", REG_FORMAT_UINT32); - pointMap->add_register("FPGA_scrap_RW", "fpga/scrap", nodes.size(), scrap_span, "RW", REG_FORMAT_UINT32); + pointMap->add_register("FPGA_scrap_R", "fpga/scrap", nodes.size(), C_N_scrap, "RO", REG_FORMAT_UINT32); + pointMap->add_register("FPGA_scrap_RW", "fpga/scrap", nodes.size(), C_N_scrap, "RW", REG_FORMAT_UINT32); - uint32_t weights_span = 0; - uint32_t weights_span_next = 0; - uint32_t weights_span_prev = 0; - for (uint idx=0; idx<nodes.size(); idx++) { - auto node = select_node(nodes[idx]); - CPointMap *regmap = node->get_RegisterMap(); - weights_span_next = regmap->getDataSize("fpga/weights"); - if (weights_span_next > weights_span_prev) { - weights_span = weights_span_next; - } - weights_span_prev = weights_span_next; - } - cout << "weights_span=" << weights_span << endl; - pointMap->add_register("FPGA_weights_R", "fpga/weights", nodes.size(), weights_span, "RO", REG_FORMAT_INT16); - pointMap->add_register("FPGA_weights_RW", "fpga/weights", nodes.size(), weights_span, "RW", REG_FORMAT_INT16); + pointMap->add_register("FPGA_weights_R", "fpga/weights", nodes.size(), C_S_pn*C_N_beamlets, "RO", REG_FORMAT_INT16); + pointMap->add_register("FPGA_weights_RW", "fpga/weights", nodes.size(), C_S_pn*C_N_beamlets, "RW", REG_FORMAT_INT16); } Fpga::~Fpga() @@ -242,6 +216,7 @@ bool Fpga::point(TermOutput& termout, const char cmd, const string addr, } int format = pointMap->getFormat(addr); + int nof_values = pointMap->getDataSize(addr); vector<int> nodes = get_all_nodes(); @@ -251,7 +226,7 @@ bool Fpga::point(TermOutput& termout, const char cmd, const string addr, retval = true; } else if (cmd == 'W') { - if (nvalues < (int)pointMap->getDataSize(addr)) { + if (nvalues < nof_values) { return false; } retval = true; @@ -263,13 +238,6 @@ bool Fpga::point(TermOutput& termout, const char cmd, const string addr, auto node = select_node(nodes[idx]); // if (node->getEnabled() == false) { continue; } - CPointMap *regmap = node->get_RegisterMap(); - int span = regmap->getDataSize(relative_addr); - - int nof_values = nvalues; - if (nvalues < 0 || nvalues > span) { - nof_values = span; - } ret = false; try { diff --git a/src/node.cpp b/src/node.cpp index f2dadc60ad4808843ffed6acd37d6f05ae13394e..26d4bc173b7e121a5c684931a0175715bc8e52eb 100644 --- a/src/node.cpp +++ b/src/node.cpp @@ -142,42 +142,7 @@ void Node::worker() // cout << " r.format=" << r.datatype << endl; // cout << " p.cmd=" << p->cmdId << endl; - int sz = 0; - switch (r.datatype) { - case REG_FORMAT_FLOAT: { - sz = sizeof(float); - } break; - case REG_FORMAT_DOUBLE: { - sz = sizeof(double); - } break; - case REG_FORMAT_INT64: { - sz = sizeof(int64_t); - } break; - case REG_FORMAT_UINT64: { - sz = sizeof(uint64_t); - } break; - case REG_FORMAT_INT32: { - sz = sizeof(int32_t); - } break; - case REG_FORMAT_UINT32: { - sz = sizeof(uint32_t); - } break; - case REG_FORMAT_INT16: { - sz = sizeof(int16_t); - } break; - case REG_FORMAT_UINT16: { - sz = sizeof(uint16_t); - } break; - case REG_FORMAT_STRING: { - sz = sizeof(char) * SIZE1STRING; - } break; - case REG_FORMAT_BOOLEAN: { - sz = sizeof(bool); - } break; - default: { - // cout << "node-r177, Not supported datatype (" << r.datatype << ")" << endl; - } break; - } + int sz = reg_format_size_in_bytes(r.datatype); memcpy((void *)r.val, (void *)termout.val, termout.nof_vals * sz); @@ -263,12 +228,6 @@ bool Node::monitor(TermOutput& termout) { return true; } - -CPointMap * Node::get_RegisterMap(void) -{ - return periph_fpga->getRegisterMap(); -} - CMMap * Node::get_MMap(void) { return periph_fpga->getMMap(); @@ -333,43 +292,7 @@ bool Node::exec_reply(TermOutput& termout) //cout << "no retval" << endl; throw runtime_error("no retval"); } - int sz = 0; - - switch (r->datatype) { - case REG_FORMAT_DOUBLE: { - sz = sizeof(double); - } break; - case REG_FORMAT_FLOAT: { - sz = sizeof(float); - } break; - case REG_FORMAT_INT64: { - sz = sizeof(int64_t); - } break; - case REG_FORMAT_UINT64: { - sz = sizeof(uint64_t); - } break; - case REG_FORMAT_INT32: { - sz = sizeof(int32_t); - } break; - case REG_FORMAT_UINT32: { - sz = sizeof(uint32_t); - } break; - case REG_FORMAT_INT16: { - sz = sizeof(int16_t); - } break; - case REG_FORMAT_UINT16: { - sz = sizeof(uint16_t); - } break; - case REG_FORMAT_BOOLEAN: { - sz = sizeof(bool); - } break; - case REG_FORMAT_STRING: { - sz = sizeof(char) * SIZE1STRING; - } break; - default: { - // cout << "node-r400, Not supported datatype (" << r->datatype << ")" << endl; - } break; - } + int sz = reg_format_size_in_bytes(r->datatype); memcpy((void *)termout.val, (void *)r->val, r->nof_vals * sz); return r->retval; } diff --git a/src/node.h b/src/node.h index dabb5799e569f53df09e4e0ca749193e430ffca5..52ce52b8b364a2bf0bff15f8a5fce39ffc4bc678 100644 --- a/src/node.h +++ b/src/node.h @@ -101,7 +101,6 @@ class Node { const int nvalues, const int format); bool exec_reply(TermOutput& t); - CPointMap * get_RegisterMap(void); CMMap * get_MMap(void); }; diff --git a/src/periph/fpga.cpp b/src/periph/fpga.cpp index 1d354e9c5f15867047340cb911405e362b2b5d08..e49bed6b40e68204c6a78da092ec0d31bdae98fb 100644 --- a/src/periph/fpga.cpp +++ b/src/periph/fpga.cpp @@ -86,82 +86,6 @@ Periph_fpga::Periph_fpga(string ipaddr, string expected_design_name, uint expect mmap = new CMMap(); } - registerMap = new CPointMap(); - registerMap->add_register("fpga/system", "-", 0, 1, "RO", REG_FORMAT_STRING); - registerMap->add_register("fpga/name", "-", 1, 1, "RO", REG_FORMAT_STRING); - registerMap->add_register("fpga/stamps", "-", 0, 1, "RO", REG_FORMAT_STRING); - registerMap->add_register("fpga/note", "-", 0, 1, "RO", REG_FORMAT_STRING); - registerMap->add_register("fpga/firmware_version", "-", 0, 1, "RO", REG_FORMAT_STRING); - registerMap->add_register("fpga/hardware_version", "-", 0, 1, "RO", REG_FORMAT_STRING); - registerMap->add_register("fpga/temp", "-", 1, 1, "RO", REG_FORMAT_DOUBLE); - registerMap->add_register("fpga/status", "-", 1, 1, "RO", REG_FORMAT_STRING); - registerMap->add_register("fpga/enable_mask", "-", 1, 1, "RW", REG_FORMAT_BOOLEAN); - registerMap->add_register("fpga/rbf", "-", 0, 1, "RW", REG_FORMAT_STRING); - registerMap->add_register("fpga/flash_init", "-", 0, 1, "WO", REG_FORMAT_STRING); - registerMap->add_register("fpga/flash_erase", "-", 0, 1, "WO", REG_FORMAT_STRING); - registerMap->add_register("fpga/flash_pages", "-", 0, 1, "WO", REG_FORMAT_STRING); - registerMap->add_register("fpga/flash_page", "-", 0, 1, "WO", REG_FORMAT_STRING); - registerMap->add_register("fpga/flash_prot", "-", 0, 1, "WO", REG_FORMAT_STRING); - registerMap->add_register("fpga/epcs_wait_busy", "-", 0, 1, "RO", REG_FORMAT_STRING); - registerMap->add_register("fpga/epcs_mmdp_data", "-", 0, 1, "WO", REG_FORMAT_STRING); - - uint32_t scrap_span = mmap->getSpan("mm/0/RAM_SCRAP/0/data"); - registerMap->add_register("fpga/scrap", "-", 1, scrap_span, "RW", REG_FORMAT_UINT32); - - uint32_t weights_span = (187392 / 16); // = 11712 - registerMap->add_register("fpga/weights", "-", 1, weights_span, "RW", REG_FORMAT_INT16); - - registerMap->add_register("fpga/processing_enable", "-", 1, 1, "RW", REG_FORMAT_BOOLEAN); - registerMap->add_register("fpga/sst_offload_weighted_subbands", "-", 1, 1, "RW", REG_FORMAT_BOOLEAN); - registerMap->add_register("fpga/sst_offload_enable", "-", 1, 1, "RW", REG_FORMAT_BOOLEAN); - registerMap->add_register("fpga/sst_offload_hdr_eth_destination_mac", "-", 1, 1, "RW", REG_FORMAT_STRING); - registerMap->add_register("fpga/sst_offload_hdr_ip_destination_address", "-", 1, 1, "RW", REG_FORMAT_STRING); - registerMap->add_register("fpga/sst_offload_hdr_udp_destination_port", "-", 1, 1, "RW", REG_FORMAT_UINT16); - - registerMap->add_register("fpga/bst_offload_enable", "-", 1, 2, "RW", REG_FORMAT_BOOLEAN); - registerMap->add_register("fpga/bst_offload_hdr_eth_destination_mac", "-", 1, 2, "RW", REG_FORMAT_STRING); - registerMap->add_register("fpga/bst_offload_hdr_ip_destination_address", "-", 1, 2, "RW", REG_FORMAT_STRING); - registerMap->add_register("fpga/bst_offload_hdr_udp_destination_port", "-", 1, 2, "RW", REG_FORMAT_UINT16); - registerMap->add_register("fpga/bst_offload_nof_beamlets_per_packet", "-", 1, 2, "RW", REG_FORMAT_UINT32); - - registerMap->add_register("fpga/xst_subband_select", "-", 1, 1+C_N_crosslets_max, "RW", REG_FORMAT_UINT32); - registerMap->add_register("fpga/xst_integration_interval", "-", 1, 1, "RW", REG_FORMAT_DOUBLE); - registerMap->add_register("fpga/xst_processing_enable", "-", 1, 1, "RW", REG_FORMAT_BOOLEAN); - registerMap->add_register("fpga/xst_offload_enable", "-", 1, 1, "RW", REG_FORMAT_BOOLEAN); - registerMap->add_register("fpga/xst_offload_hdr_eth_destination_mac", "-", 1, 1, "RW", REG_FORMAT_STRING); - registerMap->add_register("fpga/xst_offload_hdr_ip_destination_address", "-", 1, 1, "RW", REG_FORMAT_STRING); - registerMap->add_register("fpga/xst_offload_hdr_udp_destination_port", "-", 1, 1, "RW", REG_FORMAT_UINT16); - - registerMap->add_register("fpga/sdp_info_station_id", "-", 1, 1, "RW", REG_FORMAT_UINT32); - registerMap->add_register("fpga/sdp_info_observation_id", "-", 1, 1, "RW", REG_FORMAT_UINT32); - registerMap->add_register("fpga/sdp_info_nyquist_sampling_zone_index", "-", 1, 1, "RW", REG_FORMAT_UINT32); - registerMap->add_register("fpga/sdp_info_antenna_band_index", "-", 1, 1, "RO", REG_FORMAT_UINT32); - registerMap->add_register("fpga/sdp_info_f_adc", "-", 1, 1, "RO", REG_FORMAT_UINT32); - registerMap->add_register("fpga/sdp_info_fsub_type", "-", 1, 1, "RO", REG_FORMAT_UINT32); - registerMap->add_register("fpga/sdp_info_block_period", "-", 1, 1, "RO", REG_FORMAT_UINT32); - - registerMap->add_register("fpga/wg_enable", "-", 1, 12, "RW", REG_FORMAT_BOOLEAN); - registerMap->add_register("fpga/wg_amplitude", "-", 1, 12, "RW", REG_FORMAT_DOUBLE); - registerMap->add_register("fpga/wg_phase", "-", 1, 12, "RW", REG_FORMAT_DOUBLE); - registerMap->add_register("fpga/wg_frequency", "-", 1, 12, "RW", REG_FORMAT_DOUBLE); - - registerMap->add_register("fpga/bsn_monitor_input_sync_timeout", "-", 1, 1, "RO", REG_FORMAT_BOOLEAN); - registerMap->add_register("fpga/bsn_monitor_input_bsn", "-", 1, 1, "RO", REG_FORMAT_INT64); - registerMap->add_register("fpga/bsn_monitor_input_nof_packets", "-", 1, 1, "RO", REG_FORMAT_INT32); - registerMap->add_register("fpga/bsn_monitor_input_nof_valid", "-", 1, 1, "RO", REG_FORMAT_INT32); - registerMap->add_register("fpga/bsn_monitor_input_nof_err", "-", 1, 1, "RO", REG_FORMAT_INT32); - - registerMap->add_register("fpga/jesd204b_csr_rbd_count", "-", 1, 12, "RO", REG_FORMAT_UINT32); - registerMap->add_register("fpga/jesd204b_csr_dev_syncn", "-", 1, 12, "RO", REG_FORMAT_UINT32); - registerMap->add_register("fpga/jesd204b_csr_rx_err0", "-", 1, 12, "RO", REG_FORMAT_UINT32); - registerMap->add_register("fpga/jesd204b_csr_rx_err1", "-", 1, 12, "RO", REG_FORMAT_UINT32); - - registerMap->add_register("fpga/signal_input_samples_delay", "-", 1, 12, "RW", REG_FORMAT_UINT32); - - registerMap->add_register("fpga/subband_weights", "-", 1, 12*512, "RW", REG_FORMAT_UINT32); - - registerMap->print_screen(); - // Test FPGA by reading system info: try { TermOutput termout; @@ -170,11 +94,6 @@ Periph_fpga::Periph_fpga(string ipaddr, string expected_design_name, uint expect cerr << "Test Periph_fpga::Periph_fpga:read_system_info(): " << e.what() << endl; } -// rbf_wf.open ("/tmp/rbf.dat", ofstream::out | ofstream::binary ); -// if (!rbf_wf) { -// cerr << "Cannot open file!" << endl; -// exit(-1); -// } Flash_fact_sector_start = 0; Flash_fact_sector_end = 159; Flash_user_sector_start = 160; @@ -200,7 +119,6 @@ Periph_fpga::~Periph_fpga() // rbf_wf.close(); if (ucp != NULL) delete ucp; if (mmap != NULL) delete mmap; - if (registerMap != NULL) delete registerMap; } bool Periph_fpga::Read(const string addr_str, uint32_t *data_ptr, bool use_mask_shift=true) @@ -356,7 +274,7 @@ bool Periph_fpga::read_system_info(TermOutput& termout) // my_expected_design_name.c_str(), my_expected_firmware_version); my_current_status = "offline"; - registerMap->setAllPermission_NA(); + // registerMap->setAllPermission_NA(); } return retval; } @@ -388,7 +306,7 @@ bool Periph_fpga::read(TermOutput& termout, const string addr, retval = read_system_info(termout); } else if (addr == "fpga/name") { - termout.nof_vals = my_current_design_name.size(); + termout.nof_vals = 1; //my_current_design_name.size(); termout.datatype = format; strcpy(termout.val, my_current_design_name.c_str()); retval = true; @@ -530,11 +448,11 @@ bool Periph_fpga::read(TermOutput& termout, const string addr, else if (addr == "fpga/jesd204b_csr_dev_syncn") { retval = read_jesd204b_csr_dev_syncn(termout, format, R_MEM); } - else if (addr == "fpga/jesd204b_csr_rx_err0") { - retval = read_jesd204b_csr_rx_err0(termout, format, R_MEM); + else if (addr == "fpga/jesd204b_rx_err0") { + retval = read_jesd204b_rx_err0(termout, format, R_MEM); } - else if (addr == "fpga/jesd204b_csr_rx_err0") { - retval = read_jesd204b_csr_rx_err1(termout, format, R_MEM); + else if (addr == "fpga/jesd204b_rx_err1") { + retval = read_jesd204b_rx_err1(termout, format, R_MEM); } else if (addr == "fpga/signal_input_samples_delay") { retval = read_signal_input_samples_delay(termout, format); @@ -707,8 +625,8 @@ bool Periph_fpga::monitor(TermOutput& termout) read_bsn_monitor_input_nof_err(termout, REG_FORMAT_INT32, R_UCP); read_jesd204b_csr_rbd_count(termout, REG_FORMAT_UINT32, R_UCP); read_jesd204b_csr_dev_syncn(termout, REG_FORMAT_UINT32, R_UCP); - read_jesd204b_csr_rx_err0(termout, REG_FORMAT_UINT32, R_UCP); - read_jesd204b_csr_rx_err1(termout, REG_FORMAT_UINT32, R_UCP); + read_jesd204b_rx_err0(termout, REG_FORMAT_UINT32, R_UCP); + read_jesd204b_rx_err1(termout, REG_FORMAT_UINT32, R_UCP); termout.clear(); tictoc.toc(); @@ -985,7 +903,7 @@ bool Periph_fpga::read_fpga_weights(TermOutput& termout, int format) *ptr++ = (int16_t)(ds >> 16); } } - termout.nof_vals = registerMap->getDataSize("fpga/weights_R"); + termout.nof_vals = mmap->getSpan("mm/0/RAM_BF_WEIGHTS/0/data"); delete[] data_scrap; termout.datatype = format; return retval; @@ -995,7 +913,7 @@ bool Periph_fpga::write_fpga_weights(const uint32_t *data) { bool retval = false; uint32_t nvalues_scrap = mmap->getSpan("mm/0/RAM_SCRAP/0/data"); - uint32_t nvalues = registerMap->getDataSize("fpga/weights_R"); + uint32_t nvalues = mmap->getSpan("mm/0/RAM_BF_WEIGHTS/0/data"); uint nblocks = 48; // 11712/244=48 uint32_t *data_scrap = new uint32_t[nvalues_scrap]; @@ -1208,7 +1126,7 @@ bool Periph_fpga::read_bst_offload_enable(TermOutput& termout, int format) *_ptr = select; _ptr++; } - termout.nof_vals = 2; + termout.nof_vals = C_N_beamsets; termout.datatype = format; return retval; } @@ -2240,7 +2158,7 @@ bool Periph_fpga::read_jesd204b_csr_dev_syncn(TermOutput& termout, int format, i return retval; } -bool Periph_fpga::read_jesd204b_csr_rx_err0(TermOutput& termout, int format, int mode) { +bool Periph_fpga::read_jesd204b_rx_err0(TermOutput& termout, int format, int mode) { bool retval = true; if (mode == R_UCP) { uint32_t data[20]; @@ -2263,7 +2181,7 @@ bool Periph_fpga::read_jesd204b_csr_rx_err0(TermOutput& termout, int format, int return retval; } -bool Periph_fpga::read_jesd204b_csr_rx_err1(TermOutput& termout, int format, int mode) { +bool Periph_fpga::read_jesd204b_rx_err1(TermOutput& termout, int format, int mode) { bool retval = true; if (mode == R_UCP) { uint32_t data[20]; diff --git a/src/periph/fpga.h b/src/periph/fpga.h index 59746dc8f8e7a2e0523bcf9033309c171a364d79..b66d47d27acfbb8a7a2d15a32968330ecc21c762 100644 --- a/src/periph/fpga.h +++ b/src/periph/fpga.h @@ -46,7 +46,6 @@ private: Tictoc tictoc; // used to get some timing information UCP *ucp; CMMap *mmap; - CPointMap *registerMap; bool Enabled; std::string my_expected_design_name; @@ -171,8 +170,8 @@ private: bool read_jesd204b_csr_rbd_count(TermOutput& termout, int format, int mode); bool read_jesd204b_csr_dev_syncn(TermOutput& termout, int format, int mode); - bool read_jesd204b_csr_rx_err0(TermOutput& termout, int format, int mode); - bool read_jesd204b_csr_rx_err1(TermOutput& termout, int format, int mode); + bool read_jesd204b_rx_err0(TermOutput& termout, int format, int mode); + bool read_jesd204b_rx_err1(TermOutput& termout, int format, int mode); bool write_signal_input_samples_delay(uint32_t *data); bool read_signal_input_samples_delay(TermOutput& termout, int format); @@ -197,9 +196,7 @@ public: char *data, const uint nvalues, const int format); bool monitor(TermOutput& termout); - CPointMap* getRegisterMap(void) { return registerMap; }; CMMap* getMMap(void) { return mmap; }; - void print_regmap(std::ostringstream& strs, std::string prefix) { registerMap->print(strs, prefix); }; bool getEnabled(void) { return Enabled; } }; diff --git a/src/registers.cpp b/src/registers.cpp index ddcf7d7ffe69f209d9858ba2a9c4298ff9ee3395..51b266f5dd31a27234cbb2f1f477a37afb429b2c 100644 --- a/src/registers.cpp +++ b/src/registers.cpp @@ -34,6 +34,54 @@ using namespace std; + +int32_t reg_format_size_in_bytes(int32_t type) { + int32_t sz = 0; + switch (type) { + case REG_FORMAT_FLOAT: { + sz = sizeof(float); + } break; + case REG_FORMAT_DOUBLE: { + sz = sizeof(double); + } break; + case REG_FORMAT_INT64: { + sz = sizeof(int64_t); + } break; + case REG_FORMAT_UINT64: { + sz = sizeof(uint64_t); + } break; + case REG_FORMAT_INT32: { + sz = sizeof(int32_t); + } break; + case REG_FORMAT_UINT32: { + sz = sizeof(uint32_t); + } break; + case REG_FORMAT_INT16: { + sz = sizeof(int16_t); + } break; + case REG_FORMAT_UINT16: { + sz = sizeof(uint16_t); + } break; + case REG_FORMAT_INT8: { + sz = sizeof(int8_t); + } break; + case REG_FORMAT_UINT8: { + sz = sizeof(uint8_t); + } break; + case REG_FORMAT_STRING: { + sz = sizeof(char) * SIZE1STRING; + } break; + case REG_FORMAT_BOOLEAN: { + sz = sizeof(bool); + } break; + default: { + cout << "size_in_bytes, Not supported datatype (" << type << ")" << endl; + } break; + } + return sz; +} + + // // CMMap used for holding fpga mm register information // diff --git a/src/registers.h b/src/registers.h index fb9d9a3a44a69b2d1920a38441f8c3b23a961dae..f9f8c818c760029a9eaea543b63e97f8701dc0c1 100644 --- a/src/registers.h +++ b/src/registers.h @@ -33,6 +33,8 @@ #include <map> #include <vector> +#define SIZE1STRING 100 + #define REG_ADDR_ROM_SYSTEM (0x10000) #define REG_ADDR_ROM_SYSTEM_SPAN (8192) @@ -50,6 +52,9 @@ #define REG_FORMAT_DOUBLE 11 #define REG_FORMAT_STRING 12 +int32_t reg_format_size_in_bytes(int32_t type); + + class CMMap { private: diff --git a/src/tools/util.h b/src/tools/util.h index 01650fd8ebdd92337b92ee8120248021254e7fa4..de9c2f1d84cbb9c59f3f84eab45d15f14dbbb9cf 100644 --- a/src/tools/util.h +++ b/src/tools/util.h @@ -54,7 +54,7 @@ class TermOutput { public: #define SIZE400K 400000 -#define SIZE1STRING 100 + char val[SIZE400K]; unsigned int nof_vals;