This note presents a low-cost data acquisition and function generation unit with a USB interface in such a way that it helps others to design a USB-based system without knowing details of the USB itself. The unit integrates most functions commonly used in the laboratory, such as analogue-to-digital converter (ADC), digital-to-analogue converter (DAC), synchronous direct digital synthesizers (DDSs) and digital in/digital out, into a single unit. Dedicated software with a user-friendly interface has been developed in Visual C++ 6.0, to control the hardware operation and to log the sampled data into a PC or a laptop. Preliminary tests show that all the designed functions are working. Due to the USB latency, however, the ADC sampling rate is slower than expected. An alternative design is suggested to increase the sampling rate.