diff options
| -rw-r--r-- | asm/bootstrap.atk16 | 25 | ||||
| -rw-r--r-- | asm/idle_loop.atk16 | 10 | ||||
| -rw-r--r-- | digital/atk16.dig | 996 | ||||
| -rw-r--r-- | digital/atk16_mem.dig | 780 | ||||
| -rw-r--r-- | digital/atk16_mem_mux.dig | 276 |
5 files changed, 1594 insertions, 493 deletions
diff --git a/asm/bootstrap.atk16 b/asm/bootstrap.atk16 index 73165b9..29ed0ea 100644 --- a/asm/bootstrap.atk16 +++ b/asm/bootstrap.atk16 @@ -1,16 +1,33 @@ @let stack_segment 0x8000 @let vector_table 0x10 +@let terminal_addr 0xE000 +@let keyboard_addr 0xE001 @address vector_table - hlt_isr ; 0x10 ISR0 - hlt_isr ; 0x11 ISR1 - hlt_isr ; 0x12 ISR2 - hlt_isr ; 0x13 ISR3 + hlt_isr ; 0x10 ISR0 + hlt_isr ; 0x11 ISR1 + hlt_isr ; 0x12 ISR2 + keyboard_isr ; 0x13 ISR3 (keyboard) stack_segment ; 0x14 Stack address 0x0 ; 0x15 Interrupt PC address (IPCA) + terminal_addr ; 0x16 Terminal peripheral address + keyboard_addr ; 0x17 Keyboard peripheral address @label hlt_isr ldi 0x55 RE + hlt + +@label keyboard_isr + spu RA ; use RA, RB + spu RB + ldi 0x17 RA ; RA := 0x17 Keyboard peripheral address pointer + ldr RA RA ; RA := 0xE001 Keyboard peripheral address deref + ldr RA RA ; RA := <16-bit keyboard character code> from MMIO register + ldi 0x16 RB ; RB := 0x16 Terminal peripheral address pointer + ldr RB RB ; RB := 0xE000 Terminal peripheral address deref + str RA RB ; terminal <- character code + spo RB ; restore RA, RB + spo RA rti @label program_segment diff --git a/asm/idle_loop.atk16 b/asm/idle_loop.atk16 new file mode 100644 index 0000000..442923c --- /dev/null +++ b/asm/idle_loop.atk16 @@ -0,0 +1,10 @@ +@opt stack_pointer RF +@opt csr_scratch RH +@use ext_std:* + +; bootstrap code (must be called to setup mandatory data) +; will jump to label main +@include bootstrap + +@label main + jpi main diff --git a/digital/atk16.dig b/digital/atk16.dig index d1787ab..c2b1cf3 100644 --- a/digital/atk16.dig +++ b/digital/atk16.dig @@ -119,36 +119,13 @@ </visualElement> <visualElement> <elementName>atk16_mem.dig</elementName> - <elementAttributes/> - <pos x="580" y="-220"/> - </visualElement> - <visualElement> - <elementName>Tunnel</elementName> - <elementAttributes> - <entry> - <string>rotation</string> - <rotation rotation="2"/> - </entry> - <entry> - <string>NetName</string> - <string>MEM_IE</string> - </entry> - </elementAttributes> - <pos x="580" y="-180"/> - </visualElement> - <visualElement> - <elementName>Tunnel</elementName> <elementAttributes> <entry> - <string>rotation</string> - <rotation rotation="2"/> - </entry> - <entry> - <string>NetName</string> - <string>MEM_OE</string> + <string>Label</string> + <string>MEMORY</string> </entry> </elementAttributes> - <pos x="580" y="-160"/> + <pos x="580" y="-220"/> </visualElement> <visualElement> <elementName>atk16_jump_unit.dig</elementName> @@ -224,7 +201,7 @@ program(0x4051, 0x40a2, 0x029b) <elementAttributes> <entry> <string>rotation</string> - <rotation reference="../../../../visualElement[12]/elementAttributes/entry/rotation"/> + <rotation reference="../../../../visualElement[10]/elementAttributes/entry/rotation"/> </entry> </elementAttributes> <pos x="740" y="740"/> @@ -242,7 +219,7 @@ program(0x4051, 0x40a2, 0x029b) </entry> <entry> <string>Frequency</string> - <int>15</int> + <int>100</int> </entry> </elementAttributes> <pos x="660" y="-340"/> @@ -1276,9 +1253,49 @@ program(0x4051, 0x40a2, 0x029b) <pos x="440" y="220"/> </visualElement> <visualElement> - <elementName>Keyboard</elementName> + <elementName>RS_FF_AS</elementName> <elementAttributes/> - <pos x="-220" y="460"/> + <pos x="-120" y="380"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + </elementAttributes> + <pos x="-60" y="320"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[102]/elementAttributes/entry/rotation"/> + </entry> + </elementAttributes> + <pos x="-40" y="340"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[102]/elementAttributes/entry/rotation"/> + </entry> + </elementAttributes> + <pos x="-60" y="360"/> + </visualElement> + <visualElement> + <elementName>LED</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + </elementAttributes> + <pos x="220" y="360"/> </visualElement> <visualElement> <elementName>Tunnel</elementName> @@ -1292,22 +1309,135 @@ program(0x4051, 0x40a2, 0x029b) <string>CLK</string> </entry> </elementAttributes> - <pos x="-240" y="460"/> + <pos x="560" y="-180"/> </visualElement> <visualElement> - <elementName>VDD</elementName> + <elementName>Tunnel</elementName> <elementAttributes> <entry> <string>rotation</string> - <rotation rotation="1"/> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MEM_IE</string> </entry> </elementAttributes> - <pos x="-240" y="480"/> + <pos x="560" y="-160"/> </visualElement> <visualElement> - <elementName>RS_FF_AS</elementName> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MEM_OE</string> + </entry> + </elementAttributes> + <pos x="560" y="-140"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>DBUS</string> + </entry> + </elementAttributes> + <pos x="200" y="-280"/> + </visualElement> + <visualElement> + <elementName>Comparator</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>13</int> + </entry> + </elementAttributes> + <pos x="-260" y="560"/> + </visualElement> + <visualElement> + <elementName>Const</elementName> + <elementAttributes> + <entry> + <string>Value</string> + <long>0</long> + </entry> + <entry> + <string>Bits</string> + <int>13</int> + </entry> + </elementAttributes> + <pos x="-280" y="580"/> + </visualElement> + <visualElement> + <elementName>And</elementName> <elementAttributes/> - <pos x="-120" y="380"/> + <pos x="-160" y="580"/> + </visualElement> + <visualElement> + <elementName>Terminal</elementName> + <elementAttributes/> + <pos x="-60" y="560"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>CLK</string> + </entry> + </elementAttributes> + <pos x="-60" y="580"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>DBUS</string> + </entry> + </elementAttributes> + <pos x="-80" y="540"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MMIO_IE</string> + </entry> + </elementAttributes> + <pos x="-180" y="620"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MMIO_S</string> + </entry> + </elementAttributes> + <pos x="-280" y="560"/> </visualElement> <visualElement> <elementName>Tunnel</elementName> @@ -1321,47 +1451,153 @@ program(0x4051, 0x40a2, 0x029b) <string>IM_DS</string> </entry> </elementAttributes> - <pos x="-160" y="400"/> + <pos x="-140" y="400"/> </visualElement> <visualElement> - <elementName>Ground</elementName> + <elementName>Tunnel</elementName> <elementAttributes> <entry> <string>rotation</string> - <rotation rotation="1"/> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IRQ0</string> </entry> </elementAttributes> - <pos x="-60" y="320"/> + <pos x="-140" y="380"/> </visualElement> <visualElement> - <elementName>Ground</elementName> + <elementName>Keyboard</elementName> + <elementAttributes/> + <pos x="-40" y="700"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>IRQ0</string> + </entry> + </elementAttributes> + <pos x="40" y="720"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>DBUS</string> + </entry> + </elementAttributes> + <pos x="100" y="700"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> <elementAttributes> <entry> <string>rotation</string> - <rotation reference="../../../../visualElement[108]/elementAttributes/entry/rotation"/> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>CLK</string> </entry> </elementAttributes> - <pos x="-40" y="340"/> + <pos x="-40" y="700"/> </visualElement> <visualElement> - <elementName>Ground</elementName> + <elementName>Comparator</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>13</int> + </entry> + </elementAttributes> + <pos x="-300" y="680"/> + </visualElement> + <visualElement> + <elementName>Const</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>13</int> + </entry> + </elementAttributes> + <pos x="-320" y="700"/> + </visualElement> + <visualElement> + <elementName>And</elementName> + <elementAttributes/> + <pos x="-200" y="700"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> <elementAttributes> <entry> <string>rotation</string> - <rotation reference="../../../../visualElement[108]/elementAttributes/entry/rotation"/> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MMIO_OE</string> </entry> </elementAttributes> - <pos x="-60" y="360"/> + <pos x="-220" y="740"/> </visualElement> <visualElement> - <elementName>LED</elementName> + <elementName>Tunnel</elementName> <elementAttributes> <entry> <string>rotation</string> - <rotation rotation="3"/> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MMIO_S</string> </entry> </elementAttributes> - <pos x="220" y="360"/> + <pos x="-320" y="680"/> + </visualElement> + <visualElement> + <elementName>Probe</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>MMIO_S</string> + </entry> + </elementAttributes> + <pos x="780" y="-140"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MMIO_IE</string> + </entry> + </elementAttributes> + <pos x="740" y="-220"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MMIO_OE</string> + </entry> + </elementAttributes> + <pos x="740" y="-200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MMIO_S</string> + </entry> + </elementAttributes> + <pos x="760" y="-180"/> </visualElement> </visualElements> <wires> @@ -1390,18 +1626,6 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="60" y="0"/> </wire> <wire> - <p1 x="420" y="320"/> - <p2 x="440" y="320"/> - </wire> - <wire> - <p1 x="240" y="320"/> - <p2 x="260" y="320"/> - </wire> - <wire> - <p1 x="-60" y="320"/> - <p2 x="-20" y="320"/> - </wire> - <wire> <p1 x="-260" y="260"/> <p2 x="-220" y="260"/> </wire> @@ -1422,76 +1646,324 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="80" y="260"/> </wire> <wire> - <p1 x="380" y="-200"/> - <p2 x="400" y="-200"/> + <p1 x="420" y="520"/> + <p2 x="440" y="520"/> </wire> <wire> - <p1 x="480" y="-200"/> - <p2 x="580" y="-200"/> + <p1 x="560" y="-140"/> + <p2 x="580" y="-140"/> </wire> <wire> - <p1 x="-380" y="-200"/> - <p2 x="-360" y="-200"/> + <p1 x="740" y="-140"/> + <p2 x="780" y="-140"/> </wire> <wire> - <p1 x="-460" y="-200"/> - <p2 x="-440" y="-200"/> + <p1 x="-580" y="-140"/> + <p2 x="-280" y="-140"/> </wire> <wire> - <p1 x="-160" y="200"/> - <p2 x="-140" y="200"/> + <p1 x="300" y="-140"/> + <p2 x="400" y="-140"/> </wire> <wire> - <p1 x="-240" y="200"/> - <p2 x="-200" y="200"/> + <p1 x="280" y="-140"/> + <p2 x="300" y="-140"/> </wire> <wire> - <p1 x="60" y="200"/> - <p2 x="80" y="200"/> + <p1 x="20" y="-140"/> + <p2 x="280" y="-140"/> </wire> <wire> - <p1 x="200" y="200"/> - <p2 x="220" y="200"/> + <p1 x="400" y="-140"/> + <p2 x="480" y="-140"/> </wire> <wire> - <p1 x="420" y="200"/> - <p2 x="440" y="200"/> + <p1 x="-280" y="-140"/> + <p2 x="20" y="-140"/> </wire> <wire> - <p1 x="420" y="520"/> - <p2 x="440" y="520"/> + <p1 x="420" y="400"/> + <p2 x="440" y="400"/> </wire> <wire> - <p1 x="-580" y="-140"/> - <p2 x="-280" y="-140"/> + <p1 x="-140" y="400"/> + <p2 x="-120" y="400"/> </wire> <wire> - <p1 x="300" y="-140"/> - <p2 x="400" y="-140"/> + <p1 x="-280" y="-20"/> + <p2 x="-260" y="-20"/> </wire> <wire> - <p1 x="280" y="-140"/> - <p2 x="300" y="-140"/> + <p1 x="-160" y="-20"/> + <p2 x="60" y="-20"/> </wire> <wire> - <p1 x="20" y="-140"/> - <p2 x="280" y="-140"/> + <p1 x="180" y="-20"/> + <p2 x="320" y="-20"/> </wire> <wire> - <p1 x="400" y="-140"/> - <p2 x="480" y="-140"/> + <p1 x="460" y="-20"/> + <p2 x="500" y="-20"/> </wire> <wire> - <p1 x="-280" y="-140"/> - <p2 x="20" y="-140"/> + <p1 x="600" y="-20"/> + <p2 x="700" y="-20"/> </wire> <wire> - <p1 x="420" y="460"/> - <p2 x="440" y="460"/> + <p1 x="320" y="-20"/> + <p2 x="360" y="-20"/> + </wire> + <wire> + <p1 x="680" y="20"/> + <p2 x="700" y="20"/> + </wire> + <wire> + <p1 x="80" y="-280"/> + <p2 x="100" y="-280"/> + </wire> + <wire> + <p1 x="180" y="-280"/> + <p2 x="200" y="-280"/> + </wire> + <wire> + <p1 x="420" y="280"/> + <p2 x="520" y="280"/> + </wire> + <wire> + <p1 x="320" y="280"/> + <p2 x="340" y="280"/> + </wire> + <wire> + <p1 x="60" y="280"/> + <p2 x="80" y="280"/> + </wire> + <wire> + <p1 x="420" y="540"/> + <p2 x="440" y="540"/> + </wire> + <wire> + <p1 x="560" y="-160"/> + <p2 x="580" y="-160"/> + </wire> + <wire> + <p1 x="700" y="800"/> + <p2 x="720" y="800"/> + </wire> + <wire> + <p1 x="220" y="160"/> + <p2 x="260" y="160"/> + </wire> + <wire> + <p1 x="420" y="160"/> + <p2 x="440" y="160"/> + </wire> + <wire> + <p1 x="420" y="420"/> + <p2 x="440" y="420"/> + </wire> + <wire> + <p1 x="40" y="-40"/> + <p2 x="60" y="-40"/> + </wire> + <wire> + <p1 x="-160" y="-40"/> + <p2 x="-140" y="-40"/> + </wire> + <wire> + <p1 x="200" y="-40"/> + <p2 x="360" y="-40"/> + </wire> + <wire> + <p1 x="600" y="-40"/> + <p2 x="620" y="-40"/> + </wire> + <wire> + <p1 x="460" y="-40"/> + <p2 x="500" y="-40"/> + </wire> + <wire> + <p1 x="660" y="-40"/> + <p2 x="680" y="-40"/> + </wire> + <wire> + <p1 x="-320" y="680"/> + <p2 x="-300" y="680"/> + </wire> + <wire> + <p1 x="420" y="300"/> + <p2 x="440" y="300"/> + </wire> + <wire> + <p1 x="240" y="300"/> + <p2 x="260" y="300"/> + </wire> + <wire> + <p1 x="60" y="300"/> + <p2 x="80" y="300"/> + </wire> + <wire> + <p1 x="420" y="560"/> + <p2 x="440" y="560"/> + </wire> + <wire> + <p1 x="340" y="560"/> + <p2 x="400" y="560"/> + </wire> + <wire> + <p1 x="-80" y="560"/> + <p2 x="-60" y="560"/> </wire> <wire> - <p1 x="-240" y="460"/> - <p2 x="-220" y="460"/> + <p1 x="-280" y="560"/> + <p2 x="-260" y="560"/> + </wire> + <wire> + <p1 x="0" y="-180"/> + <p2 x="20" y="-180"/> + </wire> + <wire> + <p1 x="560" y="-180"/> + <p2 x="580" y="-180"/> + </wire> + <wire> + <p1 x="720" y="-180"/> + <p2 x="740" y="-180"/> + </wire> + <wire> + <p1 x="740" y="-180"/> + <p2 x="760" y="-180"/> + </wire> + <wire> + <p1 x="-160" y="180"/> + <p2 x="-140" y="180"/> + </wire> + <wire> + <p1 x="-80" y="180"/> + <p2 x="-60" y="180"/> + </wire> + <wire> + <p1 x="60" y="180"/> + <p2 x="80" y="180"/> + </wire> + <wire> + <p1 x="200" y="180"/> + <p2 x="240" y="180"/> + </wire> + <wire> + <p1 x="420" y="180"/> + <p2 x="440" y="180"/> + </wire> + <wire> + <p1 x="220" y="-440"/> + <p2 x="240" y="-440"/> + </wire> + <wire> + <p1 x="420" y="440"/> + <p2 x="440" y="440"/> + </wire> + <wire> + <p1 x="-280" y="-60"/> + <p2 x="-260" y="-60"/> + </wire> + <wire> + <p1 x="-160" y="-60"/> + <p2 x="-100" y="-60"/> + </wire> + <wire> + <p1 x="-440" y="-60"/> + <p2 x="-420" y="-60"/> + </wire> + <wire> + <p1 x="-100" y="-60"/> + <p2 x="60" y="-60"/> + </wire> + <wire> + <p1 x="20" y="60"/> + <p2 x="180" y="60"/> + </wire> + <wire> + <p1 x="200" y="60"/> + <p2 x="480" y="60"/> + </wire> + <wire> + <p1 x="-320" y="700"/> + <p2 x="-300" y="700"/> + </wire> + <wire> + <p1 x="-240" y="700"/> + <p2 x="-200" y="700"/> + </wire> + <wire> + <p1 x="20" y="700"/> + <p2 x="100" y="700"/> + </wire> + <wire> + <p1 x="180" y="-320"/> + <p2 x="240" y="-320"/> + </wire> + <wire> + <p1 x="420" y="320"/> + <p2 x="440" y="320"/> + </wire> + <wire> + <p1 x="240" y="320"/> + <p2 x="260" y="320"/> + </wire> + <wire> + <p1 x="-60" y="320"/> + <p2 x="-20" y="320"/> + </wire> + <wire> + <p1 x="-280" y="580"/> + <p2 x="-260" y="580"/> + </wire> + <wire> + <p1 x="-200" y="580"/> + <p2 x="-160" y="580"/> + </wire> + <wire> + <p1 x="380" y="-200"/> + <p2 x="400" y="-200"/> + </wire> + <wire> + <p1 x="-380" y="-200"/> + <p2 x="-360" y="-200"/> + </wire> + <wire> + <p1 x="-460" y="-200"/> + <p2 x="-440" y="-200"/> + </wire> + <wire> + <p1 x="480" y="-200"/> + <p2 x="580" y="-200"/> + </wire> + <wire> + <p1 x="720" y="-200"/> + <p2 x="740" y="-200"/> + </wire> + <wire> + <p1 x="-160" y="200"/> + <p2 x="-140" y="200"/> + </wire> + <wire> + <p1 x="-240" y="200"/> + <p2 x="-200" y="200"/> + </wire> + <wire> + <p1 x="60" y="200"/> + <p2 x="80" y="200"/> + </wire> + <wire> + <p1 x="200" y="200"/> + <p2 x="220" y="200"/> + </wire> + <wire> + <p1 x="420" y="200"/> + <p2 x="440" y="200"/> + </wire> + <wire> + <p1 x="420" y="460"/> + <p2 x="440" y="460"/> </wire> <wire> <p1 x="-420" y="-80"/> @@ -1534,36 +2006,12 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="200" y="80"/> </wire> <wire> - <p1 x="420" y="400"/> - <p2 x="440" y="400"/> + <p1 x="20" y="720"/> + <p2 x="40" y="720"/> </wire> <wire> - <p1 x="-160" y="400"/> - <p2 x="-120" y="400"/> - </wire> - <wire> - <p1 x="-280" y="-20"/> - <p2 x="-260" y="-20"/> - </wire> - <wire> - <p1 x="-160" y="-20"/> - <p2 x="60" y="-20"/> - </wire> - <wire> - <p1 x="180" y="-20"/> - <p2 x="320" y="-20"/> - </wire> - <wire> - <p1 x="460" y="-20"/> - <p2 x="500" y="-20"/> - </wire> - <wire> - <p1 x="600" y="-20"/> - <p2 x="700" y="-20"/> - </wire> - <wire> - <p1 x="320" y="-20"/> - <p2 x="360" y="-20"/> + <p1 x="-140" y="720"/> + <p2 x="-40" y="720"/> </wire> <wire> <p1 x="-240" y="-340"/> @@ -1578,10 +2026,6 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="700" y="-340"/> </wire> <wire> - <p1 x="680" y="20"/> - <p2 x="700" y="20"/> - </wire> - <wire> <p1 x="420" y="340"/> <p2 x="440" y="340"/> </wire> @@ -1590,24 +2034,8 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="-20" y="340"/> </wire> <wire> - <p1 x="80" y="-280"/> - <p2 x="100" y="-280"/> - </wire> - <wire> - <p1 x="420" y="280"/> - <p2 x="520" y="280"/> - </wire> - <wire> - <p1 x="320" y="280"/> - <p2 x="340" y="280"/> - </wire> - <wire> - <p1 x="60" y="280"/> - <p2 x="80" y="280"/> - </wire> - <wire> - <p1 x="460" y="-220"/> - <p2 x="580" y="-220"/> + <p1 x="-100" y="600"/> + <p2 x="-60" y="600"/> </wire> <wire> <p1 x="-240" y="-220"/> @@ -1630,6 +2058,14 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="-400" y="-220"/> </wire> <wire> + <p1 x="460" y="-220"/> + <p2 x="580" y="-220"/> + </wire> + <wire> + <p1 x="720" y="-220"/> + <p2 x="740" y="-220"/> + </wire> + <wire> <p1 x="-160" y="220"/> <p2 x="-140" y="220"/> </wire> @@ -1650,34 +2086,10 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="220" y="220"/> </wire> <wire> - <p1 x="420" y="540"/> - <p2 x="440" y="540"/> - </wire> - <wire> - <p1 x="700" y="800"/> - <p2 x="720" y="800"/> - </wire> - <wire> <p1 x="420" y="480"/> <p2 x="440" y="480"/> </wire> <wire> - <p1 x="-240" y="480"/> - <p2 x="-220" y="480"/> - </wire> - <wire> - <p1 x="-160" y="480"/> - <p2 x="-140" y="480"/> - </wire> - <wire> - <p1 x="220" y="160"/> - <p2 x="260" y="160"/> - </wire> - <wire> - <p1 x="420" y="160"/> - <p2 x="440" y="160"/> - </wire> - <wire> <p1 x="20" y="-100"/> <p2 x="60" y="-100"/> </wire> @@ -1718,32 +2130,8 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="740" y="740"/> </wire> <wire> - <p1 x="420" y="420"/> - <p2 x="440" y="420"/> - </wire> - <wire> - <p1 x="40" y="-40"/> - <p2 x="60" y="-40"/> - </wire> - <wire> - <p1 x="-160" y="-40"/> - <p2 x="-140" y="-40"/> - </wire> - <wire> - <p1 x="200" y="-40"/> - <p2 x="360" y="-40"/> - </wire> - <wire> - <p1 x="600" y="-40"/> - <p2 x="620" y="-40"/> - </wire> - <wire> - <p1 x="460" y="-40"/> - <p2 x="500" y="-40"/> - </wire> - <wire> - <p1 x="660" y="-40"/> - <p2 x="680" y="-40"/> + <p1 x="-220" y="740"/> + <p2 x="-200" y="740"/> </wire> <wire> <p1 x="420" y="360"/> @@ -1754,16 +2142,8 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="-20" y="360"/> </wire> <wire> - <p1 x="420" y="300"/> - <p2 x="440" y="300"/> - </wire> - <wire> - <p1 x="240" y="300"/> - <p2 x="260" y="300"/> - </wire> - <wire> - <p1 x="60" y="300"/> - <p2 x="80" y="300"/> + <p1 x="-180" y="620"/> + <p2 x="-160" y="620"/> </wire> <wire> <p1 x="-280" y="-240"/> @@ -1790,14 +2170,6 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="400" y="-240"/> </wire> <wire> - <p1 x="420" y="560"/> - <p2 x="440" y="560"/> - </wire> - <wire> - <p1 x="340" y="560"/> - <p2 x="400" y="560"/> - </wire> - <wire> <p1 x="240" y="240"/> <p2 x="260" y="240"/> </wire> @@ -1814,116 +2186,128 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="80" y="240"/> </wire> <wire> - <p1 x="0" y="-180"/> - <p2 x="20" y="-180"/> + <p1 x="420" y="500"/> + <p2 x="440" y="500"/> </wire> <wire> - <p1 x="-160" y="180"/> - <p2 x="-140" y="180"/> + <p1 x="100" y="-380"/> + <p2 x="240" y="-380"/> </wire> <wire> - <p1 x="-80" y="180"/> - <p2 x="-60" y="180"/> + <p1 x="680" y="-380"/> + <p2 x="700" y="-380"/> </wire> <wire> - <p1 x="60" y="180"/> - <p2 x="80" y="180"/> + <p1 x="420" y="380"/> + <p2 x="440" y="380"/> </wire> <wire> - <p1 x="200" y="180"/> - <p2 x="240" y="180"/> + <p1 x="-60" y="380"/> + <p2 x="-20" y="380"/> </wire> <wire> - <p1 x="420" y="180"/> - <p2 x="440" y="180"/> + <p1 x="-140" y="380"/> + <p2 x="-120" y="380"/> </wire> <wire> - <p1 x="420" y="500"/> - <p2 x="440" y="500"/> + <p1 x="320" y="-100"/> + <p2 x="320" y="-20"/> </wire> <wire> - <p1 x="220" y="-440"/> - <p2 x="240" y="-440"/> + <p1 x="640" y="-80"/> + <p2 x="640" y="-60"/> </wire> <wire> - <p1 x="420" y="440"/> - <p2 x="440" y="440"/> + <p1 x="0" y="260"/> + <p2 x="0" y="320"/> </wire> <wire> - <p1 x="-280" y="-60"/> - <p2 x="-260" y="-60"/> + <p1 x="-580" y="-140"/> + <p2 x="-580" y="-100"/> </wire> <wire> - <p1 x="-160" y="-60"/> - <p2 x="-100" y="-60"/> + <p1 x="200" y="-100"/> + <p2 x="200" y="-40"/> </wire> <wire> - <p1 x="-440" y="-60"/> - <p2 x="-420" y="-60"/> + <p1 x="200" y="60"/> + <p2 x="200" y="80"/> </wire> <wire> - <p1 x="-100" y="-60"/> - <p2 x="60" y="-60"/> + <p1 x="-140" y="-40"/> + <p2 x="-140" y="80"/> </wire> <wire> - <p1 x="100" y="-380"/> - <p2 x="240" y="-380"/> + <p1 x="-140" y="-100"/> + <p2 x="-140" y="-80"/> </wire> <wire> - <p1 x="680" y="-380"/> - <p2 x="700" y="-380"/> + <p1 x="140" y="-220"/> + <p2 x="140" y="-200"/> </wire> <wire> - <p1 x="20" y="60"/> - <p2 x="180" y="60"/> + <p1 x="-80" y="540"/> + <p2 x="-80" y="560"/> </wire> <wire> - <p1 x="200" y="60"/> - <p2 x="480" y="60"/> + <p1 x="400" y="-140"/> + <p2 x="400" y="-100"/> </wire> <wire> - <p1 x="420" y="380"/> - <p2 x="440" y="380"/> + <p1 x="-20" y="240"/> + <p2 x="-20" y="260"/> </wire> <wire> - <p1 x="-140" y="380"/> - <p2 x="-120" y="380"/> + <p1 x="20" y="-140"/> + <p2 x="20" y="-100"/> </wire> <wire> - <p1 x="-60" y="380"/> - <p2 x="-20" y="380"/> + <p1 x="20" y="0"/> + <p2 x="20" y="60"/> </wire> <wire> - <p1 x="180" y="-320"/> - <p2 x="240" y="-320"/> + <p1 x="340" y="280"/> + <p2 x="340" y="560"/> </wire> <wire> - <p1 x="320" y="-100"/> - <p2 x="320" y="-20"/> + <p1 x="-280" y="-240"/> + <p2 x="-280" y="-220"/> </wire> <wire> - <p1 x="640" y="-80"/> - <p2 x="640" y="-60"/> + <p1 x="-280" y="-140"/> + <p2 x="-280" y="-80"/> </wire> <wire> - <p1 x="0" y="260"/> - <p2 x="0" y="320"/> + <p1 x="-280" y="-220"/> + <p2 x="-280" y="-140"/> </wire> <wire> - <p1 x="480" y="-200"/> - <p2 x="480" y="-140"/> + <p1 x="280" y="-140"/> + <p2 x="280" y="-100"/> + </wire> + <wire> + <p1 x="220" y="160"/> + <p2 x="220" y="200"/> + </wire> + <wire> + <p1 x="220" y="220"/> + <p2 x="220" y="360"/> + </wire> + <wire> + <p1 x="-160" y="220"/> + <p2 x="-160" y="240"/> </wire> <wire> <p1 x="480" y="0"/> <p2 x="480" y="60"/> </wire> <wire> - <p1 x="480" y="-140"/> - <p2 x="480" y="-100"/> + <p1 x="480" y="-200"/> + <p2 x="480" y="-140"/> </wire> <wire> - <p1 x="-580" y="-140"/> - <p2 x="-580" y="-100"/> + <p1 x="480" y="-140"/> + <p2 x="480" y="-100"/> </wire> <wire> <p1 x="-100" y="-80"/> @@ -1942,12 +2326,8 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="100" y="-240"/> </wire> <wire> - <p1 x="200" y="-100"/> - <p2 x="200" y="-40"/> - </wire> - <wire> - <p1 x="200" y="60"/> - <p2 x="200" y="80"/> + <p1 x="740" y="-180"/> + <p2 x="740" y="-140"/> </wire> <wire> <p1 x="680" y="20"/> @@ -1962,22 +2342,6 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="680" y="-340"/> </wire> <wire> - <p1 x="-140" y="-40"/> - <p2 x="-140" y="80"/> - </wire> - <wire> - <p1 x="-140" y="-100"/> - <p2 x="-140" y="-80"/> - </wire> - <wire> - <p1 x="-140" y="380"/> - <p2 x="-140" y="480"/> - </wire> - <wire> - <p1 x="140" y="-220"/> - <p2 x="140" y="-200"/> - </wire> - <wire> <p1 x="300" y="-240"/> <p2 x="300" y="-140"/> </wire> @@ -1986,30 +2350,10 @@ program(0x4051, 0x40a2, 0x029b) <p2 x="-240" y="-220"/> </wire> <wire> - <p1 x="400" y="-140"/> - <p2 x="400" y="-100"/> - </wire> - <wire> <p1 x="240" y="180"/> <p2 x="240" y="240"/> </wire> <wire> - <p1 x="-20" y="240"/> - <p2 x="-20" y="260"/> - </wire> - <wire> - <p1 x="20" y="-140"/> - <p2 x="20" y="-100"/> - </wire> - <wire> - <p1 x="20" y="0"/> - <p2 x="20" y="60"/> - </wire> - <wire> - <p1 x="340" y="280"/> - <p2 x="340" y="560"/> - </wire> - <wire> <p1 x="180" y="-80"/> <p2 x="180" y="-20"/> </wire> @@ -2019,40 +2363,16 @@ program(0x4051, 0x40a2, 0x029b) </wire> <wire> <p1 x="180" y="-320"/> - <p2 x="180" y="-240"/> + <p2 x="180" y="-280"/> </wire> <wire> - <p1 x="-280" y="-240"/> - <p2 x="-280" y="-220"/> - </wire> - <wire> - <p1 x="-280" y="-140"/> - <p2 x="-280" y="-80"/> - </wire> - <wire> - <p1 x="-280" y="-220"/> - <p2 x="-280" y="-140"/> - </wire> - <wire> - <p1 x="280" y="-140"/> - <p2 x="280" y="-100"/> + <p1 x="180" y="-280"/> + <p2 x="180" y="-240"/> </wire> <wire> <p1 x="-60" y="180"/> <p2 x="-60" y="240"/> </wire> - <wire> - <p1 x="220" y="160"/> - <p2 x="220" y="200"/> - </wire> - <wire> - <p1 x="220" y="220"/> - <p2 x="220" y="360"/> - </wire> - <wire> - <p1 x="-160" y="220"/> - <p2 x="-160" y="240"/> - </wire> </wires> <measurementOrdering/> </circuit>
\ No newline at end of file diff --git a/digital/atk16_mem.dig b/digital/atk16_mem.dig index 540e64d..0c217b9 100644 --- a/digital/atk16_mem.dig +++ b/digital/atk16_mem.dig @@ -10,122 +10,194 @@ </entry> <entry> <string>Width</string> - <int>5</int> + <int>7</int> </entry> </attributes> <visualElements> <visualElement> - <elementName>RAMAsync</elementName> + <elementName>EEPROM</elementName> <elementAttributes> <entry> <string>AddrBits</string> <int>15</int> </entry> <entry> + <string>isProgramMemory</string> + <boolean>true</boolean> + </entry> + <entry> <string>Label</string> - <string>MEM_RAM</string> + <string>MEM_ROM</string> </entry> <entry> <string>Bits</string> <int>16</int> </entry> + <entry> + <string>Data</string> + <data>4014,2a00,6026,13*8000,18,18,18,1a,8000,0,e000,e001,4855,f000 +,3140,1b48,3148,1b48,4017,2000,2000,4216,2240,3040,1b49,2340,1b49 +,2140,e000,61ff</data> + </entry> </elementAttributes> - <pos x="680" y="280"/> + <pos x="740" y="100"/> </visualElement> <visualElement> - <elementName>Tunnel</elementName> + <elementName>Ground</elementName> <elementAttributes> <entry> <string>rotation</string> - <rotation rotation="2"/> + <rotation rotation="1"/> </entry> + </elementAttributes> + <pos x="720" y="160"/> + </visualElement> + <visualElement> + <elementName>VDD</elementName> + <elementAttributes> <entry> - <string>NetName</string> - <string>MEM_IE</string> + <string>rotation</string> + <rotation rotation="1"/> </entry> </elementAttributes> - <pos x="680" y="320"/> + <pos x="720" y="120"/> </visualElement> <visualElement> - <elementName>EEPROM</elementName> + <elementName>VDD</elementName> <elementAttributes> <entry> - <string>AddrBits</string> - <int>15</int> + <string>rotation</string> + <rotation reference="../../../../visualElement[3]/elementAttributes/entry/rotation"/> </entry> + </elementAttributes> + <pos x="720" y="180"/> + </visualElement> + <visualElement> + <elementName>In</elementName> + <elementAttributes> <entry> - <string>isProgramMemory</string> - <boolean>true</boolean> + <string>Description</string> + <string>Address</string> </entry> <entry> <string>Label</string> - <string>MEM_ROM</string> + <string>ADDR</string> </entry> <entry> <string>Bits</string> <int>16</int> </entry> + </elementAttributes> + <pos x="160" y="140"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> <entry> - <string>Data</string> - <data>4014,2a00,6015,13*8000,4*16,8010,0,4855,e000,400a,9e00,1fe0,3178 -,1b48,6001,f000,3148,1b48,3150,1b48,1011,860a,3158,1b48,4200,4401 -,650,1280,14c0,1009,8408,61fa,1b49,2540,1b49,2340,1b49,2f40,51c0 -,10c0,1b49,2740,1b49,2540,1b49,2340,1b49,2f40,51c0</data> + <string>Input Splitting</string> + <string>16</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>13,1,1,1</string> </entry> </elementAttributes> - <pos x="740" y="100"/> + <pos x="220" y="140"/> + </visualElement> + <visualElement> + <elementName>atk16_mem_mux.dig</elementName> + <elementAttributes/> + <pos x="320" y="160"/> </visualElement> <visualElement> <elementName>Splitter</elementName> <elementAttributes> <entry> <string>Input Splitting</string> - <string>16</string> + <string>13,1,1</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>15</string> + </entry> + </elementAttributes> + <pos x="320" y="80"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>1,1</string> </entry> <entry> <string>Output Splitting</string> - <string>15,1</string> + <string>2</string> </entry> </elementAttributes> - <pos x="520" y="180"/> + <pos x="400" y="160"/> </visualElement> <visualElement> <elementName>Demultiplexer</elementName> <elementAttributes> <entry> + <string>Selector Bits</string> + <int>2</int> + </entry> + <entry> <string>Bits</string> <int>15</int> </entry> </elementAttributes> - <pos x="560" y="160"/> + <pos x="420" y="60"/> </visualElement> <visualElement> - <elementName>Ground</elementName> + <elementName>Probe</elementName> <elementAttributes> <entry> - <string>rotation</string> - <rotation rotation="1"/> + <string>Label</string> + <string>ROM_OUT</string> </entry> </elementAttributes> - <pos x="720" y="160"/> + <pos x="840" y="100"/> </visualElement> <visualElement> - <elementName>In</elementName> + <elementName>Driver</elementName> <elementAttributes> <entry> - <string>Description</string> - <string>Address</string> + <string>Bits</string> + <int>16</int> </entry> <entry> - <string>Label</string> - <string>ADDR</string> + <string>flipSelPos</string> + <boolean>true</boolean> </entry> + </elementAttributes> + <pos x="880" y="140"/> + </visualElement> + <visualElement> + <elementName>Demultiplexer</elementName> + <elementAttributes> <entry> - <string>Bits</string> - <int>16</int> + <string>Selector Bits</string> + <int>2</int> + </entry> + <entry> + <string>flipSelPos</string> + <boolean>true</boolean> </entry> </elementAttributes> - <pos x="360" y="180"/> + <pos x="420" y="300"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>RAM_IE</string> + </entry> + </elementAttributes> + <pos x="480" y="320"/> </visualElement> <visualElement> <elementName>In</elementName> @@ -147,83 +219,159 @@ <boolean>true</boolean> </entry> </elementAttributes> - <pos x="360" y="300"/> + <pos x="260" y="500"/> </visualElement> <visualElement> - <elementName>Driver</elementName> + <elementName>Tunnel</elementName> <elementAttributes> <entry> - <string>rotation</string> - <rotation rotation="2"/> + <string>NetName</string> + <string>CLK</string> + </entry> + </elementAttributes> + <pos x="180" y="280"/> + </visualElement> + <visualElement> + <elementName>RAMDualPort</elementName> + <elementAttributes> + <entry> + <string>AddrBits</string> + <int>15</int> + </entry> + <entry> + <string>Label</string> + <string>MEM_RAM</string> </entry> <entry> <string>Bits</string> <int>16</int> </entry> </elementAttributes> - <pos x="700" y="440"/> + <pos x="660" y="280"/> + </visualElement> + <visualElement> + <elementName>VDD</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + </elementAttributes> + <pos x="640" y="360"/> </visualElement> <visualElement> <elementName>Tunnel</elementName> <elementAttributes> <entry> <string>rotation</string> - <rotation rotation="3"/> + <rotation rotation="2"/> </entry> <entry> <string>NetName</string> - <string>MEM_OE</string> + <string>CLK</string> + </entry> + </elementAttributes> + <pos x="640" y="340"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>RAM_IE</string> + </entry> + </elementAttributes> + <pos x="640" y="320"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>DBUS</string> + </entry> + </elementAttributes> + <pos x="640" y="300"/> + </visualElement> + <visualElement> + <elementName>Probe</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>RAM_OUT</string> + </entry> + </elementAttributes> + <pos x="760" y="280"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>16</int> </entry> </elementAttributes> - <pos x="700" y="480"/> + <pos x="860" y="320"/> </visualElement> <visualElement> <elementName>In</elementName> <elementAttributes> <entry> <string>Description</string> - <string>Memory input enable</string> + <string>Clock</string> </entry> <entry> <string>Label</string> - <string>MEM_IE</string> + <string>CLK</string> </entry> </elementAttributes> - <pos x="360" y="420"/> + <pos x="160" y="280"/> </visualElement> <visualElement> - <elementName>In</elementName> + <elementName>Out</elementName> <elementAttributes> <entry> <string>Description</string> - <string>Memory output enable</string> + <string>Memory-mapped I/O word input enable</string> </entry> <entry> <string>Label</string> - <string>MEM_OE</string> + <string>MMIO_IE</string> </entry> </elementAttributes> - <pos x="360" y="540"/> + <pos x="880" y="540"/> </visualElement> <visualElement> - <elementName>Tunnel</elementName> + <elementName>Out</elementName> <elementAttributes> <entry> - <string>NetName</string> - <string>MEM_OE</string> + <string>Description</string> + <string>Memory-mapped I/O word output enable</string> + </entry> + <entry> + <string>Label</string> + <string>MMIO_OE</string> </entry> </elementAttributes> - <pos x="380" y="540"/> + <pos x="880" y="600"/> </visualElement> <visualElement> <elementName>Tunnel</elementName> <elementAttributes> <entry> <string>NetName</string> - <string>MEM_IE</string> + <string>MMIO_S</string> </entry> </elementAttributes> - <pos x="380" y="420"/> + <pos x="260" y="40"/> </visualElement> <visualElement> <elementName>Testcase</elementName> @@ -231,243 +379,573 @@ <entry> <string>Testdata</string> <testData> - <dataString>ADDR MEM_IE MEM_OE DBUS DBUS_out + <dataString>CLK ADDR MEM_IE MEM_OE DBUS DBUS_out # read ROM program(0xFF) -0x0 0 1 Z 0xFF +C 0x0 0 1 Z 0xFF # read RAM memory MEM_RAM(0x0)=0x55; -0 0 0 Z X -0x8000 0 1 Z 0x55 +C 0 0 0 Z X +C 0x8000 0 1 Z 0x55 # write to RAM -0x8000 1 0 0xAA 0xAA -0x8000 0 1 Z 0xAA +C 0x8000 1 0 0xAA 0xAA +C 0x8000 0 1 Z 0xAA </dataString> </testData> </entry> </elementAttributes> - <pos x="940" y="340"/> + <pos x="540" y="480"/> </visualElement> <visualElement> - <elementName>Driver</elementName> + <elementName>In</elementName> <elementAttributes> <entry> - <string>Bits</string> - <int>16</int> + <string>Description</string> + <string>Memory input enable</string> + </entry> + <entry> + <string>Label</string> + <string>MEM_IE</string> </entry> </elementAttributes> - <pos x="800" y="300"/> + <pos x="160" y="340"/> </visualElement> <visualElement> - <elementName>VDD</elementName> + <elementName>In</elementName> <elementAttributes> <entry> - <string>rotation</string> - <rotation rotation="1"/> + <string>Description</string> + <string>Memory output enable</string> + </entry> + <entry> + <string>Label</string> + <string>MEM_OE</string> </entry> </elementAttributes> - <pos x="720" y="120"/> + <pos x="260" y="560"/> </visualElement> <visualElement> - <elementName>VDD</elementName> + <elementName>And</elementName> <elementAttributes> <entry> <string>rotation</string> - <rotation reference="../../../../visualElement[17]/elementAttributes/entry/rotation"/> + <rotation rotation="2"/> </entry> </elementAttributes> - <pos x="720" y="180"/> + <pos x="960" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>RAM_OE</string> + </entry> + </elementAttributes> + <pos x="960" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MEM_OE</string> + </entry> + </elementAttributes> + <pos x="280" y="560"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MEM_OE</string> + </entry> + </elementAttributes> + <pos x="960" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>DBUS</string> + </entry> + </elementAttributes> + <pos x="900" y="320"/> </visualElement> <visualElement> - <elementName>DriverInvSel</elementName> + <elementName>And</elementName> <elementAttributes> <entry> <string>rotation</string> - <rotation rotation="3"/> + <rotation rotation="2"/> </entry> + </elementAttributes> + <pos x="960" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> <entry> - <string>Bits</string> - <int>16</int> + <string>NetName</string> + <string>ROM_OE</string> + </entry> + </elementAttributes> + <pos x="960" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MEM_OE</string> + </entry> + </elementAttributes> + <pos x="960" y="160"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>DBUS</string> + </entry> + </elementAttributes> + <pos x="920" y="120"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>DBUS</string> + </entry> + </elementAttributes> + <pos x="280" y="500"/> + </visualElement> + <visualElement> + <elementName>Decoder</elementName> + <elementAttributes> + <entry> + <string>Selector Bits</string> + <int>2</int> </entry> <entry> <string>flipSelPos</string> <boolean>true</boolean> </entry> </elementAttributes> - <pos x="840" y="180"/> + <pos x="460" y="180"/> </visualElement> <visualElement> - <elementName>Probe</elementName> + <elementName>Tunnel</elementName> <elementAttributes> <entry> - <string>Label</string> - <string>ROM_OUT</string> + <string>NetName</string> + <string>ROM_OE</string> </entry> </elementAttributes> - <pos x="880" y="140"/> + <pos x="500" y="180"/> </visualElement> <visualElement> - <elementName>Probe</elementName> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>RAM_OE</string> + </entry> + </elementAttributes> + <pos x="500" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MMIO_OE</string> + </entry> + </elementAttributes> + <pos x="500" y="220"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MMIO_IE</string> + </entry> + </elementAttributes> + <pos x="480" y="340"/> + </visualElement> + <visualElement> + <elementName>And</elementName> + <elementAttributes/> + <pos x="780" y="580"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MEM_OE</string> + </entry> + </elementAttributes> + <pos x="780" y="620"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MMIO_OE</string> + </entry> + </elementAttributes> + <pos x="780" y="580"/> + </visualElement> + <visualElement> + <elementName>And</elementName> + <elementAttributes/> + <pos x="780" y="500"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MEM_IE</string> + </entry> + </elementAttributes> + <pos x="780" y="540"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MMIO_IE</string> + </entry> + </elementAttributes> + <pos x="780" y="500"/> + </visualElement> + <visualElement> + <elementName>Out</elementName> <elementAttributes> <entry> + <string>Description</string> + <string>Memory-mapped I/O word selector</string> + </entry> + <entry> <string>Label</string> - <string>RAM_OUT</string> + <string>MMIO_S</string> + </entry> + <entry> + <string>Bits</string> + <int>13</int> </entry> </elementAttributes> - <pos x="900" y="320"/> + <pos x="880" y="460"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MMIO_S</string> + </entry> + </elementAttributes> + <pos x="860" y="460"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MEM_IE</string> + </entry> + </elementAttributes> + <pos x="300" y="360"/> </visualElement> </visualElements> <wires> <wire> - <p1 x="600" y="160"/> - <p2 x="620" y="160"/> - </wire> - <wire> <p1 x="720" y="160"/> <p2 x="740" y="160"/> </wire> <wire> - <p1 x="760" y="320"/> + <p1 x="240" y="160"/> + <p2 x="260" y="160"/> + </wire> + <wire> + <p1 x="380" y="160"/> + <p2 x="400" y="160"/> + </wire> + <wire> + <p1 x="420" y="160"/> + <p2 x="440" y="160"/> + </wire> + <wire> + <p1 x="260" y="160"/> + <p2 x="320" y="160"/> + </wire> + <wire> + <p1 x="440" y="160"/> + <p2 x="480" y="160"/> + </wire> + <wire> + <p1 x="460" y="320"/> + <p2 x="480" y="320"/> + </wire> + <wire> + <p1 x="640" y="320"/> + <p2 x="660" y="320"/> + </wire> + <wire> + <p1 x="720" y="320"/> + <p2 x="760" y="320"/> + </wire> + <wire> + <p1 x="880" y="320"/> <p2 x="900" y="320"/> </wire> <wire> + <p1 x="760" y="320"/> + <p2 x="840" y="320"/> + </wire> + <wire> <p1 x="620" y="100"/> <p2 x="740" y="100"/> </wire> <wire> - <p1 x="360" y="420"/> - <p2 x="380" y="420"/> + <p1 x="260" y="100"/> + <p2 x="320" y="100"/> + </wire> + <wire> + <p1 x="380" y="100"/> + <p2 x="420" y="100"/> </wire> <wire> - <p1 x="540" y="200"/> - <p2 x="580" y="200"/> + <p1 x="860" y="260"/> + <p2 x="900" y="260"/> </wire> <wire> - <p1 x="600" y="200"/> - <p2 x="620" y="200"/> + <p1 x="240" y="200"/> + <p2 x="320" y="200"/> </wire> <wire> - <p1 x="360" y="300"/> - <p2 x="520" y="300"/> + <p1 x="640" y="360"/> + <p2 x="660" y="360"/> </wire> <wire> - <p1 x="820" y="300"/> - <p2 x="840" y="300"/> + <p1 x="280" y="360"/> + <p2 x="300" y="360"/> </wire> <wire> - <p1 x="740" y="300"/> - <p2 x="760" y="300"/> + <p1 x="240" y="40"/> + <p2 x="260" y="40"/> </wire> <wire> - <p1 x="520" y="300"/> - <p2 x="680" y="300"/> + <p1 x="840" y="520"/> + <p2 x="860" y="520"/> </wire> <wire> - <p1 x="760" y="300"/> - <p2 x="780" y="300"/> + <p1 x="640" y="300"/> + <p2 x="660" y="300"/> </wire> <wire> <p1 x="800" y="140"/> <p2 x="840" y="140"/> </wire> <wire> + <p1 x="160" y="140"/> + <p2 x="220" y="140"/> + </wire> + <wire> <p1 x="840" y="140"/> - <p2 x="880" y="140"/> + <p2 x="860" y="140"/> </wire> <wire> - <p1 x="640" y="240"/> - <p2 x="800" y="240"/> + <p1 x="860" y="460"/> + <p2 x="880" y="460"/> </wire> <wire> - <p1 x="800" y="240"/> - <p2 x="820" y="240"/> + <p1 x="240" y="80"/> + <p2 x="320" y="80"/> </wire> <wire> - <p1 x="540" y="180"/> - <p2 x="560" y="180"/> + <p1 x="340" y="80"/> + <p2 x="380" y="80"/> </wire> <wire> - <p1 x="360" y="180"/> - <p2 x="520" y="180"/> + <p1 x="460" y="80"/> + <p2 x="600" y="80"/> + </wire> + <wire> + <p1 x="260" y="560"/> + <p2 x="280" y="560"/> </wire> <wire> <p1 x="720" y="180"/> <p2 x="740" y="180"/> </wire> <wire> - <p1 x="620" y="280"/> - <p2 x="680" y="280"/> + <p1 x="240" y="180"/> + <p2 x="280" y="180"/> + </wire> + <wire> + <p1 x="380" y="180"/> + <p2 x="400" y="180"/> + </wire> + <wire> + <p1 x="880" y="180"/> + <p2 x="900" y="180"/> + </wire> + <wire> + <p1 x="280" y="180"/> + <p2 x="320" y="180"/> </wire> <wire> - <p1 x="520" y="440"/> - <p2 x="680" y="440"/> + <p1 x="640" y="340"/> + <p2 x="660" y="340"/> </wire> <wire> - <p1 x="720" y="440"/> - <p2 x="840" y="440"/> + <p1 x="160" y="340"/> + <p2 x="280" y="340"/> + </wire> + <wire> + <p1 x="460" y="340"/> + <p2 x="480" y="340"/> + </wire> + <wire> + <p1 x="280" y="340"/> + <p2 x="420" y="340"/> + </wire> + <wire> + <p1 x="260" y="500"/> + <p2 x="280" y="500"/> + </wire> + <wire> + <p1 x="160" y="280"/> + <p2 x="180" y="280"/> + </wire> + <wire> + <p1 x="600" y="280"/> + <p2 x="660" y="280"/> </wire> <wire> <p1 x="720" y="120"/> <p2 x="740" y="120"/> </wire> <wire> - <p1 x="580" y="220"/> - <p2 x="640" y="220"/> + <p1 x="280" y="120"/> + <p2 x="320" y="120"/> </wire> <wire> - <p1 x="360" y="540"/> - <p2 x="380" y="540"/> + <p1 x="900" y="120"/> + <p2 x="920" y="120"/> </wire> <wire> - <p1 x="640" y="220"/> - <p2 x="640" y="240"/> + <p1 x="840" y="600"/> + <p2 x="880" y="600"/> </wire> <wire> - <p1 x="800" y="240"/> - <p2 x="800" y="280"/> + <p1 x="460" y="60"/> + <p2 x="620" y="60"/> </wire> <wire> - <p1 x="580" y="200"/> - <p2 x="580" y="220"/> + <p1 x="860" y="540"/> + <p2 x="880" y="540"/> </wire> <wire> - <p1 x="820" y="180"/> - <p2 x="820" y="240"/> + <p1 x="480" y="160"/> + <p2 x="480" y="180"/> </wire> <wire> - <p1 x="520" y="300"/> - <p2 x="520" y="440"/> + <p1 x="260" y="100"/> + <p2 x="260" y="160"/> </wire> <wire> - <p1 x="840" y="200"/> - <p2 x="840" y="300"/> + <p1 x="900" y="120"/> + <p2 x="900" y="140"/> </wire> <wire> - <p1 x="840" y="140"/> - <p2 x="840" y="160"/> + <p1 x="840" y="100"/> + <p2 x="840" y="140"/> </wire> <wire> - <p1 x="840" y="300"/> - <p2 x="840" y="440"/> + <p1 x="620" y="60"/> + <p2 x="620" y="100"/> </wire> <wire> - <p1 x="760" y="300"/> + <p1 x="240" y="40"/> + <p2 x="240" y="80"/> + </wire> + <wire> + <p1 x="240" y="80"/> + <p2 x="240" y="140"/> + </wire> + <wire> + <p1 x="880" y="160"/> + <p2 x="880" y="180"/> + </wire> + <wire> + <p1 x="280" y="120"/> + <p2 x="280" y="180"/> + </wire> + <wire> + <p1 x="280" y="340"/> + <p2 x="280" y="360"/> + </wire> + <wire> + <p1 x="440" y="140"/> + <p2 x="440" y="160"/> + </wire> + <wire> + <p1 x="440" y="160"/> + <p2 x="440" y="300"/> + </wire> + <wire> + <p1 x="600" y="80"/> + <p2 x="600" y="280"/> + </wire> + <wire> + <p1 x="760" y="280"/> <p2 x="760" y="320"/> </wire> <wire> - <p1 x="620" y="100"/> - <p2 x="620" y="160"/> + <p1 x="380" y="80"/> + <p2 x="380" y="100"/> </wire> <wire> - <p1 x="620" y="200"/> - <p2 x="620" y="280"/> + <p1 x="860" y="520"/> + <p2 x="860" y="540"/> </wire> <wire> - <p1 x="700" y="460"/> - <p2 x="700" y="480"/> + <p1 x="860" y="260"/> + <p2 x="860" y="300"/> </wire> </wires> <measurementOrdering/> diff --git a/digital/atk16_mem_mux.dig b/digital/atk16_mem_mux.dig new file mode 100644 index 0000000..d4be584 --- /dev/null +++ b/digital/atk16_mem_mux.dig @@ -0,0 +1,276 @@ +<?xml version="1.0" encoding="utf-8"?> +<circuit> + <version>2</version> + <attributes/> + <visualElements> + <visualElement> + <elementName>Out</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>X</string> + </entry> + <entry> + <string>Inputs</string> + <int>1</int> + </entry> + </elementAttributes> + <pos x="240" y="140"/> + </visualElement> + <visualElement> + <elementName>And</elementName> + <elementAttributes> + <entry> + <string>wideShape</string> + <boolean>true</boolean> + </entry> + <entry> + <string>Inputs</string> + <int>3</int> + </entry> + </elementAttributes> + <pos x="20" y="0"/> + </visualElement> + <visualElement> + <elementName>Out</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>Y</string> + </entry> + <entry> + <string>Inputs</string> + <int>1</int> + </entry> + </elementAttributes> + <pos x="240" y="20"/> + </visualElement> + <visualElement> + <elementName>Or</elementName> + <elementAttributes> + <entry> + <string>wideShape</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="140" y="120"/> + </visualElement> + <visualElement> + <elementName>And</elementName> + <elementAttributes> + <entry> + <string>wideShape</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="20" y="80"/> + </visualElement> + <visualElement> + <elementName>And</elementName> + <elementAttributes> + <entry> + <string>wideShape</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="20" y="160"/> + </visualElement> + <visualElement> + <elementName>In</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>Label</string> + <string>C</string> + </entry> + </elementAttributes> + <pos x="-40" y="-100"/> + </visualElement> + <visualElement> + <elementName>In</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>Label</string> + <string>B</string> + </entry> + </elementAttributes> + <pos x="-100" y="-100"/> + </visualElement> + <visualElement> + <elementName>Not</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + </elementAttributes> + <pos x="-80" y="-60"/> + </visualElement> + <visualElement> + <elementName>In</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>Label</string> + <string>A</string> + </entry> + </elementAttributes> + <pos x="-160" y="-100"/> + </visualElement> + <visualElement> + <elementName>Not</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + </elementAttributes> + <pos x="-20" y="-60"/> + </visualElement> + </visualElements> + <wires> + <wire> + <p1 x="-160" y="0"/> + <p2 x="20" y="0"/> + </wire> + <wire> + <p1 x="-160" y="80"/> + <p2 x="20" y="80"/> + </wire> + <wire> + <p1 x="-160" y="160"/> + <p2 x="20" y="160"/> + </wire> + <wire> + <p1 x="120" y="160"/> + <p2 x="140" y="160"/> + </wire> + <wire> + <p1 x="-100" y="20"/> + <p2 x="20" y="20"/> + </wire> + <wire> + <p1 x="100" y="20"/> + <p2 x="240" y="20"/> + </wire> + <wire> + <p1 x="100" y="100"/> + <p2 x="120" y="100"/> + </wire> + <wire> + <p1 x="100" y="180"/> + <p2 x="120" y="180"/> + </wire> + <wire> + <p1 x="-40" y="40"/> + <p2 x="20" y="40"/> + </wire> + <wire> + <p1 x="-80" y="120"/> + <p2 x="20" y="120"/> + </wire> + <wire> + <p1 x="120" y="120"/> + <p2 x="140" y="120"/> + </wire> + <wire> + <p1 x="-20" y="200"/> + <p2 x="20" y="200"/> + </wire> + <wire> + <p1 x="220" y="140"/> + <p2 x="240" y="140"/> + </wire> + <wire> + <p1 x="-100" y="-80"/> + <p2 x="-80" y="-80"/> + </wire> + <wire> + <p1 x="-40" y="-80"/> + <p2 x="-20" y="-80"/> + </wire> + <wire> + <p1 x="-100" y="-100"/> + <p2 x="-100" y="-80"/> + </wire> + <wire> + <p1 x="-100" y="20"/> + <p2 x="-100" y="220"/> + </wire> + <wire> + <p1 x="-100" y="-80"/> + <p2 x="-100" y="20"/> + </wire> + <wire> + <p1 x="-20" y="-80"/> + <p2 x="-20" y="-60"/> + </wire> + <wire> + <p1 x="-20" y="-20"/> + <p2 x="-20" y="200"/> + </wire> + <wire> + <p1 x="-20" y="200"/> + <p2 x="-20" y="220"/> + </wire> + <wire> + <p1 x="-40" y="-100"/> + <p2 x="-40" y="-80"/> + </wire> + <wire> + <p1 x="-40" y="-80"/> + <p2 x="-40" y="40"/> + </wire> + <wire> + <p1 x="-40" y="40"/> + <p2 x="-40" y="220"/> + </wire> + <wire> + <p1 x="120" y="100"/> + <p2 x="120" y="120"/> + </wire> + <wire> + <p1 x="120" y="160"/> + <p2 x="120" y="180"/> + </wire> + <wire> + <p1 x="-160" y="-100"/> + <p2 x="-160" y="0"/> + </wire> + <wire> + <p1 x="-160" y="80"/> + <p2 x="-160" y="160"/> + </wire> + <wire> + <p1 x="-160" y="0"/> + <p2 x="-160" y="80"/> + </wire> + <wire> + <p1 x="-160" y="160"/> + <p2 x="-160" y="220"/> + </wire> + <wire> + <p1 x="-80" y="-80"/> + <p2 x="-80" y="-60"/> + </wire> + <wire> + <p1 x="-80" y="-20"/> + <p2 x="-80" y="120"/> + </wire> + <wire> + <p1 x="-80" y="120"/> + <p2 x="-80" y="220"/> + </wire> + </wires> + <measurementOrdering/> +</circuit>
\ No newline at end of file |
