FPGA designs are predictable and glitch free when used with Synchronous flops.
Use OneHot Encoding for FPGA state machines (FSMs) as FPGA is flop rich. It will speed up your design as well.
Use Block RAM for bigger memories ( Arrays above 256 bits )
Use distributed RAM ( LUTRAM ) for smaller memories. (Arrays
Primary purpose of reset is to force the design in to a known state. Real world reset or power-on-reset are asynchronous. But the design world uses flip-flops with two types of resets.
Synchronous resets make sure your design is 100% synchronous. It removes the metastability problem with the assertion or de-assertion of reset. For FPGA designs, synch
Based on the direction of clock and data, synchronous systems are categorized in to two as source synchronous and system synchronous. System architects plan the clocking of the system first by considering placement of different blocks, Fmax and ease of timing closure. Understanding these two types of clocking will help you in deciding which type of clocking approach to choose for your ne