Simluation for RAM and RAM related registers.

This commit is contained in:
Ulysse Cura 2026-07-06 18:57:51 +02:00
parent 00bd250808
commit b6b3fbebdd
3 changed files with 830 additions and 45 deletions

View File

@ -0,0 +1,349 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>2</version>
<attributes>
<entry>
<string>romContent</string>
<romList>
<roms/>
</romList>
</entry>
<entry>
<string>Width</string>
<int>6</int>
</entry>
</attributes>
<visualElements>
<visualElement>
<elementName>RAMSinglePortSel</elementName>
<elementAttributes>
<entry>
<string>AddrBits</string>
<int>15</int>
</entry>
<entry>
<string>Label</string>
<string>UM61256BK</string>
</entry>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
</elementAttributes>
<pos x="700" y="240"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>MAR</string>
</entry>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
</elementAttributes>
<pos x="360" y="140"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SP</string>
</entry>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
</elementAttributes>
<pos x="360" y="180"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D</string>
</entry>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
</elementAttributes>
<pos x="800" y="280"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>mirror</string>
<boolean>true</boolean>
</entry>
<entry>
<string>Input Splitting</string>
<string>8,7</string>
</entry>
<entry>
<string>Output Splitting</string>
<string>15</string>
</entry>
</elementAttributes>
<pos x="460" y="200"/>
</visualElement>
<visualElement>
<elementName>Splitter</elementName>
<elementAttributes>
<entry>
<string>Input Splitting</string>
<string>7,8</string>
</entry>
<entry>
<string>Output Splitting</string>
<string>15</string>
</entry>
</elementAttributes>
<pos x="460" y="260"/>
</visualElement>
<visualElement>
<elementName>PullDown</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="3"/>
</entry>
<entry>
<string>Bits</string>
<int>7</int>
</entry>
</elementAttributes>
<pos x="460" y="180"/>
</visualElement>
<visualElement>
<elementName>PullDown</elementName>
<elementAttributes>
<entry>
<string>rotation</string>
<rotation rotation="3"/>
</entry>
<entry>
<string>Bits</string>
<int>7</int>
</entry>
</elementAttributes>
<pos x="460" y="260"/>
</visualElement>
<visualElement>
<elementName>Driver</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
<int>15</int>
</entry>
</elementAttributes>
<pos x="520" y="260"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>MAR/SP</string>
</entry>
</elementAttributes>
<pos x="360" y="240"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>CLK</string>
</entry>
</elementAttributes>
<pos x="360" y="80"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>A</string>
</entry>
<entry>
<string>Bits</string>
<int>15</int>
</entry>
</elementAttributes>
<pos x="800" y="180"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>W</string>
</entry>
</elementAttributes>
<pos x="360" y="300"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>O</string>
</entry>
</elementAttributes>
<pos x="360" y="340"/>
</visualElement>
<visualElement>
<elementName>DriverInvSel</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
<int>15</int>
</entry>
<entry>
<string>flipSelPos</string>
<boolean>true</boolean>
</entry>
</elementAttributes>
<pos x="520" y="200"/>
</visualElement>
<visualElement>
<elementName>Or</elementName>
<elementAttributes>
<entry>
<string>wideShape</string>
<boolean>true</boolean>
</entry>
</elementAttributes>
<pos x="600" y="240"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="360" y="240"/>
<p2 x="520" y="240"/>
</wire>
<wire>
<p1 x="680" y="240"/>
<p2 x="700" y="240"/>
</wire>
<wire>
<p1 x="580" y="240"/>
<p2 x="600" y="240"/>
</wire>
<wire>
<p1 x="360" y="80"/>
<p2 x="580" y="80"/>
</wire>
<wire>
<p1 x="580" y="320"/>
<p2 x="700" y="320"/>
</wire>
<wire>
<p1 x="360" y="340"/>
<p2 x="580" y="340"/>
</wire>
<wire>
<p1 x="360" y="180"/>
<p2 x="400" y="180"/>
</wire>
<wire>
<p1 x="680" y="180"/>
<p2 x="800" y="180"/>
</wire>
<wire>
<p1 x="480" y="260"/>
<p2 x="500" y="260"/>
</wire>
<wire>
<p1 x="540" y="260"/>
<p2 x="560" y="260"/>
</wire>
<wire>
<p1 x="680" y="260"/>
<p2 x="700" y="260"/>
</wire>
<wire>
<p1 x="580" y="280"/>
<p2 x="600" y="280"/>
</wire>
<wire>
<p1 x="760" y="280"/>
<p2 x="800" y="280"/>
</wire>
<wire>
<p1 x="400" y="280"/>
<p2 x="460" y="280"/>
</wire>
<wire>
<p1 x="480" y="200"/>
<p2 x="500" y="200"/>
</wire>
<wire>
<p1 x="440" y="200"/>
<p2 x="460" y="200"/>
</wire>
<wire>
<p1 x="540" y="200"/>
<p2 x="560" y="200"/>
</wire>
<wire>
<p1 x="560" y="220"/>
<p2 x="680" y="220"/>
</wire>
<wire>
<p1 x="360" y="300"/>
<p2 x="700" y="300"/>
</wire>
<wire>
<p1 x="360" y="140"/>
<p2 x="440" y="140"/>
</wire>
<wire>
<p1 x="560" y="200"/>
<p2 x="560" y="220"/>
</wire>
<wire>
<p1 x="560" y="220"/>
<p2 x="560" y="260"/>
</wire>
<wire>
<p1 x="400" y="180"/>
<p2 x="400" y="280"/>
</wire>
<wire>
<p1 x="580" y="80"/>
<p2 x="580" y="240"/>
</wire>
<wire>
<p1 x="580" y="280"/>
<p2 x="580" y="320"/>
</wire>
<wire>
<p1 x="580" y="320"/>
<p2 x="580" y="340"/>
</wire>
<wire>
<p1 x="680" y="180"/>
<p2 x="680" y="220"/>
</wire>
<wire>
<p1 x="680" y="220"/>
<p2 x="680" y="240"/>
</wire>
<wire>
<p1 x="440" y="140"/>
<p2 x="440" y="200"/>
</wire>
<wire>
<p1 x="520" y="220"/>
<p2 x="520" y="240"/>
</wire>
</wires>
<measurementOrdering/>
</circuit>

