mirror of
https://github.com/garrettsworkshop/Warp-SE.git
synced 2024-11-24 21:34:16 +00:00
Update index.html
This commit is contained in:
parent
66db09b099
commit
aff6199c1c
@ -29,54 +29,26 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body onload="WaveDrom.ProcessAll()">
|
<body onload="WaveDrom.ProcessAll()">
|
||||||
<h1>Garrett's Workshop Warp-SE 20/25 MHz 68HC000 Accelerator Documentation</h1>
|
<h1>Garrett's Workshop WarpSE 25 MHz 68HC000 Accelerator Documentation</h1>
|
||||||
|
|
||||||
<h2>System Block Diagram</h2>
|
|
||||||
<img src="CPLD.png" style="width:1000px;" />
|
|
||||||
|
|
||||||
<h2>Relevant Timing Parameters</h2>
|
|
||||||
<p>Some relevant timing parameters to which the bus timings were designed are as follows:</p>
|
|
||||||
<table>
|
|
||||||
<tr><th>Parameter</th><th>Value</th><th>Description</th></tr>
|
|
||||||
<tr><td>tPD_CPLD</td> <td>10ns</td> <td>asynchronous propagation delay</td></tr>
|
|
||||||
<tr><td>tCO_CPLD</td> <td>6ns</td> <td>clock-to-output delay</td></tr>
|
|
||||||
<tr><td>tSU_CPLD</td> <td>6ns</td> <td>global clock setup time</td></tr>
|
|
||||||
<tr><td>tRAS_DRAM</td> <td>60ns</td> <td>RAS pulse width / access time</td></tr>
|
|
||||||
<tr><td>tASR_DRAM</td> <td>0ns</td> <td>row address setup time before RAS</td></tr>
|
|
||||||
<tr><td>tRAH_DRAM</td> <td>10ns</td> <td>row address hold time after RAS</td></tr>
|
|
||||||
<tr><td>tRCD_DRAM</td> <td>20ns</td> <td>minimum RAS-to-CAS delay</td></tr>
|
|
||||||
<tr><td>tASC_DRAM</td> <td>0ns</td> <td>column address setup time before CAS</td></tr>
|
|
||||||
<tr><td>tCAH_DRAM</td> <td>10ns</td> <td>column address hold time after CAS</td></tr>
|
|
||||||
<tr><td>tCAS_DRAM</td> <td>20ns</td> <td>CAS pulse width / access time</td></tr>
|
|
||||||
<tr><td>tRP_DRAM</td> <td>40ns</td> <td>RAS precharge time</td></tr>
|
|
||||||
<tr><td>tCP_DRAM</td> <td>10ns</td> <td>CAS precharge time</td></tr>
|
|
||||||
<tr><td>tRC_DRAM</td> <td>120ns</td> <td>minimum RAS cycle time</td></tr>
|
|
||||||
<tr><td>tACC_ROM</td> <td>70ns</td> <td>ROM access time</td></tr>
|
|
||||||
<tr><td>tOE_ROM</td> <td>40ns</td> <td>ROM OE access time</td></tr>
|
|
||||||
<tr><td>tPD_573</td> <td>20ns</td> <td>74AHCT573 propagation delay after LE or D</td></tr>
|
|
||||||
<tr><td>tSU_573</td> <td>5ns</td> <td>74AHCT573 setup time before LE</td></tr>
|
|
||||||
<tr><td>tH_573</td> <td>2ns</td> <td>74AHCT573 hold time after LE</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<h2>Timing Diagrams</h2><p>
|
|
||||||
Below I am presenting some timing diagrams showing the relevant signals for various interesting bus cycle cases. <br/>
|
|
||||||
We are beginning with the timing of the accelerated processor bus, or the front-side bus (FSB), and proceeding on to the timing of the master port on the Mac SE bus, or the I/O Bus (IOB). <br/>
|
|
||||||
The timing diagrams are scaled for a 25 MHz FSB clock frequency and the standard 7.8336 MHz Mac SE bus.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
<h3 id="t0">0. Generic MC68000 bus cycle detection</h3>
|
<h3 id="t0">0. Generic MC68000 bus cycle detection</h3>
|
||||||
<script type="WaveDrom">{signal: [
|
<script type="WaveDrom">{signal: [
|
||||||
{name: 'FCLK', wave: 'p.....', phase: 0.00, period: 2},
|
{name: 'FCLK', wave: 'p.......................', phase: 0.00, period: 1},
|
||||||
{name: 'A', wave: 'x2..x.', phase: 0.25, period: 2},
|
{name: 'CS', wave: '222222222222222222222222', phase: 0.00, period: 1,
|
||||||
{name: 'R/W', wave: 'x..1....x...', phase: 0.25, period: 1},
|
data:[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]},
|
||||||
{name: '/AS', wave: '1...x0........x1....x2.', phase:-0.25, period: 0.5},
|
{name: 'MCLK', wave: 'p.....', phase: 0.00, period: 4},
|
||||||
{name: '/DS (RD)', wave: '1...x0........x1....x..', phase:-0.25, period: 0.5},
|
{name: 'A', wave: 'x2..x.', phase: 0.25, period: 4},
|
||||||
{name: '/DS (WR)', wave: '1.......x0....x1....x..', phase:-0.25, period: 0.5},
|
{name: 'R/W', wave: 'x..1....x...', phase: 0.25, period: 2},
|
||||||
{name: '/AS', wave: '1...x0........x1....x..', phase:-0.25, period: 0.5},
|
{name: '/AS', wave: '1...x0........x1....x2.', phase:-0.25, period: 1},
|
||||||
{name: '/ASrf', wave: '1...x.....0.......1...x', phase:-0.25, period: 0.5},
|
{name: '/DS (RD)', wave: '1...x0........x1....x..', phase:-0.25, period: 1},
|
||||||
{name: 'BACT', wave: '0...x.1...........0.x.2', phase:-0.25, period: 0.5},
|
{name: '/DS (WR)', wave: '1.......x0....x1....x..', phase:-0.25, period: 1},
|
||||||
|
{name: 'RCMD (RD)',wave: '222222222222222222222222', phase: 0.00, period: 1,
|
||||||
|
data:['NOP','NOP','NOP','NOP','NOP','NOP','NOP','ACT','NOP','RD','NOP','NOP','NOP','PC','NOP','REF','NOP','NOP','NOP','NOP','NOP']},
|
||||||
|
{name: 'RCMD (WR)',wave: '222222222222222222222222', phase: 0.00, period: 1,
|
||||||
|
data:['NOP','NOP','NOP','NOP','NOP','NOP','NOP','ACT','NOP','NOP','NOP','WR','NOP','PC','NOP','REF','NOP','NOP','NOP','NOP','NOP']},
|
||||||
]}
|
]}
|
||||||
</script><br/><p>
|
</script><br/><p>
|
||||||
For starters, it is instructive to look at a generic MC68000 bus cycle. <br/>
|
For starters, it is instructive to look at a generic MC68000 bus cycle. <br/>
|
||||||
@ -836,3 +808,50 @@ document.querySelectorAll('script[type=wavedrom]').forEach(function(dgm) {
|
|||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
', period: 2, data:[0,3,2,2,2,2,1,1,0,3,2,2,2,1,1,0], phase:-0.3},
|
||||||
|
{name: 'IOACT', wave: '0....|1.|0....|1.|0.', phase:-0.3, period: 2},
|
||||||
|
{name: 'IOREQ', wave: '01...|..|.....|.0|..', phase:-0.3, period: 2},
|
||||||
|
{name: 'ALE1', wave: '1...0|..|....1|..|..', phase:-0.3, period: 2},
|
||||||
|
{name: 'IORW1', wave: '2..0.|..|.....|..|..', phase:-0.3, period: 2, data:['R/W', 'R/W']},
|
||||||
|
{name: 'IOLU1', wave: '2...2|..|.....|..|..', phase:-0.3, period: 2, data:['LDS, UDS', 'LDS, UDS']},
|
||||||
|
{name: 'ALE0', wave: '1.0..|.1|...0.|.1|..', phase:-0.3, period: 2},
|
||||||
|
{name: 'IORW0', wave: '20...|..|..0..|..|..', phase:-0.3, period: 2, data:['R/W', 'R/W']},
|
||||||
|
{name: 'IOLU0', wave: '2.2..|..|...2.|..|..', phase:-0.3, period: 2, data:['LDS, UDS', 'LDS, UDS']},
|
||||||
|
{name: 'IOWRReady', wave: '1...0|..|....1|..|..', phase:-0.3, period: 2},
|
||||||
|
]}
|
||||||
|
</script><p>
|
||||||
|
Similar to the previous case (again). This is the closest write timing allowed, even faster than MC68k can do.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.querySelectorAll('script[type=wavedrom]').forEach(function(dgm) {
|
||||||
|
var dj;
|
||||||
|
eval('dj = ' + dgm.text + ';');
|
||||||
|
var lines = {};
|
||||||
|
var table = {};
|
||||||
|
dj.signal.forEach(function(line) {
|
||||||
|
lines[line.name] = '';
|
||||||
|
for (var symbol = 0; symbol < line.wave.length; symbol++) {
|
||||||
|
for (var reps = 0; reps < line.period / 0.5; reps++) {
|
||||||
|
if (line.wave.charAt(symbol) === '.' ||
|
||||||
|
line.wave.charAt(symbol) === '|') {
|
||||||
|
var previndex = lines[line.name].charAt.length-1;
|
||||||
|
|
||||||
|
if (previndex <= 0) {
|
||||||
|
lines[line.name] += '1';
|
||||||
|
} else {
|
||||||
|
lines[line.name] += lines[line.name].charAt(previndex);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lines[line.name] += line.wave.charAt(symbol);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//alert(lines[line.name]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user