These days what you want is a MCU/MPU with integrated ram controller. Almost all do. And if they don't, well, you're not going to be able to manually poke the ram along anyway. You need dedicated silicon, whether it's ondie or on FPGA.
Said memory controller on chip will probably be a general-case one size fits all design. On CPUs you will be running through some code in the IPL to poke the DRAM control regs and set up timing parameters, tell it what your organization is, etc.
Vendors usually provide detailed examples and samples for reference designs. Micron is basically the industry benchmark. They have the best datasheets, behavioral models, and nearly every RAM controller will have Micron parts as a template.
Other mfgs also make ram, conforming to JEDEC standards, there may be very slightly different timings or PVT allowances. Hynix, Samsung, Elpida are high volume fabs and the datasheets are basically pinouts and timing - they assume you know what you're doing. ISSI makes high volume commodity low-spec RAM.
The idea is that you can throw in whatever brand RAM you can get for the batch, and have it work.
SDRAM is easy to wire up. All single ended 3v3 signaling. Writing a HDL controller is possible with some effort.
DDR1 adds voltage referenced DDR signaling via SSTL_2, (2v5) differential clocks, and source synchronous data group strobes. Last family available in non-bga TSOP package. External termination is required for >1 discrete chip.
DDR2 runs at SSTL_18 (1v8), adds optional differential data strobes and is more complex to set up. On-die termination.
All of the above three variants can be grouped up on DIMMs (or just laid out on the main pcb) with the command and address signals routed in a split-T topology. This allows all those signals to have equal propagation delay to each module and minimize clock-data skew.
Here are two DDR1 chips in BGA package (1mm x 0.8mm grid) routed like that. The series terminations are on the data lines.

DDR3 uses 1.5v signaling and takes it further. DIMMs that are DDR3 are essentially always routed with the control and address lines wired up serially. Called fly-by topology, there is no skew between the clock and control signals. However each part has a different DQ/clock skew, so extra signals are used to latch in the data. Proper flyby support is still not very common, and only higher-end parts will support it (high end FPGAs, CPUs with integrated memory controllers, etc).
You can still route DDR3 if you are using discrete modules in the split-T topology. Most embedded stuff using DDR3 does this.
If you're curious you can go to the JEDEC site and download the Cadence board files for reference DDR DIMMs. Look at your memory sticks from your PC sometime. Almost all of them are carbon copies.
Basicaly, buy a chip that supports your RAM with dedicated hardware, read every single appnote/guide the manufacturer has on the implementation of RAM with their product, and read more stuff about routing it. You will need 4layer PCBs for DDR1 and up, and more layers for more chips you throw on the PCB. DDR2/DDR3 have a ball pitch of 0.8mm x 0.8mm so you will need 5/6mil traces and vias that can fit between the ball lands (I've found 12mil is barely enough)