共1条
1/1 1 跳转至页
贴个ISA标准。。。(2)
SMRDC/SMWTC follow the same timing as MRDC/MWTC respectively when the address is within the lower 1 MB. If the address is not within the lower 1 MB boundary, SMRDC/SMWTC will remain high during the entire cycle.
It is also possible for an 8 bit bus cycle to use the upper portion of the bus. In this case, the timing will be similar to a 16 bit cycle, but an odd address will be present on the bus. This means that the bus is transferring 8 bits using the upper
data bits (SD8-SD15).
Shortening or Lengthening the bus cycle:
BCLK W W W W
_ __ __ __ __ __ __ __ __ __ __ __
|__| |__| |__| |__| |__| |__| |__| |__| |__| |__| |__| |__
|--Transfer 1-----|----Transfer 2---------|----Transfer 3---|
BALE
__ __ __ __
________| |______________| |____________________| |______________|
SBHE
_________ _______________________
|__________________|__________________|
SA0-SA19
_________________ _____________________ _________________
----------<_________________><_____________________><_________________>
IO16
___________ ___ ___________________________
|_____________| |_____________|
* *
CHRDY
________________________________ _______________________________
|______|
* * * [1]
NOWS
______________________________________________________ _____
|__________|
* [2]
IORC
______________ _______ _______ ____
|_________| |_______________| |_________|
SD0-SD15
____ ____ ____
--------------------<____>------------------<____>------------<____>---
* * *
An asterisk (*) denotes the point where the signal is sampled.
W=Wait Cycle
This timing diagram shows three different transfer cycles. The first is a 16 bit standard I/O read. This is followed by an almost identical 16 bit I/O read, with one wait state inserted. The I/O device pulls CHRDY low to indicate that it is not ready
to complete the transfer (see [1]). This inserts a wait cycle, and CHRDY is again sampled. At this second sample, the I/O device has completed its operation and released CHRDY, and the bus cycle now terminates. The third cycle is an 8 bit transfer,
which is shortened to 1 wait state (the default is 4) by the use of NOWS.
I/O Port Addresses
Note: Only the first 10 address lines are decoded for I/O operations. This limits the I/O address space to address 3FF (hex) and lower. Some systems allow for 16 bit I/O address space, but may be limited due to some I/O cards only decoding 10 of these
16 bits.
Port (hex) Port Assignments
000-00F DMA Controller
010-01F DMA Controller (PS/2)
020-02F Master Programmable Interrupt Controller (PIC)
030-03F Slave PIC
040-05F Programmable Interval Timer (PIT)
060-06F Keyboard Controller
070-071 Real Time Clock
080-083 DMA Page Register
090-097 Programmable Option Select (PS/2)
0A0-0AF PIC #2
0C0-0CF DMAC #2
0E0-0EF reserved
0F0-0FF Math coprocessor, PCJr Disk Controller
100-10F Programmable Option Select (PS/2)
110-16F AVAILABLE
170-17F Hard Drive 1 (AT)
180-1EF AVAILABLE
1F0-1FF Hard Drive 0 (AT)
200-20F Game Adapter
210-217 Expansion Card Ports
220-26F AVAILABLE
278-27F Parallel Port 3
280-2A1 AVAILABLE
2A2-2A3 clock
2B0-2DF EGA/Video
2E2-2E3 Data Acquisition Adapter (AT)
2E8-2EF Serial Port COM4
2F0-2F7 Reserved
2F8-2FF Serial Port COM2
300-31F Prototype Adapter, Periscope Hardware Debugger
320-32F AVAILABLE
330-33F Reserved for XT/370
340-35F AVAILABLE
360-36F Network
370-377 Floppy Disk Controller
378-37F Parallel Port 2
380-38F SDLC Adapter
390-39F Cluster Adapter
3A0-3AF reserved
3B0-3BF Monochrome Adapter
3BC-3BF Parallel Port 1
3C0-3CF EGA/VGA
3D0-3DF Color Graphics Adapter
3E0-3EF Serial Port COM3
3F0-3F7 Floppy Disk Controller
3F8-3FF Serial Port COM1
Soundblaster cards usually use I/O ports 220-22F.
Data acquisition cards frequently use 300-31F.
DMA Read and Write
The ISA bus uses two DMA controllers (DMAC) cascaded together. The slave DMAC connects to the master DMAC via DMA channel 4 (channel 0 on the master DMAC). The slave therefore gains control of the bus through the master DMAC. On the ISA bus, the DMAC
is programmed to use fixed priority (channel 0 always has the highest priority), which means that channel 0-4 from the slave have the highest priority (since they connect to the master channel 0), followed by channels 5-7 (which are channel 1-3 on the
master).
The DMAC can be programmed for read transfers (data is read from memory and written to the I/O device), write transfers (data is read from the I/O device and written to memory), or verify transfers (neither a read or a write - this was used by DMA CH0
for DRAM refresh on early PCs).
Before a DMA transfer can take place, the DMA Controller (DMAC) must be programmed. This is done by writing the start address and the number of bytes to transfer (called the transfer count) and the direction of the transfer to the DMAC. After the DMAC
has been programmed, the device may activate the appropriate DMA request (DRQx) line.
Slave DMA Controller
I/O Port
0000 DMA CH0 Memory Address Register
Contains the lower 16 bits of the memory address, written as two consecutive bytes.
0001 DMA CH0 Transfer Count
Contains the lower 16 bits of the transfer count, written as two consecutive bytes.
0002 DMA CH1 Memory Address Register
0003 DMA CH1 Transfer Count
0004 DMA CH2 Memory Address Register
0005 DMA CH2 Transfer Count
0006 DMA CH3 Memory Address Register
0007 DMA CH3 Transfer Count
0008 DMAC Status/Control Register
Status (I/O read) bits 0-3: Terminal Count, CH 0-3
- bits 4-7: Request CH0-3
Control (write)
- bit 0: Mem to mem enable (1 = enabled)
- bit 1: ch0 address hold enable (1 = enabled)
- bit 2: controller disable (1 = disabled)
- bit 3: timing (0 = normal, 1 = compressed)
- bit 4: priority (0 = fixed, 1 = rotating)
- bit 5: write selection (0 = late, 1 = extended)
- bit 6: DRQx sense asserted (0 = high, 1 = low)
- bit 7: DAKn sense asserted (0 = low, 1 = high)
0009 Software DRQn Request
- bits 0-1: channel select (CH0-3)
- bit 2: request bit (0 = reset, 1 = set)
000A DMA mask register
- bits 0-1: channel select (CH0-3)
- bit 2: mask bit (0 = reset, 1 = set)
000B DMA Mode Register
- bits 0-1: channel select (CH0-3)
- bits 2-3: 00 = verify transfer, 01 = write transfer, 10 = read transfer, 11 = reserved
- bit 4: Auto init (0 = disabled, 1 = enabled)
- bit 5: Address (0 = increment, 1 = decrement)
- bits 6-7: 00 = demand transfer mode, 01 = single transfer mode, 10 = block transfer mode, 11 = cascade mode
000C DMA Clear Byte Pointer
Writing to this causes the DMAC to clear the pointer used to keep track of 16 bit data transfers into and out of the DMAC for hi/low byte sequencing.
000D DMA Master Clear (Hardware Reset)
000E DMA Reset Mask Register - clears the mask register
000F DMA Mask Register
- bits 0-3: mask bits for CH0-3 (0 = not masked, 1 = masked)
0081 DMA CH2 Page Register (address bits A16-A23)
0082 DMA CH3 Page Register
0083 DMA CH1 Page Register
0087 DMA CH0 Page Register
0089 DMA CH6 Page Register
008A DMA CH7 Page Register
008B DMA CH5 Page Register
Master DMA Controller
I/O Port
00C0 DMA CH4 Memory Address Register
Contains the lower 16 bits of the memory address, written as two consecutive bytes.
00C2 DMA CH4 Transfer Count
Contains the lower 16 bits of the transfer count, written as two consecutive bytes.
00C4 DMA CH5 Memory Address Register
00C6 DMA CH5 Transfer Count
00C8 DMA CH6 Memory Address Register
00CA DMA CH6 Transfer Count
00CC DMA CH7 Memory Address Register
00CE DMA CH7 Transfer Count
00D0 DMAC Status/Control Register
Status (I/O read) bits 0-3: Terminal Count, CH 4-7
- bits 4-7: Request CH4-7
Control (write)- bit 0: Mem to mem enable (1 = enabled)
- bit 1: ch0 address hold enable (1 = enabled)
- bit 2: controller disable (1 = disabled)
- bit 3: timing (0 = normal, 1 = compressed)
- bit 4: priority (0 = fixed, 1 = rotating)
- bit 5: write selection (0 = late, 1 = extended)
- bit 6: DRQx sense asserted (0 = high, 1 = low)
- bit 7: DAKn sense asserted (0 = low, 1 = high)
00D2 Software DRQn Request
- bits 0-1: channel select (CH4-7)
- bit 2: request bit (0 = reset, 1 = set)
00D4 DMA mask register
- bits 0-1: channel select (CH4-7)
- bit 2: mask bit (0 = reset, 1 = set)
00D6 DMA Mode Register
- bits 0-1: channel select (CH4-7)
- bits 2-3: 00 = verify transfer, 01 = write transfer, 10 = read transfer, 11 = reserved
- bit 4: Auto init (0 = disabled, 1 = enabled)
- bit 5: Address (0 = increment, 1 = decrement)
- bits 6-7: 00 = demand transfer mode, 01 = single transfer mode, 10 = block transfer mode, 11 = cascade mode
00D8 DMA Clear Byte Pointer
Writing to this causes the DMAC to clear the pointer used to keep track of 16 bit data transfers into and out of the DMAC for hi/low byte sequencing.
00DA DMA Master Clear (Hardware Reset)
00DC DMA Reset Mask Register - clears the mask register
00DE DMA Mask Register
- bits 0-3: mask bits for CH4-7 (0 = not masked, 1 = masked)
Single Transfer Mode
The DMAC is programmed for transfer. The DMA device requests a transfer by driving the appropriate DRQ line high. The DMAC responds by asserting AEN and acknowledges the DMA request through the appropriate DAK line. The I/O and memory command lines are
also asserted. When the DMA device sees the DAK signal, it drops the DRQ line.
The DMAC places the memory address on the SA bus (at the same time as the command lines are asserted), and the device either reads from or writes to memory, depending on the type of transfer. The transfer count is incremented, and the address
incremented/decremented. DAK is de-asserted. The cpu now once again has control of the bus, and continues execution until the I/O device is once again ready for transfer. The DMA device repeats the procedure, driving DRQ high and waiting for DAK, then
transferring data. This continues for a number of cycles equal to the transfer count. When this has been completed, the DMAC signals the cpu that the DMA transfer is complete via the TC (terminal count) signal.
__ __ __ __ __ __
BCLK ___| |___| |___| |__| |___| |___| |___
_______
DRQx _| |___________________________________
______________________________
AEN ____| |________
_______ ________
DAKx |___________________________|
____________________________
SA0-SA15 -------<____________________________>-------
___________ ____________
Command Line |___________________|
(IORC, MRDC)
_____________
SD0-SD7 ----------------------<_____________>-------
(READ)
____________________________
SD0-SD7 -------<____________________________>-------
(WRITE)
Block Transfer Mode
The DMAC is programmed for transfer. The device attempting DMA transfer drives the appropriate DRQ line high. The motherboard responds by driving AEN high and DAK low. This indicates that the DMA device is now the bus master. In response to the DAK
signal, the DMA device drops DRQ. The DMAC places the address for DMA transfer on the address bus. Both the memory and I/O command lines are asserted (since DMA involves both an I/O and a memory device). AEN prevents I/O devices from responding to the
I/O command lines, which would not result in proper operation since the I/O lines are active, but a memory address is on the address bus. The data transfer is now done (memory read or write), and the DMAC increments/decrements the address and begins
another cycle. This continues for a number of cycles equal to the DMAC transfer count. When this has been completed, the terminal count signal (TC) is generated by the DMAC to inform the cpu that the DMA transfer has been completed.
Note: Block transfer must be used carefully. The bus cannot be used for other things (like RAM refresh) while block mode transfers are being done.
Demand Transfer Mode
The DMAC is programmed for transfer. The device attempting DMA transfer drives the appropriate DRQ line high. The motherboard responds by driving AEN high and DAK low. This indicates that the DMA device is now the bus master. Unlike single transfer and
block transfer, the DMA device does not drop DRQ in response to DAK. The DMA device transfers data in the same manner as for block transfers. The DMAC will continue to generate DMA cycles as long as the I/O device asserts DRQ. When the I/O device is
unable to continue the transfer (if it no longer had data ready to transfer, for example), it drops DRQ and the cpu once again has control of the bus. Control is returned to the DMAC by once again asserting DRQ. This continues until the terminal count
has been reached, and the TC signal informs the cpu that the transfer has been completed.
Interrupts on the ISA bus
Name Interrupt Description
NMI 2 Parity Error, Mem Refresh
IRQ0 8 8253 Channel 0 (System Timer)
IRQ1 9 Keyboard
IRQ2 A Cascade from slave PIC
IRQ3 B COM2
IRQ4 C COM1
IRQ5 D LPT2
IRQ6 E Floppy Drive Controller
IRQ7 F LPT1
IRQ8 F Real Time Clock
IRQ9 F Redirection to IRQ2
IRQ10 F Reserved
IRQ11 F Reserved
IRQ12 F Mouse Interface
IRQ13 F Coprocessor
IRQ14 F Hard Drive Controller
IRQ15 F Reserved
IRQ0,1,2,8, and 13 are not available on the ISA bus.
The IBM PC and XT had only a single 8259 interrupt controller. The AT and later machines have a second interrupt controller, and the two are used in a master/slave combination. IRQ2 and IRQ9 are the same pin on most ISA systems. Interrupts on most
systems may be either edge triggered or level triggered. The default is usually edge triggered, and active high (low to high transition). The interrupt level must be held high until the first interrupt acknowledge cycle (two interrupt acknowledge bus
cycles are generated in response to an interrupt request).
The software aspects of interrupts and interrupt handlers is intentionally omitted from this document, due to the numerous syntactical differences in software tools and the fact that adequate documentation of this topic is usually provided with
developement software.
Bus Mastering:
An ISA device may take control of the bus, but this must be done with caution. There are no safety mechanisms involved, and so it is easily possible to crash the entire system by incorrectly taking control of the bus. For example, most systems require
bus cycles for DRAM refresh. If the ISA bus master does not relinquish control of the bus or generate its own DRAM refresh cycles every 15 microseconds, the system RAM can become corrupted. The ISA adapter card can generate refresh cycles without
relinquishing control of the bus by asserting REFRESH. MRDC can be then monitored to determine when the refresh cycle ends.
To take control of the bus, the device first asserts its DRQ line. The DMAC sends a hold request to the cpu, and when the DMAC receives a hold acknowledge, it asserts the appropriate DAK line corresponding to the DRQ line asserted. The device is now
the bus master. AEN is asserted, so if the device wishes to access I/O devices, it must assert MASTER16 to release AEN. Control of the bus is returned to the system board by releasing DRQ.
关键词: 贴个 标准 address transfer de
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |