mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-14 15:26:52 -04:00
improved the barrel shifter
This commit is contained in:
parent
058824530c
commit
e152fbbef1
@ -371,12 +371,100 @@ end loop</dataString>
|
|||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="580" y="1020"/>
|
<pos x="580" y="1020"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>Out</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>D^64</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>Bits</string>
|
||||||
|
<int>64</int>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>intFormat</string>
|
||||||
|
<intFormat>bin</intFormat>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="740" y="-120"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>In</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>D^64_in</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>Bits</string>
|
||||||
|
<int>64</int>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>intFormat</string>
|
||||||
|
<intFormat>bin</intFormat>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>InDefault</string>
|
||||||
|
<value v="1" z="false"/>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="160" y="-140"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>In</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>sh^64</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>Bits</string>
|
||||||
|
<int>6</int>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="380" y="-100"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>barrelShifter.dig</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>64 bit, left</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>generic</string>
|
||||||
|
<string>dataBits := 64;
|
||||||
|
direction := "left";</string>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="420" y="-140"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>Testcase</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>64 bit, left</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>Testdata</string>
|
||||||
|
<testData>
|
||||||
|
<dataString>D^64_in sh^64 D^64
|
||||||
|
loop(n,64)
|
||||||
|
1 (n) (1<<n)
|
||||||
|
end loop
|
||||||
|
|
||||||
|
loop(n,64)
|
||||||
|
7 (n) (7<<n)
|
||||||
|
end loop</dataString>
|
||||||
|
</testData>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="580" y="-60"/>
|
||||||
|
</visualElement>
|
||||||
</visualElements>
|
</visualElements>
|
||||||
<wires>
|
<wires>
|
||||||
<wire>
|
|
||||||
<p1 x="160" y="400"/>
|
|
||||||
<p2 x="420" y="400"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="480" y="960"/>
|
<p1 x="480" y="960"/>
|
||||||
<p2 x="740" y="960"/>
|
<p2 x="740" y="960"/>
|
||||||
@ -386,13 +474,37 @@ end loop</dataString>
|
|||||||
<p2 x="740" y="160"/>
|
<p2 x="740" y="160"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="380" y="180"/>
|
<p1 x="380" y="-100"/>
|
||||||
<p2 x="420" y="180"/>
|
<p2 x="420" y="-100"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="480" y="420"/>
|
<p1 x="480" y="420"/>
|
||||||
<p2 x="740" y="420"/>
|
<p2 x="740" y="420"/>
|
||||||
</wire>
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="480" y="680"/>
|
||||||
|
<p2 x="740" y="680"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="160" y="-140"/>
|
||||||
|
<p2 x="420" y="-140"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="160" y="140"/>
|
||||||
|
<p2 x="420" y="140"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="160" y="940"/>
|
||||||
|
<p2 x="420" y="940"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="160" y="400"/>
|
||||||
|
<p2 x="420" y="400"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="380" y="180"/>
|
||||||
|
<p2 x="420" y="180"/>
|
||||||
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="160" y="660"/>
|
<p1 x="160" y="660"/>
|
||||||
<p2 x="420" y="660"/>
|
<p2 x="420" y="660"/>
|
||||||
@ -401,26 +513,18 @@ end loop</dataString>
|
|||||||
<p1 x="380" y="980"/>
|
<p1 x="380" y="980"/>
|
||||||
<p2 x="420" y="980"/>
|
<p2 x="420" y="980"/>
|
||||||
</wire>
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="480" y="-120"/>
|
||||||
|
<p2 x="740" y="-120"/>
|
||||||
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="380" y="440"/>
|
<p1 x="380" y="440"/>
|
||||||
<p2 x="420" y="440"/>
|
<p2 x="420" y="440"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
|
||||||
<p1 x="480" y="680"/>
|
|
||||||
<p2 x="740" y="680"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
|
||||||
<p1 x="160" y="140"/>
|
|
||||||
<p2 x="420" y="140"/>
|
|
||||||
</wire>
|
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="380" y="700"/>
|
<p1 x="380" y="700"/>
|
||||||
<p2 x="420" y="700"/>
|
<p2 x="420" y="700"/>
|
||||||
</wire>
|
</wire>
|
||||||
<wire>
|
|
||||||
<p1 x="160" y="940"/>
|
|
||||||
<p2 x="420" y="940"/>
|
|
||||||
</wire>
|
|
||||||
</wires>
|
</wires>
|
||||||
<measurementOrdering/>
|
<measurementOrdering/>
|
||||||
</circuit>
|
</circuit>
|
@ -30,9 +30,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="500" y="140"/>
|
<pos x="500" y="140"/>
|
||||||
@ -54,9 +52,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="400" y="120"/>
|
<pos x="400" y="120"/>
|
||||||
@ -74,9 +70,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=bitsNeededFor(args.dataBits-1);</string>
|
||||||
this.Bits=bitsNeededFor(args.dataBits-1);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="400" y="160"/>
|
<pos x="400" y="160"/>
|
||||||
|
@ -35,9 +35,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="600" y="140"/>
|
<pos x="600" y="140"/>
|
||||||
@ -55,9 +53,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="280" y="120"/>
|
<pos x="280" y="120"/>
|
||||||
|
@ -35,9 +35,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="600" y="140"/>
|
<pos x="600" y="140"/>
|
||||||
@ -55,9 +53,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="300" y="120"/>
|
<pos x="300" y="120"/>
|
||||||
|
@ -35,9 +35,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="600" y="140"/>
|
<pos x="600" y="140"/>
|
||||||
@ -55,9 +53,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="300" y="120"/>
|
<pos x="300" y="120"/>
|
||||||
|
@ -42,9 +42,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="540" y="140"/>
|
<pos x="540" y="140"/>
|
||||||
@ -66,9 +64,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="180" y="100"/>
|
<pos x="180" y="100"/>
|
||||||
@ -86,9 +82,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.shiftBits);</string>
|
||||||
this.Bits=int(args.shiftBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="180" y="140"/>
|
<pos x="180" y="140"/>
|
||||||
|
@ -67,7 +67,7 @@
|
|||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>dataBits := 32;
|
<string>dataBits := 32;
|
||||||
dir := "left";</string>
|
direction := "left";</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="420" y="120"/>
|
<pos x="420" y="120"/>
|
||||||
|
@ -67,7 +67,7 @@
|
|||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>dataBits := 8;
|
<string>dataBits := 8;
|
||||||
dir := "left";</string>
|
direction := "left";</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="420" y="400"/>
|
<pos x="420" y="400"/>
|
||||||
|
@ -67,7 +67,7 @@
|
|||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>dataBits := 8;
|
<string>dataBits := 8;
|
||||||
dir := "right";</string>
|
direction := "right";</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="420" y="660"/>
|
<pos x="420" y="660"/>
|
||||||
|
@ -67,7 +67,7 @@
|
|||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>dataBits := 16;
|
<string>dataBits := 16;
|
||||||
dir := "arith";</string>
|
direction := "arith";</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="420" y="940"/>
|
<pos x="420" y="940"/>
|
||||||
|
@ -30,9 +30,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="500" y="140"/>
|
<pos x="500" y="140"/>
|
||||||
@ -54,9 +52,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="400" y="120"/>
|
<pos x="400" y="120"/>
|
||||||
@ -74,9 +70,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=bitsNeededFor(args.dataBits-1);</string>
|
||||||
this.Bits=bitsNeededFor(args.dataBits-1);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="400" y="160"/>
|
<pos x="400" y="160"/>
|
||||||
@ -86,13 +80,28 @@
|
|||||||
<elementAttributes>
|
<elementAttributes>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>dataBits:=16;
|
<string>if (isPresent(args)) {
|
||||||
shiftBits:=int(4);
|
|
||||||
dir:="left";
|
if (args.direction="right") {
|
||||||
if (isPresent(args)) {
|
export circuit:="shift-fixed-right-inc.dig";
|
||||||
dir=args.dir;
|
} else {
|
||||||
dataBits=args.dataBits;
|
if (args.direction="arith") {
|
||||||
shiftBits=bitsNeededFor(args.dataBits-1);
|
export circuit:="shift-fixed-arith-right-inc.dig";
|
||||||
|
} else {
|
||||||
|
if (args.direction="left") {
|
||||||
|
export circuit:="shift-fixed-left-inc.dig";
|
||||||
|
} else {
|
||||||
|
panic("only \"left\", \"right\" or \"arith\" is allowed as direction, not \""+args.dir+"\"!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export shiftBits:=bitsNeededFor(args.dataBits-1);
|
||||||
|
} else {
|
||||||
|
// used if circuit is started as the main circuit
|
||||||
|
export circuit:="shift-fixed-left-inc.dig";
|
||||||
|
export dataBits:=16;
|
||||||
|
export shiftBits:=int(4);
|
||||||
}</string>
|
}</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
|
@ -35,9 +35,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="600" y="140"/>
|
<pos x="600" y="140"/>
|
||||||
@ -55,9 +53,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="280" y="120"/>
|
<pos x="280" y="120"/>
|
||||||
|
@ -35,9 +35,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="600" y="140"/>
|
<pos x="600" y="140"/>
|
||||||
@ -55,9 +53,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="300" y="120"/>
|
<pos x="300" y="120"/>
|
||||||
|
@ -35,9 +35,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="600" y="140"/>
|
<pos x="600" y="140"/>
|
||||||
@ -55,9 +53,7 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="300" y="120"/>
|
<pos x="300" y="120"/>
|
||||||
|
@ -13,22 +13,13 @@
|
|||||||
<elementAttributes>
|
<elementAttributes>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>dataBits:=16;
|
<string>if (isPresent(args)) {
|
||||||
shift:=8;
|
export shift := 1<<(args.shiftBits-1);
|
||||||
if (isPresent(args)) {
|
setCircuit(args.circuit);
|
||||||
dataBits = args.dataBits;
|
} else {
|
||||||
shift = 1<<(args.shiftBits-1);
|
// used if circuit is started as the main circuit
|
||||||
if (args.dir="right") {
|
export dataBits:=16;
|
||||||
setCircuit("shift-fixed-right-inc.dig");
|
export shift:=8;
|
||||||
} else {
|
|
||||||
if (args.dir="arith") {
|
|
||||||
setCircuit("shift-fixed-arith-right-inc.dig");
|
|
||||||
} else {
|
|
||||||
if (args.dir!="left") {
|
|
||||||
panic("only \"left\", \"right\" or \"arith\" is allowed as direction, not \""+args.dir+"\"!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}</string>
|
}</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
@ -51,9 +42,7 @@ if (isPresent(args)) {
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="540" y="140"/>
|
<pos x="540" y="140"/>
|
||||||
@ -75,9 +64,7 @@ if (isPresent(args)) {
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.dataBits);</string>
|
||||||
this.Bits=int(args.dataBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="180" y="100"/>
|
<pos x="180" y="100"/>
|
||||||
@ -95,9 +82,7 @@ if (isPresent(args)) {
|
|||||||
</entry>
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>if (isPresent(args)) {
|
<string>this.Bits=int(args.shiftBits);</string>
|
||||||
this.Bits=int(args.shiftBits);
|
|
||||||
}</string>
|
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="180" y="140"/>
|
<pos x="180" y="140"/>
|
||||||
@ -107,31 +92,18 @@ if (isPresent(args)) {
|
|||||||
<elementAttributes>
|
<elementAttributes>
|
||||||
<entry>
|
<entry>
|
||||||
<string>generic</string>
|
<string>generic</string>
|
||||||
<string>dataBits:=16;
|
<string>if (isPresent(args)) {
|
||||||
shiftBits:=3;
|
if (args.shiftBits=2) {
|
||||||
dir:="left";
|
export shift := 1;
|
||||||
if (isPresent(args)) {
|
setCircuit(args.circuit);
|
||||||
dataBits = args.dataBits;
|
|
||||||
shiftBits = args.shiftBits-1;
|
|
||||||
dir=args.dir;
|
|
||||||
if (args.shiftBits=2) {
|
|
||||||
|
|
||||||
export shift := 1;
|
|
||||||
if (args.dir="right") {
|
|
||||||
setCircuit("shift-fixed-right-inc.dig");
|
|
||||||
} else {
|
} else {
|
||||||
if (args.dir="arith") {
|
export shiftBits := args.shiftBits-1;
|
||||||
setCircuit("shift-fixed-arith-right-inc.dig");
|
|
||||||
} else {
|
|
||||||
if (args.dir!="left") {
|
|
||||||
panic("only \"left\", \"right\" or \"arith\" is allowed as direction, not \""+args.dir+"\"!");
|
|
||||||
}
|
|
||||||
setCircuit("shift-fixed-left-inc.dig");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// used if circuit is started as the main circuit
|
||||||
}
|
export dataBits:=16;
|
||||||
|
export shiftBits:=3;
|
||||||
|
export circuit:="shift-fixed-left-inc.dig";
|
||||||
}</string>
|
}</string>
|
||||||
</entry>
|
</entry>
|
||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user