Dealing with asynchronous signals can get a lot of different answers, and that's because "asynchronous" can be used to define many different types of interfaces, all with different characteristics, so it helps to define exactly what you know about your signals and what you're trying to do with them. Some of the suggestions are for truly ugly singals. Glitchy, non-monotonic, perhaps with periods faster than the clock rate, etc. are examples. More often than not, asynchronous refers to pretty well defined signals, but we just don't know the phase(or don't have a clock on chip that has a 0 PPM difference.) If it's a signal that toggles slower than the clock(and depending on the part, there's no reason you can't use a PLL and create a 400MHz clock to sample them), than just sample it with multiple chained registers(the multiple registers are to let any metastability work its way out of the system. If you have a fast clock, then you'll have less time to let them work themselves out and want the data delay between registers to be as quick as possible. I would recommend putting the registers in a single lab assignment next to the pin.)
(I'll probably get blasted as there are more elegant solutions, like voting mechanism,s or an edge detection circuit, etc. Again, it all depends on your system and what your requirements are.)
Another issue that often comes up, since you say signals, plural, is do they need to be captured together, or are they truly asynchronous to each other. Just another issue to take into account.