View File

@ -0,0 +1,173 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>2</version>
<attributes>
<entry>
<string>romContent</string>
<romList>
<roms/>
</romList>
</entry>
</attributes>
<visualElements>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Q</string>
</entry>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
</elementAttributes>
<pos x="980" y="500"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>CLK</string>
</entry>
</elementAttributes>
<pos x="660" y="420"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>W</string>
</entry>
</elementAttributes>
<pos x="660" y="480"/>
</visualElement>
<visualElement>
<elementName>Register</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
</elementAttributes>
<pos x="800" y="440"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>O</string>
</entry>
</elementAttributes>
<pos x="660" y="520"/>
</visualElement>
<visualElement>
<elementName>Driver</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
<entry>
<string>flipSelPos</string>
<boolean>true</boolean>
</entry>
</elementAttributes>
<pos x="920" y="460"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>D</string>
</entry>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
</elementAttributes>
<pos x="980" y="440"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="660" y="480"/>
<p2 x="800" y="480"/>
</wire>
<wire>
<p1 x="780" y="400"/>
<p2 x="960" y="400"/>
</wire>
<wire>
<p1 x="660" y="420"/>
<p2 x="740" y="420"/>
</wire>
<wire>
<p1 x="880" y="500"/>
<p2 x="980" y="500"/>
</wire>
<wire>
<p1 x="960" y="440"/>
<p2 x="980" y="440"/>
</wire>
<wire>
<p1 x="780" y="440"/>
<p2 x="800" y="440"/>
</wire>
<wire>
<p1 x="660" y="520"/>
<p2 x="920" y="520"/>
</wire>
<wire>
<p1 x="740" y="460"/>
<p2 x="800" y="460"/>
</wire>
<wire>
<p1 x="860" y="460"/>
<p2 x="880" y="460"/>
</wire>
<wire>
<p1 x="940" y="460"/>
<p2 x="960" y="460"/>
</wire>
<wire>
<p1 x="880" y="460"/>
<p2 x="900" y="460"/>
</wire>
<wire>
<p1 x="960" y="400"/>
<p2 x="960" y="440"/>
</wire>
<wire>
<p1 x="960" y="440"/>
<p2 x="960" y="460"/>
</wire>
<wire>
<p1 x="880" y="460"/>
<p2 x="880" y="500"/>
</wire>
<wire>
<p1 x="740" y="420"/>
<p2 x="740" y="460"/>
</wire>
<wire>
<p1 x="920" y="480"/>
<p2 x="920" y="520"/>
</wire>
<wire>
<p1 x="780" y="400"/>
<p2 x="780" y="440"/>
</wire>
</wires>
<measurementOrdering>
<string>CLK</string>
<string>W</string>
<string>O</string>
<string>D</string>
<string>Q</string>
</measurementOrdering>
</circuit>

View File

