mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-24 04:42:51 -04:00
adds a async ram
This commit is contained in:
parent
e4b900f297
commit
577de5f4ab
@ -98,20 +98,6 @@
|
|||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="220" y="160"/>
|
<pos x="220" y="160"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
|
||||||
<elementName>RAMDualPort</elementName>
|
|
||||||
<elementAttributes>
|
|
||||||
<entry>
|
|
||||||
<string>AddrBits</string>
|
|
||||||
<int>4</int>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<string>Bits</string>
|
|
||||||
<int>4</int>
|
|
||||||
</entry>
|
|
||||||
</elementAttributes>
|
|
||||||
<pos x="420" y="180"/>
|
|
||||||
</visualElement>
|
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Splitter</elementName>
|
<elementName>Splitter</elementName>
|
||||||
<elementAttributes>
|
<elementAttributes>
|
||||||
@ -202,7 +188,7 @@
|
|||||||
<string>1*4</string>
|
<string>1*4</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="520" y="220"/>
|
<pos x="620" y="200"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Out</elementName>
|
<elementName>Out</elementName>
|
||||||
@ -216,7 +202,7 @@
|
|||||||
<string>5</string>
|
<string>5</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="580" y="220"/>
|
<pos x="680" y="200"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Out</elementName>
|
<elementName>Out</elementName>
|
||||||
@ -230,7 +216,7 @@
|
|||||||
<string>7</string>
|
<string>7</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="580" y="260"/>
|
<pos x="680" y="240"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Out</elementName>
|
<elementName>Out</elementName>
|
||||||
@ -244,7 +230,7 @@
|
|||||||
<string>9</string>
|
<string>9</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="580" y="300"/>
|
<pos x="680" y="280"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Out</elementName>
|
<elementName>Out</elementName>
|
||||||
@ -258,7 +244,7 @@
|
|||||||
<string>11</string>
|
<string>11</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="580" y="340"/>
|
<pos x="680" y="320"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -324,7 +310,7 @@
|
|||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>PowerSupply</elementName>
|
<elementName>PowerSupply</elementName>
|
||||||
<elementAttributes/>
|
<elementAttributes/>
|
||||||
<pos x="620" y="440"/>
|
<pos x="680" y="40"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -342,7 +328,7 @@
|
|||||||
<value v="1" z="false"/>
|
<value v="1" z="false"/>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="580" y="440"/>
|
<pos x="640" y="40"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -356,7 +342,7 @@
|
|||||||
<string>8</string>
|
<string>8</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="580" y="480"/>
|
<pos x="640" y="80"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Not</elementName>
|
<elementName>Not</elementName>
|
||||||
@ -366,7 +352,39 @@
|
|||||||
<int>4</int>
|
<int>4</int>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="320" y="200"/>
|
<pos x="500" y="200"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>Driver</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Bits</string>
|
||||||
|
<int>4</int>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>flipSelPos</string>
|
||||||
|
<boolean>true</boolean>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="580" y="200"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>RAMAsync</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>AddrBits</string>
|
||||||
|
<int>4</int>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>*</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>Bits</string>
|
||||||
|
<int>4</int>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="420" y="180"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
</visualElements>
|
</visualElements>
|
||||||
<wires>
|
<wires>
|
||||||
@ -382,25 +400,17 @@
|
|||||||
<p1 x="220" y="320"/>
|
<p1 x="220" y="320"/>
|
||||||
<p2 x="260" y="320"/>
|
<p2 x="260" y="320"/>
|
||||||
</wire>
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="640" y="320"/>
|
||||||
|
<p2 x="680" y="320"/>
|
||||||
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="220" y="160"/>
|
<p1 x="220" y="160"/>
|
||||||
<p2 x="260" y="160"/>
|
<p2 x="260" y="160"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="360" y="480"/>
|
<p1 x="360" y="480"/>
|
||||||
<p2 x="400" y="480"/>
|
<p2 x="580" y="480"/>
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="580" y="480"/>
|
|
||||||
<p2 x="600" y="480"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="540" y="260"/>
|
|
||||||
<p2 x="580" y="260"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="400" y="260"/>
|
|
||||||
<p2 x="420" y="260"/>
|
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="280" y="40"/>
|
<p1 x="280" y="40"/>
|
||||||
@ -410,37 +420,49 @@
|
|||||||
<p1 x="220" y="40"/>
|
<p1 x="220" y="40"/>
|
||||||
<p2 x="260" y="40"/>
|
<p2 x="260" y="40"/>
|
||||||
</wire>
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="640" y="40"/>
|
||||||
|
<p2 x="680" y="40"/>
|
||||||
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="280" y="200"/>
|
<p1 x="280" y="200"/>
|
||||||
<p2 x="320" y="200"/>
|
<p2 x="420" y="200"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="220" y="200"/>
|
<p1 x="220" y="200"/>
|
||||||
<p2 x="260" y="200"/>
|
<p2 x="260" y="200"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="360" y="200"/>
|
<p1 x="640" y="200"/>
|
||||||
<p2 x="420" y="200"/>
|
<p2 x="680" y="200"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="600" y="460"/>
|
<p1 x="600" y="200"/>
|
||||||
<p2 x="620" y="460"/>
|
<p2 x="620" y="200"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="480" y="200"/>
|
||||||
|
<p2 x="500" y="200"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="540" y="200"/>
|
||||||
|
<p2 x="560" y="200"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="280" y="460"/>
|
<p1 x="280" y="460"/>
|
||||||
<p2 x="300" y="460"/>
|
<p2 x="300" y="460"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="540" y="300"/>
|
<p1 x="640" y="240"/>
|
||||||
<p2 x="580" y="300"/>
|
<p2 x="680" y="240"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="220" y="240"/>
|
<p1 x="220" y="240"/>
|
||||||
<p2 x="260" y="240"/>
|
<p2 x="260" y="240"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="380" y="240"/>
|
<p1 x="640" y="80"/>
|
||||||
<p2 x="420" y="240"/>
|
<p2 x="660" y="80"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="220" y="80"/>
|
<p1 x="220" y="80"/>
|
||||||
@ -450,10 +472,6 @@
|
|||||||
<p1 x="360" y="400"/>
|
<p1 x="360" y="400"/>
|
||||||
<p2 x="380" y="400"/>
|
<p2 x="380" y="400"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
|
||||||
<p1 x="540" y="340"/>
|
|
||||||
<p2 x="580" y="340"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="380" y="180"/>
|
<p1 x="380" y="180"/>
|
||||||
<p2 x="420" y="180"/>
|
<p2 x="420" y="180"/>
|
||||||
@ -467,16 +485,20 @@
|
|||||||
<p2 x="280" y="500"/>
|
<p2 x="280" y="500"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="580" y="440"/>
|
<p1 x="640" y="280"/>
|
||||||
<p2 x="620" y="440"/>
|
<p2 x="680" y="280"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="220" y="280"/>
|
||||||
|
<p2 x="260" y="280"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="220" y="120"/>
|
<p1 x="220" y="120"/>
|
||||||
<p2 x="260" y="120"/>
|
<p2 x="260" y="120"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="220" y="280"/>
|
<p1 x="660" y="60"/>
|
||||||
<p2 x="260" y="280"/>
|
<p2 x="680" y="60"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="220" y="380"/>
|
<p1 x="220" y="380"/>
|
||||||
@ -486,18 +508,10 @@
|
|||||||
<p1 x="240" y="380"/>
|
<p1 x="240" y="380"/>
|
||||||
<p2 x="280" y="380"/>
|
<p2 x="280" y="380"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
|
||||||
<p1 x="540" y="220"/>
|
|
||||||
<p2 x="580" y="220"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="380" y="220"/>
|
<p1 x="380" y="220"/>
|
||||||
<p2 x="420" y="220"/>
|
<p2 x="420" y="220"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
|
||||||
<p1 x="480" y="220"/>
|
|
||||||
<p2 x="520" y="220"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="240" y="460"/>
|
<p1 x="240" y="460"/>
|
||||||
<p2 x="240" y="500"/>
|
<p2 x="240" y="500"/>
|
||||||
@ -507,12 +521,12 @@
|
|||||||
<p2 x="240" y="420"/>
|
<p2 x="240" y="420"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="400" y="260"/>
|
<p1 x="580" y="220"/>
|
||||||
<p2 x="400" y="480"/>
|
<p2 x="580" y="480"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="600" y="460"/>
|
<p1 x="660" y="60"/>
|
||||||
<p2 x="600" y="480"/>
|
<p2 x="660" y="80"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="380" y="40"/>
|
<p1 x="380" y="40"/>
|
||||||
@ -520,11 +534,8 @@
|
|||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="380" y="220"/>
|
<p1 x="380" y="220"/>
|
||||||
<p2 x="380" y="240"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="380" y="240"/>
|
|
||||||
<p2 x="380" y="400"/>
|
<p2 x="380" y="400"/>
|
||||||
</wire>
|
</wire>
|
||||||
</wires>
|
</wires>
|
||||||
|
<measurementOrdering/>
|
||||||
</circuit>
|
</circuit>
|
@ -20,24 +20,6 @@
|
|||||||
</entry>
|
</entry>
|
||||||
</attributes>
|
</attributes>
|
||||||
<visualElements>
|
<visualElements>
|
||||||
<visualElement>
|
|
||||||
<elementName>RAMDualPort</elementName>
|
|
||||||
<elementAttributes>
|
|
||||||
<entry>
|
|
||||||
<string>AddrBits</string>
|
|
||||||
<int>4</int>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<string>Bits</string>
|
|
||||||
<int>4</int>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<string>Addr Bits</string>
|
|
||||||
<int>4</int>
|
|
||||||
</entry>
|
|
||||||
</elementAttributes>
|
|
||||||
<pos x="460" y="180"/>
|
|
||||||
</visualElement>
|
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Splitter</elementName>
|
<elementName>Splitter</elementName>
|
||||||
<elementAttributes>
|
<elementAttributes>
|
||||||
@ -54,7 +36,7 @@
|
|||||||
<string>1*4</string>
|
<string>1*4</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="560" y="220"/>
|
<pos x="660" y="200"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Out</elementName>
|
<elementName>Out</elementName>
|
||||||
@ -68,7 +50,7 @@
|
|||||||
<string>11</string>
|
<string>11</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="740" y="280"/>
|
<pos x="840" y="260"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Out</elementName>
|
<elementName>Out</elementName>
|
||||||
@ -82,7 +64,7 @@
|
|||||||
<string>5</string>
|
<string>5</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="600" y="220"/>
|
<pos x="700" y="200"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Out</elementName>
|
<elementName>Out</elementName>
|
||||||
@ -96,7 +78,7 @@
|
|||||||
<string>7</string>
|
<string>7</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="740" y="240"/>
|
<pos x="840" y="220"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Out</elementName>
|
<elementName>Out</elementName>
|
||||||
@ -110,7 +92,7 @@
|
|||||||
<string>9</string>
|
<string>9</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="600" y="260"/>
|
<pos x="700" y="240"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Not</elementName>
|
<elementName>Not</elementName>
|
||||||
@ -120,7 +102,7 @@
|
|||||||
<int>4</int>
|
<int>4</int>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="400" y="200"/>
|
<pos x="520" y="200"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Splitter</elementName>
|
<elementName>Splitter</elementName>
|
||||||
@ -134,7 +116,7 @@
|
|||||||
<string>4</string>
|
<string>4</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="340" y="80"/>
|
<pos x="380" y="80"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -148,7 +130,7 @@
|
|||||||
<string>1</string>
|
<string>1</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="160" y="80"/>
|
<pos x="200" y="80"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -162,7 +144,7 @@
|
|||||||
<string>15</string>
|
<string>15</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="300" y="100"/>
|
<pos x="340" y="100"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -176,7 +158,7 @@
|
|||||||
<string>14</string>
|
<string>14</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="160" y="120"/>
|
<pos x="200" y="120"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -190,7 +172,7 @@
|
|||||||
<string>13</string>
|
<string>13</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="300" y="140"/>
|
<pos x="340" y="140"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Splitter</elementName>
|
<elementName>Splitter</elementName>
|
||||||
@ -204,7 +186,7 @@
|
|||||||
<string>4</string>
|
<string>4</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="340" y="200"/>
|
<pos x="380" y="200"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -218,7 +200,7 @@
|
|||||||
<string>4</string>
|
<string>4</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="160" y="200"/>
|
<pos x="200" y="200"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -232,7 +214,7 @@
|
|||||||
<string>6</string>
|
<string>6</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="300" y="220"/>
|
<pos x="340" y="220"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -246,7 +228,7 @@
|
|||||||
<string>10</string>
|
<string>10</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="160" y="240"/>
|
<pos x="200" y="240"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -260,7 +242,7 @@
|
|||||||
<string>12</string>
|
<string>12</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="300" y="260"/>
|
<pos x="340" y="260"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -278,12 +260,12 @@
|
|||||||
<int>1</int>
|
<int>1</int>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="160" y="300"/>
|
<pos x="200" y="300"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Not</elementName>
|
<elementName>Not</elementName>
|
||||||
<elementAttributes/>
|
<elementAttributes/>
|
||||||
<pos x="180" y="300"/>
|
<pos x="220" y="300"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -301,27 +283,27 @@
|
|||||||
<int>1</int>
|
<int>1</int>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="160" y="420"/>
|
<pos x="200" y="420"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Not</elementName>
|
<elementName>Not</elementName>
|
||||||
<elementAttributes/>
|
<elementAttributes/>
|
||||||
<pos x="180" y="420"/>
|
<pos x="220" y="420"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>Or</elementName>
|
<elementName>Or</elementName>
|
||||||
<elementAttributes/>
|
<elementAttributes/>
|
||||||
<pos x="280" y="380"/>
|
<pos x="320" y="380"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>And</elementName>
|
<elementName>And</elementName>
|
||||||
<elementAttributes/>
|
<elementAttributes/>
|
||||||
<pos x="280" y="300"/>
|
<pos x="320" y="300"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>PowerSupply</elementName>
|
<elementName>PowerSupply</elementName>
|
||||||
<elementAttributes/>
|
<elementAttributes/>
|
||||||
<pos x="200" y="480"/>
|
<pos x="240" y="480"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -339,7 +321,7 @@
|
|||||||
<value v="1" z="false"/>
|
<value v="1" z="false"/>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="160" y="480"/>
|
<pos x="200" y="480"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
<visualElement>
|
<visualElement>
|
||||||
<elementName>In</elementName>
|
<elementName>In</elementName>
|
||||||
@ -353,169 +335,194 @@
|
|||||||
<string>8</string>
|
<string>8</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="160" y="520"/>
|
<pos x="200" y="520"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>Driver</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Bits</string>
|
||||||
|
<int>4</int>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>flipSelPos</string>
|
||||||
|
<boolean>true</boolean>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="600" y="200"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>RAMAsync</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>*</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>AddrBits</string>
|
||||||
|
<int>4</int>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>Bits</string>
|
||||||
|
<int>4</int>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="440" y="180"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
</visualElements>
|
</visualElements>
|
||||||
<wires>
|
<wires>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="240" y="300"/>
|
<p1 x="280" y="300"/>
|
||||||
<p2 x="260" y="380"/>
|
<p2 x="300" y="380"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="260" y="340"/>
|
<p1 x="300" y="340"/>
|
||||||
<p2 x="240" y="420"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="340" y="320"/>
|
|
||||||
<p2 x="400" y="320"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="160" y="480"/>
|
|
||||||
<p2 x="200" y="480"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="300" y="260"/>
|
|
||||||
<p2 x="340" y="260"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="580" y="260"/>
|
|
||||||
<p2 x="600" y="260"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="440" y="260"/>
|
|
||||||
<p2 x="460" y="260"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="300" y="100"/>
|
|
||||||
<p2 x="340" y="100"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="160" y="420"/>
|
|
||||||
<p2 x="180" y="420"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="220" y="420"/>
|
|
||||||
<p2 x="240" y="420"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="240" y="420"/>
|
|
||||||
<p2 x="280" y="420"/>
|
<p2 x="280" y="420"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="440" y="200"/>
|
<p1 x="380" y="320"/>
|
||||||
<p2 x="460" y="200"/>
|
<p2 x="420" y="320"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="160" y="200"/>
|
<p1 x="200" y="480"/>
|
||||||
<p2 x="340" y="200"/>
|
<p2 x="240" y="480"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="360" y="200"/>
|
<p1 x="340" y="260"/>
|
||||||
<p2 x="400" y="200"/>
|
<p2 x="380" y="260"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="160" y="520"/>
|
<p1 x="680" y="260"/>
|
||||||
<p2 x="180" y="520"/>
|
<p2 x="840" y="260"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="220" y="300"/>
|
<p1 x="340" y="100"/>
|
||||||
<p2 x="240" y="300"/>
|
<p2 x="380" y="100"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="160" y="300"/>
|
<p1 x="200" y="420"/>
|
||||||
<p2 x="180" y="300"/>
|
<p2 x="220" y="420"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="240" y="300"/>
|
<p1 x="260" y="420"/>
|
||||||
|
<p2 x="280" y="420"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="280" y="420"/>
|
||||||
|
<p2 x="320" y="420"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="400" y="200"/>
|
||||||
|
<p2 x="440" y="200"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="200" y="200"/>
|
||||||
|
<p2 x="380" y="200"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="680" y="200"/>
|
||||||
|
<p2 x="700" y="200"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="620" y="200"/>
|
||||||
|
<p2 x="660" y="200"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="500" y="200"/>
|
||||||
|
<p2 x="520" y="200"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="560" y="200"/>
|
||||||
|
<p2 x="580" y="200"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="200" y="520"/>
|
||||||
|
<p2 x="220" y="520"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="260" y="300"/>
|
||||||
<p2 x="280" y="300"/>
|
<p2 x="280" y="300"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="300" y="140"/>
|
<p1 x="200" y="300"/>
|
||||||
<p2 x="340" y="140"/>
|
<p2 x="220" y="300"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="340" y="400"/>
|
<p1 x="280" y="300"/>
|
||||||
<p2 x="440" y="400"/>
|
<p2 x="320" y="300"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="580" y="240"/>
|
<p1 x="340" y="140"/>
|
||||||
<p2 x="740" y="240"/>
|
<p2 x="380" y="140"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="160" y="240"/>
|
<p1 x="680" y="240"/>
|
||||||
<p2 x="340" y="240"/>
|
<p2 x="700" y="240"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="400" y="240"/>
|
<p1 x="200" y="240"/>
|
||||||
<p2 x="460" y="240"/>
|
<p2 x="380" y="240"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="360" y="80"/>
|
<p1 x="380" y="400"/>
|
||||||
<p2 x="440" y="80"/>
|
<p2 x="600" y="400"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="160" y="80"/>
|
<p1 x="400" y="80"/>
|
||||||
<p2 x="340" y="80"/>
|
<p2 x="420" y="80"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="260" y="340"/>
|
<p1 x="200" y="80"/>
|
||||||
<p2 x="280" y="340"/>
|
<p2 x="380" y="80"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="440" y="180"/>
|
<p1 x="300" y="340"/>
|
||||||
<p2 x="460" y="180"/>
|
<p2 x="320" y="340"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="180" y="500"/>
|
<p1 x="420" y="180"/>
|
||||||
<p2 x="200" y="500"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="580" y="280"/>
|
|
||||||
<p2 x="740" y="280"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="160" y="120"/>
|
|
||||||
<p2 x="340" y="120"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="260" y="380"/>
|
|
||||||
<p2 x="280" y="380"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="300" y="220"/>
|
|
||||||
<p2 x="340" y="220"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="580" y="220"/>
|
|
||||||
<p2 x="600" y="220"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="520" y="220"/>
|
|
||||||
<p2 x="560" y="220"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="400" y="220"/>
|
|
||||||
<p2 x="460" y="220"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="400" y="220"/>
|
|
||||||
<p2 x="400" y="240"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="400" y="240"/>
|
|
||||||
<p2 x="400" y="320"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="180" y="500"/>
|
|
||||||
<p2 x="180" y="520"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="440" y="80"/>
|
|
||||||
<p2 x="440" y="180"/>
|
<p2 x="440" y="180"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="440" y="260"/>
|
<p1 x="220" y="500"/>
|
||||||
<p2 x="440" y="400"/>
|
<p2 x="240" y="500"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="200" y="120"/>
|
||||||
|
<p2 x="380" y="120"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="680" y="220"/>
|
||||||
|
<p2 x="840" y="220"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="340" y="220"/>
|
||||||
|
<p2 x="380" y="220"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="420" y="220"/>
|
||||||
|
<p2 x="440" y="220"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="300" y="380"/>
|
||||||
|
<p2 x="320" y="380"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="420" y="220"/>
|
||||||
|
<p2 x="420" y="320"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="420" y="80"/>
|
||||||
|
<p2 x="420" y="180"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="600" y="220"/>
|
||||||
|
<p2 x="600" y="400"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="220" y="500"/>
|
||||||
|
<p2 x="220" y="520"/>
|
||||||
</wire>
|
</wire>
|
||||||
</wires>
|
</wires>
|
||||||
|
<measurementOrdering/>
|
||||||
</circuit>
|
</circuit>
|
@ -162,6 +162,13 @@ public class ElementAttributes implements HGSMap {
|
|||||||
return get(Keys.LABEL);
|
return get(Keys.LABEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if this is flagged as program memory.
|
||||||
|
*/
|
||||||
|
public boolean isProgramMemory() {
|
||||||
|
return getLabel().contains("PROGRAM MEMORY") || get(Keys.IS_PROGRAM_MEMORY);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the int number format
|
* @return the int number format
|
||||||
*/
|
*/
|
||||||
|
@ -63,7 +63,7 @@ public class BlockRAMDualPort extends Node implements Element, RAMInterface {
|
|||||||
size = 1 << addrBits;
|
size = 1 << addrBits;
|
||||||
memory = new DataField(size);
|
memory = new DataField(size);
|
||||||
label = attr.getLabel();
|
label = attr.getLabel();
|
||||||
isProgramMemory = attr.get(Keys.IS_PROGRAM_MEMORY);
|
isProgramMemory = attr.isProgramMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ public class EEPROM extends Node implements Element, RAMInterface, ROMInterface
|
|||||||
.setToHighZ()
|
.setToHighZ()
|
||||||
.setPinDescription(DESCRIPTION)
|
.setPinDescription(DESCRIPTION)
|
||||||
.setBidirectional();
|
.setBidirectional();
|
||||||
isProgramMemory = attr.get(Keys.IS_PROGRAM_MEMORY);
|
isProgramMemory = attr.isProgramMemory();
|
||||||
formatter = attr.getValueFormatter();
|
formatter = attr.getValueFormatter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
127
src/main/java/de/neemann/digital/core/memory/RAMAsync.java
Normal file
127
src/main/java/de/neemann/digital/core/memory/RAMAsync.java
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019 Helmut Neemann.
|
||||||
|
* Use of this source code is governed by the GPL v3 license
|
||||||
|
* that can be found in the LICENSE file.
|
||||||
|
*/
|
||||||
|
package de.neemann.digital.core.memory;
|
||||||
|
|
||||||
|
import de.neemann.digital.core.Node;
|
||||||
|
import de.neemann.digital.core.NodeException;
|
||||||
|
import de.neemann.digital.core.ObservableValue;
|
||||||
|
import de.neemann.digital.core.ObservableValues;
|
||||||
|
import de.neemann.digital.core.element.Element;
|
||||||
|
import de.neemann.digital.core.element.ElementAttributes;
|
||||||
|
import de.neemann.digital.core.element.ElementTypeDescription;
|
||||||
|
import de.neemann.digital.core.element.Keys;
|
||||||
|
|
||||||
|
import static de.neemann.digital.core.element.PinInfo.input;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A asynchronous memory
|
||||||
|
*/
|
||||||
|
public class RAMAsync extends Node implements Element, RAMInterface {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The RAMs {@link ElementTypeDescription}
|
||||||
|
*/
|
||||||
|
public static final ElementTypeDescription DESCRIPTION = new ElementTypeDescription(RAMAsync.class,
|
||||||
|
input("A"),
|
||||||
|
input("D"),
|
||||||
|
input("we"))
|
||||||
|
.addAttribute(Keys.ROTATE)
|
||||||
|
.addAttribute(Keys.BITS)
|
||||||
|
.addAttribute(Keys.ADDR_BITS)
|
||||||
|
.addAttribute(Keys.IS_PROGRAM_MEMORY)
|
||||||
|
.addAttribute(Keys.INVERTER_CONFIG)
|
||||||
|
.addAttribute(Keys.LABEL);
|
||||||
|
|
||||||
|
private final DataField memory;
|
||||||
|
private final ObservableValue output;
|
||||||
|
private final int addrBits;
|
||||||
|
private final int bits;
|
||||||
|
private final String label;
|
||||||
|
private final int size;
|
||||||
|
private final boolean isProgramMemory;
|
||||||
|
private ObservableValue we;
|
||||||
|
private ObservableValue addrIn;
|
||||||
|
private ObservableValue dataIn;
|
||||||
|
private long outputVal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance
|
||||||
|
*
|
||||||
|
* @param attr the elements attributes
|
||||||
|
*/
|
||||||
|
public RAMAsync(ElementAttributes attr) {
|
||||||
|
super(true);
|
||||||
|
bits = attr.get(Keys.BITS);
|
||||||
|
output = new ObservableValue("Q", bits).setPinDescription(DESCRIPTION);
|
||||||
|
addrBits = attr.get(Keys.ADDR_BITS);
|
||||||
|
size = 1 << addrBits;
|
||||||
|
memory = new DataField(size);
|
||||||
|
label = attr.getLabel();
|
||||||
|
isProgramMemory = attr.isProgramMemory();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setInputs(ObservableValues inputs) throws NodeException {
|
||||||
|
addrIn = inputs.get(0).checkBits(addrBits, this).addObserverToValue(this);
|
||||||
|
dataIn = inputs.get(1).checkBits(bits, this).addObserverToValue(this);
|
||||||
|
we = inputs.get(2).checkBits(1, this).addObserverToValue(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readInputs() throws NodeException {
|
||||||
|
int addr = (int) addrIn.getValue();
|
||||||
|
if (we.getBool())
|
||||||
|
memory.setData(addr, dataIn.getValue());
|
||||||
|
outputVal = memory.getDataWord(addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeOutputs() throws NodeException {
|
||||||
|
output.setValue(outputVal);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObservableValues getOutputs() {
|
||||||
|
return output.asList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataField getMemory() {
|
||||||
|
return memory;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLabel() {
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSize() {
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAddrBits() {
|
||||||
|
return addrBits;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isProgramMemory() {
|
||||||
|
return isProgramMemory;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setProgramMemory(DataField dataField) {
|
||||||
|
memory.setDataFrom(dataField);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDataBits() {
|
||||||
|
return bits;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -72,7 +72,7 @@ public class RAMDualAccess extends Node implements Element, RAMInterface {
|
|||||||
size = 1 << addrBits;
|
size = 1 << addrBits;
|
||||||
memory = new DataField(size);
|
memory = new DataField(size);
|
||||||
label = attr.getLabel();
|
label = attr.getLabel();
|
||||||
isProgramMemory = attr.get(Keys.IS_PROGRAM_MEMORY);
|
isProgramMemory = attr.isProgramMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -66,7 +66,7 @@ public class RAMDualPort extends Node implements Element, RAMInterface {
|
|||||||
size = 1 << addrBits;
|
size = 1 << addrBits;
|
||||||
memory = createDataField(attr, size);
|
memory = createDataField(attr, size);
|
||||||
label = attr.getLabel();
|
label = attr.getLabel();
|
||||||
isProgramMemory = attr.get(Keys.IS_PROGRAM_MEMORY);
|
isProgramMemory = attr.isProgramMemory();
|
||||||
formatter = attr.getValueFormatter();
|
formatter = attr.getValueFormatter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ public class RAMSinglePortSel extends Node implements Element, RAMInterface {
|
|||||||
.setToHighZ()
|
.setToHighZ()
|
||||||
.setPinDescription(DESCRIPTION)
|
.setPinDescription(DESCRIPTION)
|
||||||
.setBidirectional();
|
.setBidirectional();
|
||||||
isProgramMemory = attr.get(Keys.IS_PROGRAM_MEMORY);
|
isProgramMemory = attr.isProgramMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -71,7 +71,7 @@ public class ROM extends Node implements Element, ROMInterface, ProgramMemory {
|
|||||||
addrBits = attr.get(Keys.ADDR_BITS);
|
addrBits = attr.get(Keys.ADDR_BITS);
|
||||||
autoLoad = attr.get(Keys.AUTO_RELOAD_ROM);
|
autoLoad = attr.get(Keys.AUTO_RELOAD_ROM);
|
||||||
label = attr.getLabel();
|
label = attr.getLabel();
|
||||||
isProgramMemory = attr.get(Keys.IS_PROGRAM_MEMORY);
|
isProgramMemory = attr.isProgramMemory();
|
||||||
if (autoLoad) {
|
if (autoLoad) {
|
||||||
hexFile = attr.getFile(LAST_DATA_FILE_KEY);
|
hexFile = attr.getFile(LAST_DATA_FILE_KEY);
|
||||||
} else
|
} else
|
||||||
|
@ -189,6 +189,7 @@ public class ElementLibrary implements Iterable<ElementLibrary.ElementContainer>
|
|||||||
.add(RAMSinglePortSel.DESCRIPTION)
|
.add(RAMSinglePortSel.DESCRIPTION)
|
||||||
.add(RegisterFile.DESCRIPTION)
|
.add(RegisterFile.DESCRIPTION)
|
||||||
.add(RAMDualAccess.DESCRIPTION)
|
.add(RAMDualAccess.DESCRIPTION)
|
||||||
|
.add(RAMAsync.DESCRIPTION)
|
||||||
.add(GraphicCard.DESCRIPTION))
|
.add(GraphicCard.DESCRIPTION))
|
||||||
.add(new LibraryNode(Lang.get("lib_eeprom"))
|
.add(new LibraryNode(Lang.get("lib_eeprom"))
|
||||||
.add(EEPROM.DESCRIPTION)
|
.add(EEPROM.DESCRIPTION)
|
||||||
|
@ -97,6 +97,7 @@ public final class ShapeFactory {
|
|||||||
map.put(RAMDualAccess.DESCRIPTION.getName(), (attr, inputs, outputs) -> new RAMShape(attr, RAMDualAccess.DESCRIPTION));
|
map.put(RAMDualAccess.DESCRIPTION.getName(), (attr, inputs, outputs) -> new RAMShape(attr, RAMDualAccess.DESCRIPTION));
|
||||||
map.put(RegisterFile.DESCRIPTION.getName(), (attr, inputs, outputs) -> new RAMShape(attr, RegisterFile.DESCRIPTION, 4));
|
map.put(RegisterFile.DESCRIPTION.getName(), (attr, inputs, outputs) -> new RAMShape(attr, RegisterFile.DESCRIPTION, 4));
|
||||||
map.put(BlockRAMDualPort.DESCRIPTION.getName(), (attr, inputs, outputs) -> new RAMShape(attr, BlockRAMDualPort.DESCRIPTION));
|
map.put(BlockRAMDualPort.DESCRIPTION.getName(), (attr, inputs, outputs) -> new RAMShape(attr, BlockRAMDualPort.DESCRIPTION));
|
||||||
|
map.put(RAMAsync.DESCRIPTION.getName(), (attr, inputs, outputs) -> new RAMShape(attr, RAMAsync.DESCRIPTION));
|
||||||
|
|
||||||
map.put(In.DESCRIPTION.getName(), InputShape::new);
|
map.put(In.DESCRIPTION.getName(), InputShape::new);
|
||||||
map.put(Reset.DESCRIPTION.getName(), ResetShape::new);
|
map.put(Reset.DESCRIPTION.getName(), ResetShape::new);
|
||||||
|
@ -625,6 +625,15 @@
|
|||||||
</string>
|
</string>
|
||||||
<string name="elem_RAMDualPort_pin_str">Ist diese Leitung high, wird das Datenwort gespeichert, wenn der Takt ansteigt.</string>
|
<string name="elem_RAMDualPort_pin_str">Ist diese Leitung high, wird das Datenwort gespeichert, wenn der Takt ansteigt.</string>
|
||||||
|
|
||||||
|
<string name="elem_RAMAsync">RAM, asynchron</string>
|
||||||
|
<string name="elem_RAMAsync_tt">Solange we gesetzt ist, wird gespeichert. Entspricht einem sehr einfachem RAM, bei
|
||||||
|
welchem die Adress- und Datenleitungen direkt mit den Decodern der Speicherzellen verbunden sind.</string>
|
||||||
|
<string name="elem_RAMAsync_pin_A">Die Adresse, an der gelesen bzw. geschrieben wird.</string>
|
||||||
|
<string name="elem_RAMAsync_pin_D">Die Daten, die gespeichert werden sollen.</string>
|
||||||
|
<string name="elem_RAMAsync_pin_we">Schreibfreigabe. Solange hier eine 1 anliegt, wird bei jeder Änderung von A oder D
|
||||||
|
der Wert der an D anliegt an der Adresse gespeichert welche bei A anliegt.</string>
|
||||||
|
<string name="elem_RAMAsync_pin_Q">Ausgabe der gespeicherten Daten.</string>
|
||||||
|
|
||||||
<string name="elem_BlockRAMDualPort">Block-RAM, getrennte Ports</string>
|
<string name="elem_BlockRAMDualPort">Block-RAM, getrennte Ports</string>
|
||||||
<string name="elem_BlockRAMDualPort_short">RAM</string>
|
<string name="elem_BlockRAMDualPort_short">RAM</string>
|
||||||
<string name="elem_BlockRAMDualPort_tt">Ein RAM Modul mit getrennten Daten-Anschlüssen für Lesen und Schreiben.
|
<string name="elem_BlockRAMDualPort_tt">Ein RAM Modul mit getrennten Daten-Anschlüssen für Lesen und Schreiben.
|
||||||
|
@ -691,6 +691,15 @@
|
|||||||
stored.
|
stored.
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
|
<string name="elem_RAMAsync">RAM, async.</string>
|
||||||
|
<string name="elem_RAMAsync_tt">As long as we is set, it is stored. Corresponds to a very simple RAM, where the
|
||||||
|
address and data lines are directly connected to the decoders of the memory cells.</string>
|
||||||
|
<string name="elem_RAMAsync_pin_A">The address at which reading or writing takes place.</string>
|
||||||
|
<string name="elem_RAMAsync_pin_D">The data to be stored.</string>
|
||||||
|
<string name="elem_RAMAsync_pin_we">Write enable. As long as this input is set to 1, the value applied to D is
|
||||||
|
stored at the address applied to A whenever A or D is changed.</string>
|
||||||
|
<string name="elem_RAMAsync_pin_Q">Output of the stored data.</string>
|
||||||
|
|
||||||
<string name="elem_RegisterFile">Register File</string>
|
<string name="elem_RegisterFile">Register File</string>
|
||||||
<string name="elem_RegisterFile_short">Register</string>
|
<string name="elem_RegisterFile_short">Register</string>
|
||||||
<string name="elem_RegisterFile_tt">Memory with one port that allows to write and two ports that allow to read from
|
<string name="elem_RegisterFile_tt">Memory with one port that allows to write and two ports that allow to read from
|
||||||
|
Loading…
x
Reference in New Issue
Block a user