Acharya, Puja: Neuromorphic Computing: Principles, Challenges, and Future Directions