OpenCores
URL https://opencores.org/ocsvn/xulalx25soc/xulalx25soc/trunk

Subversion Repositories xulalx25soc

[/] [xulalx25soc/] [trunk/] [bench/] [cpp/] [pipecmdr.h] - Diff between revs 37 and 47

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 37 Rev 47
Line 38... Line 38...
//
//
// #define      UARTLEN         8681 // Minimum ticks per character, 115200 Baud
// #define      UARTLEN         8681 // Minimum ticks per character, 115200 Baud
//
//
// At 4MBaud, each bit takes 25 clocks.  10 bits would thus take 250 clocks
// At 4MBaud, each bit takes 25 clocks.  10 bits would thus take 250 clocks
//              
//              
#define UARTLEN         250 // Minimum ticks per character, 4M Baud
// #define      UARTLEN         250 // Minimum ticks per character, 4M Baud
 
// #define      UARTLEN         1000 // Minimum ticks per character, 1M Hz
// #define      UARTLEN         8 // Minimum ticks per character
// #define      UARTLEN         8 // Minimum ticks per character
 
#define UARTLEN         4096    //
 
 
template <class VA>     class   PIPECMDR : public TESTB<VA> {
template <class VA>     class   PIPECMDR : public TESTB<VA> {
        void    setup_listener(const int port) {
        void    setup_listener(const int port) {
                struct  sockaddr_in     my_addr;
                struct  sockaddr_in     my_addr;
 
 
Line 82... Line 84...
        }
        }
 
 
public:
public:
        int     m_skt, m_con;
        int     m_skt, m_con;
        char    m_txbuf[PIPEBUFLEN], m_rxbuf[PIPEBUFLEN];
        char    m_txbuf[PIPEBUFLEN], m_rxbuf[PIPEBUFLEN];
        int     m_ilen, m_rxpos, m_txpos, m_uart_wait;
        int     m_ilen, m_rxpos, m_txpos, m_uart_wait, m_tx_busy;
        bool    m_started_flag;
        bool    m_started_flag;
 
 
        PIPECMDR(const int port) : TESTB<VA>() {
        PIPECMDR(const int port) : TESTB<VA>() {
                m_con = m_skt = -1;
                m_con = m_skt = -1;
                setup_listener(port);
                setup_listener(port);
                m_rxpos = m_txpos = m_ilen = 0;
                m_rxpos = m_txpos = m_ilen = 0;
                m_started_flag = false;
                m_started_flag = false;
                m_uart_wait = 0;
                m_uart_wait = 0; // Flow control into the FPGA
 
                m_tx_busy   = 0; // Flow control out of the FPGA
        }
        }
 
 
        virtual void    kill(void) {
        virtual void    kill(void) {
                // Close any active connection
                // Close any active connection
                if (m_con >= 0)  close(m_con);
                if (m_con >= 0)  close(m_con);
Line 172... Line 175...
                        fflush(stdout);
                        fflush(stdout);
                }
                }
                */
                */
                TESTB<VA>::tick();
                TESTB<VA>::tick();
 
 
 
                bool tx_accepted = false;
 
                if (m_tx_busy == 0) {
                if ((TESTB<VA>::m_core->o_tx_stb)&&(m_con > 0)) {
                if ((TESTB<VA>::m_core->o_tx_stb)&&(m_con > 0)) {
                        m_txbuf[m_txpos++] = TESTB<VA>::m_core->o_tx_data;
                        m_txbuf[m_txpos++] = TESTB<VA>::m_core->o_tx_data;
 
                                tx_accepted = true;
                        if ((TESTB<VA>::m_core->o_tx_data == '\n')||(m_txpos >= sizeof(m_txbuf))) {
                        if ((TESTB<VA>::m_core->o_tx_data == '\n')||(m_txpos >= sizeof(m_txbuf))) {
                                int     snt = 0;
                                int     snt = 0;
                                snt = send(m_con, m_txbuf, m_txpos, 0);
                                snt = send(m_con, m_txbuf, m_txpos, 0);
 
 
                                m_txbuf[m_txpos] = '\0';
                                m_txbuf[m_txpos] = '\0';
Line 187... Line 193...
                                                snt);
                                                snt);
                                }
                                }
                                m_txpos = 0;
                                m_txpos = 0;
                        }
                        }
                }
                }
 
                } else
 
                        m_tx_busy--;
 
 
 
                if ((TESTB<VA>::m_core->o_tx_stb)&&(TESTB<VA>::m_core->i_tx_busy==0))
 
                        m_tx_busy = UARTLEN;
 
                TESTB<VA>::m_core->i_tx_busy = (m_tx_busy != 0);
 
 
 
                if (0) {
 
                        if ((m_tx_busy!=0)||(TESTB<VA>::m_core->i_tx_busy)
 
                                ||(TESTB<VA>::m_core->o_tx_stb)
 
                                ||(tx_accepted))
 
                                printf("%4d %d %d %02x %s\n",
 
                                        m_tx_busy,
 
                                        TESTB<VA>::m_core->i_tx_busy,
 
                                        TESTB<VA>::m_core->o_tx_stb,
 
                                        TESTB<VA>::m_core->o_tx_data,
 
                                        (tx_accepted)?"READ!":"");
 
                }
 
 
 
 
                /*
                /*
                if((TESTB<VA>::m_core->o_wb_cyc)||(TESTB<VA>::m_core->o_wb_stb)){
                if((TESTB<VA>::m_core->o_wb_cyc)||(TESTB<VA>::m_core->o_wb_stb)){
                        printf("BUS: %d,%d,%d %8x %8x\n",
                        printf("BUS: %d,%d,%d %8x %8x\n",
                                TESTB<VA>::m_core->o_wb_cyc,
                                TESTB<VA>::m_core->o_wb_cyc,

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.