improved the generic barrel-shifter

This commit is contained in:
hneemann 2019-07-11 15:03:23 +02:00
parent d11dd76c25
commit ccd3f1864c
3 changed files with 39 additions and 50 deletions

View File

@ -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 := &quot;left&quot;;</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"/>

View File

@ -88,9 +88,21 @@
<string>generic</string>
<string>dataBits:=16;
shiftBits:=int(4);
dir:=&quot;left&quot;;
circuit:=&quot;shift-fixed-left-inc.dig&quot;;
if (isPresent(args)) {
dir=args.dir;
if (args.dir=&quot;right&quot;) {
circuit=&quot;shift-fixed-right-inc.dig&quot;;
} else {
if (args.dir=&quot;arith&quot;) {
circuit=&quot;shift-fixed-arith-right-inc.dig&quot;;
} else {
if (args.dir!=&quot;left&quot;) {
panic(&quot;only \&quot;left\&quot;, \&quot;right\&quot; or \&quot;arith\&quot; is allowed as direction, not \&quot;&quot;+args.dir+&quot;\&quot;!&quot;);
}
}
}
dataBits=args.dataBits;
shiftBits=bitsNeededFor(args.dataBits-1);
}</string>

View File

@ -18,17 +18,7 @@ shift:=8;
if (isPresent(args)) {
dataBits = args.dataBits;
shift = 1&lt;&lt;(args.shiftBits-1);
if (args.dir=&quot;right&quot;) {
setCircuit(&quot;shift-fixed-right-inc.dig&quot;);
} else {
if (args.dir=&quot;arith&quot;) {
setCircuit(&quot;shift-fixed-arith-right-inc.dig&quot;);
} else {
if (args.dir!=&quot;left&quot;) {
panic(&quot;only \&quot;left\&quot;, \&quot;right\&quot; or \&quot;arith\&quot; is allowed as direction, not \&quot;&quot;+args.dir+&quot;\&quot;!&quot;);
}
}
}
setCircuit(args.circuit);
}</string>
</entry>
</elementAttributes>
@ -109,28 +99,15 @@ if (isPresent(args)) {
<string>generic</string>
<string>dataBits:=16;
shiftBits:=3;
dir:=&quot;left&quot;;
circuit:=&quot;shift-fixed-left-inc.dig&quot;;
if (isPresent(args)) {
dataBits = args.dataBits;
shiftBits = args.shiftBits-1;
dir=args.dir;
if (args.shiftBits=2) {
export shift := 1;
if (args.dir=&quot;right&quot;) {
setCircuit(&quot;shift-fixed-right-inc.dig&quot;);
setCircuit(args.circuit);
} else {
if (args.dir=&quot;arith&quot;) {
setCircuit(&quot;shift-fixed-arith-right-inc.dig&quot;);
} else {
if (args.dir!=&quot;left&quot;) {
panic(&quot;only \&quot;left\&quot;, \&quot;right\&quot; or \&quot;arith\&quot; is allowed as direction, not \&quot;&quot;+args.dir+&quot;\&quot;!&quot;);
}
setCircuit(&quot;shift-fixed-left-inc.dig&quot;);
}
}
shiftBits = args.shiftBits-1;
circuit=args.circuit;
}
}</string>
</entry>