
MFC2000 Multifunctional Peripheral Controller 2000
Hardware Description
11-10
Conexant
100723A
11.4 Firmware Operation
11.4.1 Bit Rotation Setup and Operation
The following describes how to setup and operate the Bit Rotation Block for printing of image swaths. The
following example assumes that there is a 8Mbyte DRAM residing in bank 0 of the system in question. It is also
assumed that the swath buffer that resides in this DRAM is located at the base address of this device and grows
up. Since the memory grows down from address 03000000h, the base address for the DRAM is at 02800000. In
addition, I am assuming that the image that is to be printed is 72 bytes wide, has a warp of 96 bytes, shuttle
direction is right-to-left, and the number of nozzles is 56.
Program the DMA Controller - Channel 2 and 3
1. Program the address of the Bit Rotation Packing Register (01FF8062h) into the DMA High Address Counter
(01FF818Ah) and the DMACNT2LO (01FF8188h) and the DMA2CNTHI (01FF818Ah) registers:
(DMACNT2LO) <= 8062h;
(DMACNT2HI) <= 01ffh;
2. Program the DMA2CONFIG register (01FF81B2h). It must know that it is being used for Bit Rotation as well
as for reads and halfword mode:
(DMA2CONFIG) <= 0180h;
3. Program the DMA Channel 2 block size. Here, we set up for unlimited block size. Bit 15 is the enable bit for
this channel.
(DMA2BLKSIZE) <= 8000h;
4. The only registers that you need to program the DMA Channel 3 controller with is the address of the image
memory: Since the shuttle direction is right-to-left, we must initialize these registers with the upper right-hand
corner of the swath buffer.
(DMA3CNTLO) <= 0046h;
(DMACNT3HI) <= 0280h;
Program the BRB
1. First, load the Rotation Line Length Register (ROTLINE - 01FF8874h) with one less than the length of the
image which would be 72 bytes - 1 = 71 = 47h.
(ROTLINE) <= 0047h;
2. Program the BRBWARP (01FF8872h) register with the actual warp value. Here, the warp is 96 bytes = 60h.
(BRBWARP) <= 0060h;
3. Program the Nozzle Number into ROTNN (01FF8870h) with the number of nozzles -1. In this case, the actual
number of nozzles is 56. So, we need to program the ROTNN with 56 - 1 = 55 = 37h.
(ROTNN) <= 0037h;
4. Program the ROTCTRL (01FF8060h) with the proper value. In this case, the shuttle direction is right-to-left.
(ROTCTRL) <= 8001h;
Once the Rotation bit has been set, then Bit Rotation starts. The status bit (bit 15 of ROTCTRL) may then be
polled to determine when the swath is completed with printing. On the next shuttle stroke, Only the address in
channel 3 of the DMA controller needs to be changed as well as the shuttle direction bit within the ROTCTRL
register. These should be the only parameters that need to change, once the initial parameters have been set up.