public static void Write(uint baud, byte data, FPGA.Signal <bool> TXD)
        {
            // default TXD is high
            bool internalTXD = true;

            // hardlink from register to output signal, it has to hold its value
            FPGA.Config.Link(internalTXD, TXD);

            UART.RegisteredWrite(baud, data, out internalTXD);
        }
        public static void RegisteredWriteUnsigned64(uint baud, ulong data, out bool TXD)
        {
            // cannot use data direclty as it is used by "ref" in hardware
            ulong       buff = data;
            Func <byte> lsb  = () => (byte)buff;

            FPGA.Config.Default(out TXD, true);

            for (byte i = 0; i < 8; i++)
            {
                FPGA.Config.SetInclusiveRange(0, 8, i);
                UART.RegisteredWrite(baud, lsb(), out TXD);
                buff = buff >> 8;
            }
        }