
Lattice Semiconductor
Multi-Channel DMA Controller User’s Guide
23
Programming the MCDMA Controller
Programming the core to achieve the desired functionality is very similar in both the 8237 and non-8237 modes.
The differences lie in the address map and the name of the registers
For the 8237 mode, the steps to program the core are:
• Disable the controller through the command register
• Program the Mode Register
– Select the channel to be programmed
– Set the features on the channel to programmed, such as transfer mode, read/write/verify transfer, address
increment/decrement, etc.
• Write into the Address Registers and Word Count Register
– Set the base source address register
– Set the number of transfer to be performed in the Word Count Registers.
• Enable the controller
For the non-8237 mode, the steps to program the core are:
• Disable the controller
• Set Input ain
– The first 3 bits of
ain
,
ain[2:0]
, selects which registered to be programmed. The rest of the bits select
which channel to be programmed.
• Program the Mode and Channel control registers of all the channels
• Write into the Address registers and Word Count register
• Enable the controller
The core remains in the idle state (SI) as long as DMA transfers are not requested. While in state SI, the
dreq
sig-
nals are sampled. When an unmasked DMA request is presented, the core enters the active state. The request can
be either a software or hardware request.
Although the internal registers can be programmed in state S0, or before the
hlda
signal is asserted, it is a good
practice to program the internal registers only while the core is in the Idle state (SI). The functionality of the control-
ler is not guaranteed to be deterministic if the internal registers are accessed during an active DMA cycle.
Reference Information
•
ispLEVER Software User Manual
, Lattice Semiconductor Corporation
•
8237A High Performance Programmable DMA Controller,
Intel Corporation, September 1993.
Technical Support Assistance
Hotline:
1-800-LATTICE (North America)
+1-503-268-8001 (Outside North America)
e-mail:
Internet: www.latticesemi.com