What are the applications of programmable logic device?