mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-13 06:49:36 -04:00
improved the generic barrel-shifter
This commit is contained in:
parent
d11dd76c25
commit
ccd3f1864c
@ -19,7 +19,7 @@
|
||||
<intFormat>bin</intFormat>
|
||||
</entry>
|
||||
</elementAttributes>
|
||||
<pos x="740" y="140"/>
|
||||
<pos x="740" y="160"/>
|
||||
</visualElement>
|
||||
<visualElement>
|
||||
<elementName>In</elementName>
|
||||
@ -41,7 +41,7 @@
|
||||
<value v="1" z="false"/>
|
||||
</entry>
|
||||
</elementAttributes>
|
||||
<pos x="160" y="120"/>
|
||||
<pos x="160" y="140"/>
|
||||
</visualElement>
|
||||
<visualElement>
|
||||
<elementName>In</elementName>
|
||||
@ -55,7 +55,7 @@
|
||||
<int>5</int>
|
||||
</entry>
|
||||
</elementAttributes>
|
||||
<pos x="380" y="160"/>
|
||||
<pos x="380" y="180"/>
|
||||
</visualElement>
|
||||
<visualElement>
|
||||
<elementName>barrelShifter.dig</elementName>
|
||||
@ -70,7 +70,7 @@
|
||||
dir := "left";</string>
|
||||
</entry>
|
||||
</elementAttributes>
|
||||
<pos x="420" y="120"/>
|
||||
<pos x="420" y="140"/>
|
||||
</visualElement>
|
||||
<visualElement>
|
||||
<elementName>Out</elementName>
|
||||
@ -162,7 +162,7 @@ end loop</dataString>
|
||||
</testData>
|
||||
</entry>
|
||||
</elementAttributes>
|
||||
<pos x="580" y="200"/>
|
||||
<pos x="580" y="220"/>
|
||||
</visualElement>
|
||||
<visualElement>
|
||||
<elementName>Testcase</elementName>
|
||||
@ -373,10 +373,6 @@ end loop</dataString>
|
||||
</visualElement>
|
||||
</visualElements>
|
||||
<wires>
|
||||
<wire>
|
||||
<p1 x="380" y="160"/>
|
||||
<p2 x="420" y="160"/>
|
||||
</wire>
|
||||
<wire>
|
||||
<p1 x="160" y="400"/>
|
||||
<p2 x="420" y="400"/>
|
||||
@ -385,6 +381,14 @@ end loop</dataString>
|
||||
<p1 x="480" y="960"/>
|
||||
<p2 x="740" y="960"/>
|
||||
</wire>
|
||||
<wire>
|
||||
<p1 x="480" y="160"/>
|
||||
<p2 x="740" y="160"/>
|
||||
</wire>
|
||||
<wire>
|
||||
<p1 x="380" y="180"/>
|
||||
<p2 x="420" y="180"/>
|
||||
</wire>
|
||||
<wire>
|
||||
<p1 x="480" y="420"/>
|
||||
<p2 x="740" y="420"/>
|
||||
@ -401,17 +405,13 @@ end loop</dataString>
|
||||
<p1 x="380" y="440"/>
|
||||
<p2 x="420" y="440"/>
|
||||
</wire>
|
||||
<wire>
|
||||
<p1 x="160" y="120"/>
|
||||
<p2 x="420" y="120"/>
|
||||
</wire>
|
||||
<wire>
|
||||
<p1 x="480" y="680"/>
|
||||
<p2 x="740" y="680"/>
|
||||
</wire>
|
||||
<wire>
|
||||
<p1 x="480" y="140"/>
|
||||
<p2 x="740" y="140"/>
|
||||
<p1 x="160" y="140"/>
|
||||
<p2 x="420" y="140"/>
|
||||
</wire>
|
||||
<wire>
|
||||
<p1 x="380" y="700"/>
|
||||
|
@ -88,11 +88,23 @@
|
||||
<string>generic</string>
|
||||
<string>dataBits:=16;
|
||||
shiftBits:=int(4);
|
||||
dir:="left";
|
||||
circuit:="shift-fixed-left-inc.dig";
|
||||
if (isPresent(args)) {
|
||||
dir=args.dir;
|
||||
dataBits=args.dataBits;
|
||||
shiftBits=bitsNeededFor(args.dataBits-1);
|
||||
|
||||
if (args.dir="right") {
|
||||
circuit="shift-fixed-right-inc.dig";
|
||||
} else {
|
||||
if (args.dir="arith") {
|
||||
circuit="shift-fixed-arith-right-inc.dig";
|
||||
} else {
|
||||
if (args.dir!="left") {
|
||||
panic("only \"left\", \"right\" or \"arith\" is allowed as direction, not \""+args.dir+"\"!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dataBits=args.dataBits;
|
||||
shiftBits=bitsNeededFor(args.dataBits-1);
|
||||
}</string>
|
||||
</entry>
|
||||
</elementAttributes>
|
||||
|
@ -18,17 +18,7 @@ shift:=8;
|
||||
if (isPresent(args)) {
|
||||
dataBits = args.dataBits;
|
||||
shift = 1<<(args.shiftBits-1);
|
||||
if (args.dir="right") {
|
||||
setCircuit("shift-fixed-right-inc.dig");
|
||||
} 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+"\"!");
|
||||
}
|
||||
}
|
||||
}
|
||||
setCircuit(args.circuit);
|
||||
}</string>
|
||||
</entry>
|
||||
</elementAttributes>
|
||||
@ -109,29 +99,16 @@ if (isPresent(args)) {
|
||||
<string>generic</string>
|
||||
<string>dataBits:=16;
|
||||
shiftBits:=3;
|
||||
dir:="left";
|
||||
circuit:="shift-fixed-left-inc.dig";
|
||||
if (isPresent(args)) {
|
||||
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");
|
||||
dataBits = args.dataBits;
|
||||
if (args.shiftBits=2) {
|
||||
export shift := 1;
|
||||
setCircuit(args.circuit);
|
||||
} 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+"\"!");
|
||||
}
|
||||
setCircuit("shift-fixed-left-inc.dig");
|
||||
}
|
||||
shiftBits = args.shiftBits-1;
|
||||
circuit=args.circuit;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}</string>
|
||||
</entry>
|
||||
</elementAttributes>
|
||||
|
Loading…
x
Reference in New Issue
Block a user