Digital Logic Design Principles