📄 ch14.7.htm
字号:
<A NAME="pgfId=84751">
</A>
22</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84753">
</A>
0, 1, 22</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84755">
</A>
32</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84757">
</A>
0, 1, 27, 28, 32</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84759">
</A>
3</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84761">
</A>
0, 1, 3</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84763">
</A>
13</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84765">
</A>
0, 1, 3, 4, 13</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84767">
</A>
23</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84769">
</A>
0, 5, 23</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84771">
</A>
40</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84773">
</A>
0, 2, 19, 21, 40</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84775">
</A>
4</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84777">
</A>
0, 1, 4</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84779">
</A>
14</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84781">
</A>
0, 1, 11, 12, 14</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84783">
</A>
24</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84785">
</A>
0, 1, 3, 4, 24</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84787">
</A>
50</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84789">
</A>
0, 1, 26, 27, 50</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84791">
</A>
5</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84793">
</A>
0, 2, 5</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84795">
</A>
15</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84797">
</A>
0, 1, 15</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84799">
</A>
25</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84801">
</A>
0, 3, 25</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84803">
</A>
60</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84805">
</A>
0, 1, 60</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84807">
</A>
6</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84809">
</A>
0, 1, 6</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84811">
</A>
16</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84813">
</A>
0, 2, 3, 5, 16</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84815">
</A>
26</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84817">
</A>
0, 1, 7, 26</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84819">
</A>
70</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84821">
</A>
0, 1, 15, 16, 70</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84823">
</A>
7</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84825">
</A>
0, 1, 7</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84827">
</A>
17</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84829">
</A>
0, 3, 17</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84831">
</A>
27</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84833">
</A>
0, 1, 7, 27</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84835">
</A>
80</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84837">
</A>
0, 1, 37, 38, 80</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84839">
</A>
8</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84841">
</A>
0, 1, 5, 6, 8</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84843">
</A>
18</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84845">
</A>
0, 7, 18</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84847">
</A>
28</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84849">
</A>
0, 3, 28</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84851">
</A>
90</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84853">
</A>
0, 1, 18, 19, 90</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84855">
</A>
9</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84857">
</A>
0, 4, 9</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84859">
</A>
19</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84861">
</A>
0, 1, 5, 6, 19</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84863">
</A>
29</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84865">
</A>
0, 2, 29</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84867">
</A>
100</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84869">
</A>
0, 37, 100</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84871">
</A>
10</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84873">
</A>
0, 3, 10</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84875">
</A>
20</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84877">
</A>
0, 3, 20</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84879">
</A>
30</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84881">
</A>
0, 1, 15, 16, 30</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=84883">
</A>
256</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=84885">
</A>
0, 1, 3, 16, 256</P>
</TD>
</TR>
</TABLE>
<P CLASS="Body">
<A NAME="pgfId=85391">
</A>
There is confusion over naming, labeling, and drawing of LFSRs in texts and test programs. Looking at the schematic in <A HREF="CH14.7.htm#14685" CLASS="XRef">
Figure 14.27</A>
, we can draw the LFSR with signals flowing from left to right or vice versa (two ways), we can name the leftmost flip-flop output <SPAN CLASS="EquationVariables">
Q</SPAN>
<SUB CLASS="Subscript">
0</SUB>
or <SPAN CLASS="EquationVariables">
Q</SPAN>
<SUB CLASS="SubscriptVariable">
n</SUB>
(two more ways), and we can name the coefficient that goes with <SPAN CLASS="EquationVariables">
Q</SPAN>
<SUB CLASS="Subscript">
0</SUB>
either <SPAN CLASS="EquationVariables">
c</SPAN>
<SUB CLASS="Subscript">
0</SUB>
or <SPAN CLASS="EquationVariables">
c</SPAN>
<SUB CLASS="SubscriptVariable">
n</SUB>
<SUB CLASS="Subscript">
–</SUB>
<SUB CLASS="Subscript">
1</SUB>
(two more ways). There are thus at least 2<SUP CLASS="Superscript">
3</SUP>
<SPAN CLASS="Symbol">
¥</SPAN>
4 different ways to draw an LFSR for a given polynomial. Four of these are distinct. You can connect the LFSR feedback in the reverse order and the LFSR will still work—you will, however, get a different sequence. Usually this does not matter.</P>
</DIV>
<DIV>
<H2 CLASS="Heading2">
<A NAME="pgfId=85139">
</A>
14.7.6 LFSR Example</H2>
<P CLASS="BodyAfterHead">
<A NAME="pgfId=85140">
</A>
We can use a cell compiler to produce LFSR and signature register BIST structures. For example, we might complete a property sheet as follows:</P>
<P CLASS="ComputerFirst">
<A NAME="pgfId=85209">
</A>
property name value property name value </P>
<P CLASS="Computer">
<A NAME="pgfId=85228">
</A>
------------------ ----- ------------------ -----</P>
<P CLASS="Computer">
<A NAME="pgfId=85210">
</A>
LFSR_is_bilbo false LFSR_configuration generator </P>
<P CLASS="Computer">
<A NAME="pgfId=85212">
</A>
LFSR_length 3 LFSR_init_hex_value 4 </P>
<P CLASS="Computer">
<A NAME="pgfId=85214">
</A>
LFSR_scan false LFSR_mux_data false </P>
<P CLASS="Computer">
<A NAME="pgfId=85216">
</A>
LFSR_mux_output false LFSR_xor_hex_function max_length </P>
<P CLASS="ComputerLast">
<A NAME="pgfId=85218">
</A>
LFSR_zero_state false LFSR_signature_inputs 1 </P>
<P CLASS="Body">
<A NAME="pgfId=85677">
</A>
The Verilog structural netlist for the compiled type 2 LFSR generator is shown in <A HREF="CH14.7.htm#40827" CLASS="XRef">
Table 14.12</A>
. According to our notation and the primitive polynomials in <A HREF="CH14.7.htm#14685" CLASS="XRef">
Figure 14.27</A>
, the corresponding primitive polynomial is <SPAN CLASS="EquationVariables">
P*(x)</SPAN>
= 1 <SPAN CLASS="Symbol">
⊕</SPAN>
<SPAN CLASS="EquationVariables">
x</SPAN>
<SUP CLASS="Superscript">
2</SUP>
<SPAN CLASS="Symbol">
⊕</SPAN>
<SPAN CLASS="EquationVariables">
x</SPAN>
<SUP CLASS="Superscript">
3</SUP>
. The LFSR has both serial and parallel outputs (taken from the inverted flip-flop outputs with inverting buffers, cell names <SPAN CLASS="BodyComputer">
in02d1</SPAN>
). The clock and reset inputs are buffered (with noninverting buffers, cell names <SPAN CLASS="BodyComputer">
ni01d1</SPAN>
) since these inputs would normally have to drive a load of more than 3 bits. Looking in the cell data book we find that the flip-flop corresponding to the MSB, instance <SPAN CLASS="BodyComputer">
FF0</SPAN>
with cell name <SPAN CLASS="BodyComputer">
dfptnb</SPAN>
, has an active-low set input <SPAN CLASS="BodyComputer">
SDN</SPAN>
. The remaining flip-flops, cell name <SPAN CLASS="BodyComputer">
dfctnb</SPAN>
, have active-low clears, <SPAN CLASS="BodyComputer">
CDN</SPAN>
. This gives us the initial value '100'.</P>
<P CLASS="Body">
<A NAME="pgfId=85372">
</A>
<A HREF="CH14.7.htm#39672" CLASS="XRef">
Table 14.13</A>
shows the serial-input signature register compiled using the reciprocal polynomial. Again the compiler has included buffers. All the flip-flops, cell names <SPAN CLASS="BodyComputer">
dfctnb</SPAN>
, have active-low clear so that the initial content of the register is '000'.</P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableTitle">
<A NAME="pgfId=125736">
</A>
TABLE 14.12 <A NAME="40827">
</A>
Compiled LFSR generator, using P*(x) = 1 <SPAN CLASS="Symbol">
⊕</SPAN>
x<SUP CLASS="Superscript">
2</SUP>
<SPAN CLASS="Symbol">
⊕</SPAN>
x<SUP CLASS="Superscript">
3</SUP>
.</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Computer">
<A NAME="pgfId=125738">
</A>
<B CLASS="Keyword">
module</B>
lfsr_generator (OUT, SERIAL_OUT, INITN, CP);</P>
<P CLASS="Computer">
<A NAME="pgfId=125739">
</A>
<B CLASS="Keyword">
output</B>
[2:0] OUT; <B CLASS="Keyword">
output</B>
SERIAL_OUT; <B CLASS="Keyword">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -