diff --git a/tb/sw/src/halfLvdsMacSvr.c b/tb/sw/src/halfLvdsMacSvr.c index fabca28..a5a2ccc 100644 --- a/tb/sw/src/halfLvdsMacSvr.c +++ b/tb/sw/src/halfLvdsMacSvr.c @@ -77,7 +77,7 @@ uint32_t HLM_poll(uint32_t mode) { if (mode == WORKMODE_MASTER) { - uint32_t tx_pkt_len = 128; + uint32_t tx_pkt_len = 256; uint32_t rx_pkt_len = 0; uint32_t rx_start = 0; uint32_t status; @@ -94,7 +94,7 @@ uint32_t HLM_poll(uint32_t mode) //开始发送工作 *tx0_txLen = tx_pkt_len + 4; - *tx0_txFifo = (tx_pkt_len << 20) | (0 << 16) | 0; + *tx0_txFifo = (tx_pkt_len << 20) | 0; uint32_t tx_index = 0; uint32_t rx_index = 0; @@ -120,6 +120,14 @@ uint32_t HLM_poll(uint32_t mode) tx_index++; } + status = *HLM_status; + + if (((tx_index * 4) < tx_pkt_len) && (!(status & HLM_TX0_FIFO_FULL))) + { + *tx0_txFifo = tx_data_ptr[tx_index]; + tx_index++; + } + if ((rx_start) && (status & HLM_RX1_VALID)) { rx_data_ptr[rx_index] = *rx1_rxFifo; @@ -130,6 +138,8 @@ uint32_t HLM_poll(uint32_t mode) if (rx_pkt_len <= (rx_index * 4)) { rx_start = 0; + rx_index = 0; + break; } } @@ -139,15 +149,6 @@ uint32_t HLM_poll(uint32_t mode) rx_start = 1; rx_index = 0; } - - #if 0 - if (isr_flag[CDR_INT_RX1_FIFO_ENQ]) - { - isr_flag[CDR_INT_RX1_FIFO_ENQ] = 0; - MST_RX_BUF[rx_index] = *rx1_rxFifo; - rx_index++; - } - #endif } } else if (mode == WORKMODE_SLAVE) @@ -158,6 +159,12 @@ uint32_t HLM_poll(uint32_t mode) uint32_t rx_start = 0; uint32_t status; + *rx0_rxTxPair = 1; + *rx0_rxTimerAim = 0; //240; + *rx1_rxTxPair = 0; + *rx1_rxTimerAim = 0; + *plic_enable_0_31 = 0; + while (1) { @@ -180,13 +187,20 @@ uint32_t HLM_poll(uint32_t mode) rx_start = 0; } } - + else + { + if (status & HLM_RX0_VALID) + rx_start = 1; + } +#if 0 //rx0 下行 if (isr_flag[CDR_INT_RX0START]) { isr_flag[CDR_INT_RX0START] = 0; rx_start = 1; + } +#endif } } else diff --git a/tb/verilator/sim_main.cpp b/tb/verilator/sim_main.cpp index 55999c9..4af8d9f 100644 --- a/tb/verilator/sim_main.cpp +++ b/tb/verilator/sim_main.cpp @@ -140,7 +140,7 @@ int main(int argc, char **argv, char **env) { #endif if ( flag_limitEnable ) { - if ( main_cycle > 30000 ){ + if ( main_cycle > 45000 ){ std::cout << "Timeout!!!!!" << std::endl; sim_exit(); return -1;