Adding documentation on the shift/rotation operator.
This commit is contained in:
parent
4c3c211ea5
commit
a5108651b9
|
@ -31,25 +31,24 @@
|
||||||
<refsect1>
|
<refsect1>
|
||||||
<title> Description </title>
|
<title> Description </title>
|
||||||
|
|
||||||
<para> Generate a &N; bits shifter named &modelname;.
|
<para> Generate a &N; bits shifter with name &modelname;.
|
||||||
</para>
|
</para>
|
||||||
<para> How it works :
|
<para> How it works :
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para> if <literal>op[0]</literal> signal is set to &one; perform
|
<para> if the <literal>op[0]</literal> signal is set to &one; performs
|
||||||
a right shift, left shift otherwise.
|
a right shift, performs a left shift otherwise.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para> if <literal>op[1]</literal> signal is set to &one; perform
|
<para> if the <literal>op[1]</literal> signal is set to &one; performs
|
||||||
a sign extention, i.e. an arithmetic shift (only meaningful in case
|
an arithmetic shift (only meaningful in case of a right shift).
|
||||||
of a right shift).
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para> &shamt; : specify the shift amount. The wide of this signal
|
<para> &shamt; : specifies the shift amount. The width of this signal
|
||||||
(&Y;) is computed from the operator's wide :
|
(&Y;) is computed from the operator's width :
|
||||||
<literal>Y = log<subscript>2</subscript>(N) - 1</literal>.
|
<literal>Y = ceil(log<subscript>2</subscript>(N)) - 1</literal>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
@ -67,10 +66,10 @@
|
||||||
<para> &shamt; : the shift amount (input, &Y; bits). </para>
|
<para> &shamt; : the shift amount (input, &Y; bits). </para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para> &i0; : value to shift (input, &N; bits). </para>
|
<para> &i; : value to shift (input, &N; bits). </para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para> &q; : output (&N; bits). </para>
|
<para> &o; : output (&N; bits). </para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para> <literal>vdd</literal> : power. </para>
|
<para> <literal>vdd</literal> : power. </para>
|
||||||
|
@ -89,20 +88,17 @@
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
GENLIB_MACRO(DPGEN_SHIFT, "model_shift_32"
|
GENLIB_MACRO(DPGEN_SHIFT, "model_shift_32",
|
||||||
, F_BEHAV|F_PLACE
|
F_BEHAV|F_PLACE,
|
||||||
, 32
|
32);
|
||||||
);
|
|
||||||
|
|
||||||
GENLIB_LOINS( "model_shift_32"
|
GENLIB_LOINS("model_shift_32",
|
||||||
, "instance1_shift_32"
|
"instance1_shift_32",
|
||||||
, "add_sub"
|
"op[1:0]",
|
||||||
, "op[1:0]"
|
"shamt[4:0]",
|
||||||
, "shamt[4:0]"
|
"x[31:0]",
|
||||||
, "i0[31:0]"
|
"y[31:0]",
|
||||||
, "q[31:0]"
|
"vdd", "vss", NULL);
|
||||||
, "vdd", "vss", NULL
|
|
||||||
);
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
|
||||||
|
|
||||||
|
<refentry id="DPGEN-SHROT">
|
||||||
|
<?dbhtml filename="man_dpgen_shrot.html">
|
||||||
|
|
||||||
|
<refmeta>
|
||||||
|
<refentrytitle>DPGEN_SHROT</refentrytitle>
|
||||||
|
<manvolnum>3</manvolnum>
|
||||||
|
<refmiscinfo>ASIM/LIP6</refmiscinfo>
|
||||||
|
</refmeta>
|
||||||
|
|
||||||
|
<refnamediv>
|
||||||
|
<refname> DPGEN_SHROT </refname>
|
||||||
|
<refpurpose> Shift/Rotation Macro-Generator </refpurpose>
|
||||||
|
</refnamediv>
|
||||||
|
|
||||||
|
|
||||||
|
<refsynopsisdiv>
|
||||||
|
<funcsynopsis>
|
||||||
|
<funcsynopsisinfo>#include <genlib.h></funcsynopsisinfo>
|
||||||
|
<funcprototype>
|
||||||
|
<funcdef>void <function>GENLIB_MACRO</function></funcdef>
|
||||||
|
<paramdef>DPGEN_SHROT</paramdef>
|
||||||
|
<paramdef>char *<parameter>modelname</parameter></paramdef>
|
||||||
|
<paramdef>long <parameter>flags</parameter></paramdef>
|
||||||
|
<paramdef>long <parameter>N</parameter></paramdef>
|
||||||
|
</funcprototype>
|
||||||
|
</funcsynopsis>
|
||||||
|
</refsynopsisdiv>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title> Description </title>
|
||||||
|
|
||||||
|
<para> Generate a &N; bits shift/rotation operator with name &modelname;.
|
||||||
|
</para>
|
||||||
|
<para> How it works :
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para> if the <literal>op[0]</literal> signal is set to &one;
|
||||||
|
right shift/rotation occurs, otherwise left shift/rotation
|
||||||
|
occurs.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para> if the <literal>op[1]</literal> signal is set to &one; performs
|
||||||
|
an arithmetic shift (only meaningful in case of a right shift).
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para> if the <literal>op[2]</literal> signal is set to &one; performs
|
||||||
|
a rotation, otherwise performs a shift.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para> &shamt; : specifies the shift amount. The width of this signal
|
||||||
|
(&Y;) is computed from the operator's width :
|
||||||
|
<literal>Y = ceil(log<subscript>2</subscript>(N)) - 1</literal>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<refsect2>
|
||||||
|
<title> Terminal Names </title>
|
||||||
|
|
||||||
|
<orderedlist>
|
||||||
|
<listitem>
|
||||||
|
<para> &op; : select the kind of shift/rotation (input, 3 bit).
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para> &shamt; : the shift amount (input, &Y; bits). </para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para> &i; : value to shift (input, &N; bits). </para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para> &o; : output (&N; bits). </para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para> <literal>vdd</literal> : power. </para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para> <literal>vss</literal> : ground. </para>
|
||||||
|
</listitem>
|
||||||
|
</orderedlist>
|
||||||
|
|
||||||
|
</refsect2>
|
||||||
|
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title> Example </title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
<programlisting>
|
||||||
|
GENLIB_MACRO(DPGEN_SHROT, "rot25",
|
||||||
|
F_BEHAV|F_PLACE,
|
||||||
|
25);
|
||||||
|
|
||||||
|
GENLIB_LOINS("rot25",
|
||||||
|
"instance1_rot25",
|
||||||
|
"op[2:0]",
|
||||||
|
"shamt[4:0]",
|
||||||
|
"x[31:0]",
|
||||||
|
"y[31:0]",
|
||||||
|
"vdd", "vss", NULL);
|
||||||
|
</programlisting>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
&man-dpgen-see-also;
|
||||||
|
|
||||||
|
</refentry>
|
|
@ -258,6 +258,10 @@
|
||||||
<refentrytitle>DPGEN_SHIFT</refentrytitle>
|
<refentrytitle>DPGEN_SHIFT</refentrytitle>
|
||||||
<manvolnum>3</manvolnum>
|
<manvolnum>3</manvolnum>
|
||||||
</citerefentry></link></para></listitem>
|
</citerefentry></link></para></listitem>
|
||||||
|
<listitem><para><link linkend="DPGEN-SHROT"><citerefentry>
|
||||||
|
<refentrytitle>DPGEN_SHROT</refentrytitle>
|
||||||
|
<manvolnum>3</manvolnum>
|
||||||
|
</citerefentry></link></para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
Loading…
Reference in New Issue