An Undergraduate Course and Laboratory in Digital Signal Processing With Field Programmable Gate Arrays