@ -4,100 +4,363 @@
<attributes/> <attributes/>
<visualElements> <visualElements>
<visualElement> <visualElement>
<elementName>RAMSinglePortSel</elementName> <elementName>In</elementName>
<elementAttributes> <elementAttributes>
<entry> <entry>
<string>AddrBits</string> <string>Label</string>
<int>15</int> <string>WRITE</string>
</entry> </entry>
</elementAttributes>
<pos x="20" y="520"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry> <entry>
<string>Label</string> <string>Label</string>
<string>UM61256BK</string> <string>OUTPUT</string>
</entry> </entry>
</elementAttributes>
<pos x="20" y="560"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry> <entry>
<string>Bits</string> <string>Bits</string>
<int>8</int> <int>8</int>
</entry> </entry>
</elementAttributes> </elementAttributes>
<pos x="320" y="480"/> <pos x="440" y="140"/>
</visualElement> </visualElement>
<visualElement> <visualElement>
<elementName>ROM</elementName> <elementName>In</elementName>
<elementAttributes> <elementAttributes>
<entry> <entry>
<string>AddrBits</string> <string>Label</string>
<int>16</int> <string>WRITE</string>
</entry> </entry>
</elementAttributes>
<pos x="80" y="140"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry> <entry>
<string>isProgramMemory</string> <string>Label</string>
<string>WRITE</string>
</entry>
</elementAttributes>
<pos x="80" y="260"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Bits</string>
<int>15</int>
</entry>
</elementAttributes>
<pos x="440" y="460"/>
</visualElement>
<visualElement>
<elementName>Button</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>CLK</string>
</entry>
</elementAttributes>
<pos x="80" y="20"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>MAR/SP</string>
</entry>
</elementAttributes>
<pos x="20" y="460"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>OUTPUT</string>
</entry>
</elementAttributes>
<pos x="80" y="300"/>
</visualElement>
<visualElement>
<elementName>RAM.dig</elementName>
<elementAttributes/>
<pos x="220" y="440"/>
</visualElement>
<visualElement>
<elementName>Register.dig</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>MAR</string>
</entry>
</elementAttributes>
<pos x="240" y="120"/>
</visualElement>
<visualElement>
<elementName>Register.dig</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SP</string>
</entry>
</elementAttributes>
<pos x="240" y="240"/>
</visualElement>
<visualElement>
<elementName>Driver</elementName>
<elementAttributes>
<entry>
<string>flipSelPos</string>
<boolean>true</boolean> <boolean>true</boolean>
</entry> </entry>
<entry> <entry>
<string>Bits</string> <string>Bits</string>
<int>8</int> <int>8</int>
</entry> </entry>
<entry>
<string>intFormat</string>
<intFormat>bin</intFormat>
</entry>
</elementAttributes> </elementAttributes>
<pos x="320" y="180"/> <pos x="280" y="-140"/>
</visualElement> </visualElement>
<visualElement> <visualElement>
<elementName>Ground</elementName> <elementName>In</elementName>
<elementAttributes/>
<pos x="80" y="220"/>
</visualElement>
<visualElement>
<elementName>Probe</elementName>
<elementAttributes>
<entry>
<string>intFormat</string>
<intFormat>dec</intFormat>
</entry>
</elementAttributes>
<pos x="260" y="100"/>
</visualElement>
<visualElement>
<elementName>Register</elementName>
<elementAttributes> <elementAttributes>
<entry> <entry>
<string>Label</string> <string>Label</string>
<string>Instruction Reg</string> <string>DATA</string>
</entry> </entry>
<entry> <entry>
<string>Bits</string> <string>Bits</string>
<int>8</int> <int>8</int>
</entry> </entry>
</elementAttributes> </elementAttributes>
<pos x="680" y="180"/> <pos x="220" y="-140"/>
</visualElement> </visualElement>
<visualElement> <visualElement>
<elementName>CounterPreset</elementName> <elementName>In</elementName>
<elementAttributes/> <elementAttributes>
<pos x="120" y="180"/> <entry>
<string>Label</string>
<string>EN</string>
</entry>
</elementAttributes>
<pos x="220" y="-100"/>
</visualElement>
<visualElement>
<elementName>Rectangle</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>Manual Data Input</string>
</entry>
<entry>
<string>RectHeight</string>
<int>6</int>
</entry>
<entry>
<string>RectWidth</string>
<int>12</int>
</entry>
</elementAttributes>
<pos x="100" y="-180"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>OUTPUT</string>
</entry>
</elementAttributes>
<pos x="80" y="180"/>
</visualElement> </visualElement>
</visualElements> </visualElements>
<wires> <wires>
<wire> <wire>
<p1 x="180" y="180"/> <p1 x="100" y="480"/>
<p2 x="240" y="180"/> <p2 x="220" y="480"/>
</wire> </wire>
<wire> <wire>
<p1 x="240" y="180"/> <p1 x="220" y="160"/>
<p2 x="320" y="180"/> <p2 x="240" y="160"/>
</wire> </wire>
<wire> <wire>
<p1 x="240" y="100"/> <p1 x="220" y="-100"/>
<p2 x="260" y="100"/> <p2 x="280" y="-100"/>
</wire> </wire>
<wire> <wire>
<p1 x="80" y="220"/> <p1 x="80" y="260"/>
<p2 x="120" y="220"/> <p2 x="240" y="260"/>
</wire> </wire>
<wire> <wire>
<p1 x="240" y="100"/> <p1 x="300" y="260"/>
<p2 x="240" y="180"/> <p2 x="380" y="260"/>
</wire>
<wire>
<p1 x="180" y="360"/>
<p2 x="320" y="360"/>
</wire>
<wire>
<p1 x="20" y="520"/>
<p2 x="220" y="520"/>
</wire>
<wire>
<p1 x="300" y="-140"/>
<p2 x="380" y="-140"/>
</wire>
<wire>
<p1 x="220" y="-140"/>
<p2 x="260" y="-140"/>
</wire>
<wire>
<p1 x="340" y="460"/>
<p2 x="440" y="460"/>
</wire>
<wire>
<p1 x="180" y="460"/>
<p2 x="220" y="460"/>
</wire>
<wire>
<p1 x="20" y="460"/>
<p2 x="100" y="460"/>
</wire>
<wire>
<p1 x="80" y="140"/>
<p2 x="240" y="140"/>
</wire>
<wire>
<p1 x="300" y="140"/>
<p2 x="380" y="140"/>
</wire>
<wire>
<p1 x="380" y="140"/>
<p2 x="440" y="140"/>
</wire>
<wire>
<p1 x="80" y="300"/>
<p2 x="220" y="300"/>
</wire>
<wire>
<p1 x="20" y="560"/>
<p2 x="160" y="560"/>
</wire>
<wire>
<p1 x="160" y="240"/>
<p2 x="240" y="240"/>
</wire>
<wire>
<p1 x="300" y="240"/>
<p2 x="320" y="240"/>
</wire>
<wire>
<p1 x="160" y="500"/>
<p2 x="220" y="500"/>
</wire>
<wire>
<p1 x="80" y="20"/>
<p2 x="160" y="20"/>
</wire>
<wire>
<p1 x="80" y="180"/>
<p2 x="220" y="180"/>
</wire>
<wire>
<p1 x="160" y="120"/>
<p2 x="240" y="120"/>
</wire>
<wire>
<p1 x="300" y="120"/>
<p2 x="340" y="120"/>
</wire>
<wire>
<p1 x="200" y="440"/>
<p2 x="220" y="440"/>
</wire>
<wire>
<p1 x="340" y="440"/>
<p2 x="380" y="440"/>
</wire>
<wire>
<p1 x="220" y="280"/>
<p2 x="240" y="280"/>
</wire>
<wire>
<p1 x="160" y="540"/>
<p2 x="220" y="540"/>
</wire>
<wire>
<p1 x="200" y="380"/>
<p2 x="340" y="380"/>
</wire>
<wire>
<p1 x="160" y="540"/>
<p2 x="160" y="560"/>
</wire>
<wire>
<p1 x="160" y="20"/>
<p2 x="160" y="120"/>
</wire>
<wire>
<p1 x="160" y="240"/>
<p2 x="160" y="500"/>
</wire>
<wire>
<p1 x="160" y="120"/>
<p2 x="160" y="240"/>
</wire>
<wire>
<p1 x="320" y="240"/>
<p2 x="320" y="360"/>
</wire>
<wire>
<p1 x="180" y="360"/>
<p2 x="180" y="460"/>
</wire>
<wire>
<p1 x="100" y="460"/>
<p2 x="100" y="480"/>
</wire>
<wire>
<p1 x="340" y="120"/>
<p2 x="340" y="380"/>
</wire>
<wire>
<p1 x="200" y="380"/>
<p2 x="200" y="440"/>
</wire>
<wire>
<p1 x="280" y="-120"/>
<p2 x="280" y="-100"/>
</wire>
<wire>
<p1 x="220" y="280"/>
<p2 x="220" y="300"/>
</wire>
<wire>
<p1 x="220" y="160"/>
<p2 x="220" y="180"/>
</wire>
<wire>
<p1 x="380" y="-140"/>
<p2 x="380" y="140"/>
</wire>
<wire>
<p1 x="380" y="260"/>
<p2 x="380" y="440"/>
</wire>
<wire>
<p1 x="380" y="140"/>
<p2 x="380" y="260"/>
</wire> </wire>
</wires> </wires>
<measurementOrdering/> <measurementOrdering/>