<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for OutputLogic.com</title>
	<atom:link href="http://outputlogic.com/?feed=comments-rss2" rel="self" type="application/rss+xml" />
	<link>http://outputlogic.com</link>
	<description>tools that improve productivity</description>
	<lastBuildDate>Thu, 02 Sep 2010 19:13:59 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Parallel CRC Generator by Evgeni</title>
		<link>http://outputlogic.com/?p=158&#038;cpage=1#comment-502</link>
		<dc:creator>Evgeni</dc:creator>
		<pubDate>Thu, 02 Sep 2010 19:13:59 +0000</pubDate>
		<guid isPermaLink="false">http://s92890915.onlinehome.us/outputlogic/?p=158#comment-502</guid>
		<description>Hi Vikram,

There is a long list of things that can go wrong during CRC calculation. I&#039;d need more information to help you.

Thanks,
Evgeni</description>
		<content:encoded><![CDATA[<p>Hi Vikram,</p>
<p>There is a long list of things that can go wrong during CRC calculation. I&#8217;d need more information to help you.</p>
<p>Thanks,<br />
Evgeni</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallel CRC Generator by vikram</title>
		<link>http://outputlogic.com/?p=158&#038;cpage=1#comment-500</link>
		<dc:creator>vikram</dc:creator>
		<pubDate>Thu, 02 Sep 2010 08:50:30 +0000</pubDate>
		<guid isPermaLink="false">http://s92890915.onlinehome.us/outputlogic/?p=158#comment-500</guid>
		<description>i am giving a date packet but not able to see the correct crc</description>
		<content:encoded><![CDATA[<p>i am giving a date packet but not able to see the correct crc</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallel CRC Generator by vikram</title>
		<link>http://outputlogic.com/?p=158&#038;cpage=1#comment-499</link>
		<dc:creator>vikram</dc:creator>
		<pubDate>Tue, 31 Aug 2010 10:14:21 +0000</pubDate>
		<guid isPermaLink="false">http://s92890915.onlinehome.us/outputlogic/?p=158#comment-499</guid>
		<description>Hi,
I am working on CRC 32 bit project which has 120 bit or 15 byte data as serial in stream coming on an ethernet cable on the receiver side.i have the program and am not able to see the right crc in the simulation.i saw the program on your  site but seems to long to get the crc32.the logic is as below:

ENTITY TL_CRC_32 IS

  PORT (
    clk          : IN  STD_LOGIC;       -- clock
    reset        : IN  STD_LOGIC;       -- asynchronous reset
    crc32_init   : IN  STD_LOGIC;       -- set CRC register to initial value
    crc32_enable : IN  STD_LOGIC;       -- enable CRC calculation
    serial_IN    : IN  STD_LOGIC;       -- serial input data
    crc32        : OUT bus32);          -- CRC32 accumolator

END ENTITY TL_CRC_32;

ARCHITECTURE behaviour OF TL_CRC_32 IS

  SIGNAL crc32_shifter : STD_LOGIC_VECTOR (31 DOWNTO 0);
--SIGNAL temp : STD_LOGIC_VECTOR (31 DOWNTO 0);
  SUBTYPE  poly_vector IS BIT_VECTOR (31 DOWNTO 0);
  CONSTANT poly    : poly_vector := X&quot;04C11DB7&quot;;  -- polynominal
  CONSTANT initval : STD_LOGIC   := &#039;1&#039;;      -- initial crc reg. value  

BEGIN

  shift_data : PROCESS (clk, reset) IS
  BEGIN
    IF reset = &#039;0&#039; THEN
      crc32_shifter  initval);
    ELSIF clk&#039;EVENT AND clk = &#039;1&#039; THEN
      IF crc32_init = &#039;1&#039; THEN          -- load crc reg with init value
        crc32_shifter  initval);
      ELSIF (crc32_enable = &#039;1&#039;) THEN   -- serial crc bit calculation
        FOR i IN 0 TO 31 LOOP
          IF (poly(i) = &#039;1&#039;) THEN
            IF (i = 0) THEN
              crc32_shifter(0) &lt;= serial_IN XOR crc32_shifter(31);
            ELSE
              crc32_shifter(i) &lt;= crc32_shifter(i-1) XOR serial_IN XOR crc32_shifter(31);
            END IF;
          ELSE
            crc32_shifter(i) &lt;= crc32_shifter(i-1);
          END IF;
        END LOOP;
      END IF;
    END IF;
      END PROCESS shift_data;

  crc32 &lt;= crc32_shifter;
  
END ARCHITECTURE behaviour;

Can you please help me?</description>
		<content:encoded><![CDATA[<p>Hi,<br />
I am working on CRC 32 bit project which has 120 bit or 15 byte data as serial in stream coming on an ethernet cable on the receiver side.i have the program and am not able to see the right crc in the simulation.i saw the program on your  site but seems to long to get the crc32.the logic is as below:</p>
<p>ENTITY TL_CRC_32 IS</p>
<p>  PORT (<br />
    clk          : IN  STD_LOGIC;       &#8212; clock<br />
    reset        : IN  STD_LOGIC;       &#8212; asynchronous reset<br />
    crc32_init   : IN  STD_LOGIC;       &#8212; set CRC register to initial value<br />
    crc32_enable : IN  STD_LOGIC;       &#8212; enable CRC calculation<br />
    serial_IN    : IN  STD_LOGIC;       &#8212; serial input data<br />
    crc32        : OUT bus32);          &#8212; CRC32 accumolator</p>
<p>END ENTITY TL_CRC_32;</p>
<p>ARCHITECTURE behaviour OF TL_CRC_32 IS</p>
<p>  SIGNAL crc32_shifter : STD_LOGIC_VECTOR (31 DOWNTO 0);<br />
&#8211;SIGNAL temp : STD_LOGIC_VECTOR (31 DOWNTO 0);<br />
  SUBTYPE  poly_vector IS BIT_VECTOR (31 DOWNTO 0);<br />
  CONSTANT poly    : poly_vector := X&#8221;04C11DB7&#8243;;  &#8212; polynominal<br />
  CONSTANT initval : STD_LOGIC   := &#8216;1&#8242;;      &#8212; initial crc reg. value  </p>
<p>BEGIN</p>
<p>  shift_data : PROCESS (clk, reset) IS<br />
  BEGIN<br />
    IF reset = &#8216;0&#8242; THEN<br />
      crc32_shifter  initval);<br />
    ELSIF clk&#8217;EVENT AND clk = &#8216;1&#8242; THEN<br />
      IF crc32_init = &#8216;1&#8242; THEN          &#8212; load crc reg with init value<br />
        crc32_shifter  initval);<br />
      ELSIF (crc32_enable = &#8216;1&#8242;) THEN   &#8212; serial crc bit calculation<br />
        FOR i IN 0 TO 31 LOOP<br />
          IF (poly(i) = &#8216;1&#8242;) THEN<br />
            IF (i = 0) THEN<br />
              crc32_shifter(0) &lt;= serial_IN XOR crc32_shifter(31);<br />
            ELSE<br />
              crc32_shifter(i) &lt;= crc32_shifter(i-1) XOR serial_IN XOR crc32_shifter(31);<br />
            END IF;<br />
          ELSE<br />
            crc32_shifter(i) &lt;= crc32_shifter(i-1);<br />
          END IF;<br />
        END LOOP;<br />
      END IF;<br />
    END IF;<br />
      END PROCESS shift_data;</p>
<p>  crc32 &lt;= crc32_shifter;</p>
<p>END ARCHITECTURE behaviour;</p>
<p>Can you please help me?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallel Scrambler Generator by Jordy</title>
		<link>http://outputlogic.com/?p=179&#038;cpage=1#comment-486</link>
		<dc:creator>Jordy</dc:creator>
		<pubDate>Mon, 16 Aug 2010 08:43:56 +0000</pubDate>
		<guid isPermaLink="false">http://s92890915.onlinehome.us/outputlogic/?p=179#comment-486</guid>
		<description>&lt;a href=&quot;#comment-485&quot; rel=&quot;nofollow&quot;&gt;@Jordy  &lt;/a&gt; 
I&#039;m sorry for my mistake, :)
you are right, it means hold the value for next scram_en valid.
thank you</description>
		<content:encoded><![CDATA[<p><a href="#comment-485" rel="nofollow">@Jordy  </a><br />
I&#8217;m sorry for my mistake, <img src='http://outputlogic.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
you are right, it means hold the value for next scram_en valid.<br />
thank you</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallel Scrambler Generator by Jordy</title>
		<link>http://outputlogic.com/?p=179&#038;cpage=1#comment-485</link>
		<dc:creator>Jordy</dc:creator>
		<pubDate>Mon, 16 Aug 2010 08:21:46 +0000</pubDate>
		<guid isPermaLink="false">http://s92890915.onlinehome.us/outputlogic/?p=179#comment-485</guid>
		<description>Hi Evgeni,
at your generated code &quot;data_out &lt;= scram_en ? data_c : data_out;&quot;
why I think it should be &quot;data_out &lt;= scram_en ? data_c : data_in;&quot;
in your code if scram_en == 0, then data_out &lt;= data_out;
this code can never work, data_out will be always the reset value...
thank you</description>
		<content:encoded><![CDATA[<p>Hi Evgeni,<br />
at your generated code &#8220;data_out &lt;= scram_en ? data_c : data_out;&quot;<br />
why I think it should be &quot;data_out &lt;= scram_en ? data_c : data_in;&quot;<br />
in your code if scram_en == 0, then data_out &lt;= data_out;<br />
this code can never work, data_out will be always the reset value&#8230;<br />
thank you</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallel Scrambler Generator by Evgeni</title>
		<link>http://outputlogic.com/?p=179&#038;cpage=1#comment-475</link>
		<dc:creator>Evgeni</dc:creator>
		<pubDate>Mon, 02 Aug 2010 16:41:05 +0000</pubDate>
		<guid isPermaLink="false">http://s92890915.onlinehome.us/outputlogic/?p=179#comment-475</guid>
		<description>Hi Ashok,

There are several ways to generate the code. I just picked this one as the most &quot;basic&quot;. As for the generate statements, it&#039;s specific to Verilog-2001, and many developers are still using &#039;95.
I guess having different options for the code generation will be a nice feature.   

Also, using generate will result in less efficient code, at least for FPGA tools. I discuss it a bit in my &lt;a href=&quot;http://outputlogic.com/my-stuff/circuit-cellar-january-2010-crc.pdf&quot; rel=&quot;nofollow&quot;&gt;Circuit Cellar article&lt;/a&gt; 

Thanks,
Evgeni</description>
		<content:encoded><![CDATA[<p>Hi Ashok,</p>
<p>There are several ways to generate the code. I just picked this one as the most &#8220;basic&#8221;. As for the generate statements, it&#8217;s specific to Verilog-2001, and many developers are still using &#8216;95.<br />
I guess having different options for the code generation will be a nice feature.   </p>
<p>Also, using generate will result in less efficient code, at least for FPGA tools. I discuss it a bit in my <a href="http://outputlogic.com/my-stuff/circuit-cellar-january-2010-crc.pdf" rel="nofollow">Circuit Cellar article</a> </p>
<p>Thanks,<br />
Evgeni</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallel Scrambler Generator by Ashok</title>
		<link>http://outputlogic.com/?p=179&#038;cpage=1#comment-474</link>
		<dc:creator>Ashok</dc:creator>
		<pubDate>Mon, 02 Aug 2010 04:12:40 +0000</pubDate>
		<guid isPermaLink="false">http://s92890915.onlinehome.us/outputlogic/?p=179#comment-474</guid>
		<description>Why don&#039;t you use variables and generate statement... It will be easier to read and very few lines...</description>
		<content:encoded><![CDATA[<p>Why don&#8217;t you use variables and generate statement&#8230; It will be easier to read and very few lines&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Comments by Evgeni</title>
		<link>http://outputlogic.com/?page_id=122&#038;cpage=1#comment-458</link>
		<dc:creator>Evgeni</dc:creator>
		<pubDate>Wed, 23 Jun 2010 15:47:20 +0000</pubDate>
		<guid isPermaLink="false">http://s92890915.onlinehome.us/outputlogic/?page_id=122#comment-458</guid>
		<description>You can have, for example:
   data_out &lt; = scram_en ? {data_in[15:8], data_c[7:0]}: data_out);</description>
		<content:encoded><![CDATA[<p>You can have, for example:<br />
   data_out < = scram_en ? {data_in[15:8], data_c[7:0]}: data_out);</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Comments by Martin</title>
		<link>http://outputlogic.com/?page_id=122&#038;cpage=1#comment-456</link>
		<dc:creator>Martin</dc:creator>
		<pubDate>Tue, 22 Jun 2010 14:02:41 +0000</pubDate>
		<guid isPermaLink="false">http://s92890915.onlinehome.us/outputlogic/?page_id=122#comment-456</guid>
		<description>Hello Evgeni,
thank you for the hint,
it looks that with pass through the input will lead to the output and the lfsr_q will stall.
But how to pass through the upper 8 bits of a 16 bit bus while scrambling the lower ones or vice versa?
In this way IMO when the upper bits are used only these bits must be XORed to the lfsr and based on which or both bytes are passed through there should be 3 different lfsr_c vectors which are used to update the lfsr_q at the next clock edge.
Or is it much simpler but I haven&#039;t recognized it?

BR, Martin</description>
		<content:encoded><![CDATA[<p>Hello Evgeni,<br />
thank you for the hint,<br />
it looks that with pass through the input will lead to the output and the lfsr_q will stall.<br />
But how to pass through the upper 8 bits of a 16 bit bus while scrambling the lower ones or vice versa?<br />
In this way IMO when the upper bits are used only these bits must be XORed to the lfsr and based on which or both bytes are passed through there should be 3 different lfsr_c vectors which are used to update the lfsr_q at the next clock edge.<br />
Or is it much simpler but I haven&#8217;t recognized it?</p>
<p>BR, Martin</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Comments by Evgeni</title>
		<link>http://outputlogic.com/?page_id=122&#038;cpage=1#comment-448</link>
		<dc:creator>Evgeni</dc:creator>
		<pubDate>Mon, 14 Jun 2010 16:23:52 +0000</pubDate>
		<guid isPermaLink="false">http://s92890915.onlinehome.us/outputlogic/?page_id=122#comment-448</guid>
		<description>Hi Martin,

You can add pass_thru input, and change the logic to:

&lt;code&gt;data_out &lt;= pass_thru ? data_in : (scram_en ? data_c : data_out);&lt;/code&gt;

You&#039;d need to assert scram_rst to reset the seed.
 
Hope that helps,
Evgeni</description>
		<content:encoded><![CDATA[<p>Hi Martin,</p>
<p>You can add pass_thru input, and change the logic to:</p>
<p><code>data_out < = pass_thru ? data_in : (scram_en ? data_c : data_out);</code></p>
<p>You'd need to assert scram_rst to reset the seed.</p>
<p>Hope that helps,<br />
Evgeni</code></p>
]]></content:encoded>
	</item>
</channel>
</rss>
