= Developing Peripherals for WARP and XPS: Preface = [[BR]] XPS provides an added layer of abstraction for developing modular peripherals. For example, adding in a peripheral to an XPS project is easy – the user simply drags the peripheral into their System Assembly, puts it on a bus (if it requires PowerPC control), generates its bass-address (again, if it’s on a BUS or has memory-mapped I/O), and finally ties the peripherals in/out ports to other peripheral modules or external pins, using net-names (the equivalent of a wire).[[BR]][[BR]] This process is extremely efficient from the standpoint of recyclability of the peripheral modules. This can be even more powerful when a peripherals information has been added to an XBD (Xilinx Board Description File) – which will even automatically fill in the necessary pin constraints for the user (which can at times be quite overwhelming depending on the peripheral). [[BR]][[BR]] This guide is meant to be extremely straight-forward in introducing the user to building peripherals for use with XPS (both to be PowerPC controlled and not). It is assumed that the reader has a solid background in VHDL or Verilog programming, for the individual to program peripherals effectively. The procedure for teaching this is as follows:[[BR]][[BR]] * The file structure for XPS/EDK-based peripherals[[BR]] * Creating peripherals that do not require PowerPC control[[BR]] * Creating peripherals that DO require PowerPC control[[BR]] * Updating the *.XBD and *.MPD files for using the peripheral in XPS's Base System Builder (BSB) (*.xbd compliance)[[BR]] * Notes for good peripheral design practice[[BR]] * References[[BR]] [[BR]] [wiki:custom_periphs HOME] ||| [wiki:custom_periphs/file_structure NEXT: The File Structure for XPS/EDK-based Peripherals]