
<font color="#804040"><b>library</b></font> IEEE<font color="#6a5acd">;</font>
<font color="#804040"><b>use</b></font> IEEE<font color="#6a5acd">.</font>STD_LOGIC_1164<font color="#6a5acd">.</font><font color="#804040"><b>all</b></font><font color="#6a5acd">;</font>

<font color="#804040"><b>entity</b></font> addacc <font color="#804040"><b>is</b></font>
   <font color="#804040"><b>port</b></font> <font color="#6a5acd">(</font>
    clock  <font color="#2e8b57"><b>:</b></font> <font color="#804040"><b>in</b></font>  <font color="#2e8b57"><b>bit</b></font><font color="#6a5acd">;</font>
    rst    <font color="#2e8b57"><b>:</b></font> <font color="#804040"><b>in</b></font>  <font color="#2e8b57"><b>bit</b></font><font color="#6a5acd">;</font> <font color="#0000ff">-- active high reset      </font>
    acc    <font color="#2e8b57"><b>:</b></font> <font color="#804040"><b>in</b></font>  <font color="#2e8b57"><b>bit_vector</b></font> <font color="#6a5acd">(</font><font color="#ff00ff">10</font> <font color="#804040"><b>downto</b></font> <font color="#ff00ff">0</font><font color="#6a5acd">);</font> <font color="#0000ff">-- sample from adc</font>
    result <font color="#2e8b57"><b>:</b></font> <font color="#804040"><b>out</b></font> <font color="#2e8b57"><b>bit_vector</b></font> <font color="#6a5acd">(</font><font color="#ff00ff">11</font> <font color="#804040"><b>downto</b></font> <font color="#ff00ff">0</font><font color="#6a5acd">);</font>
    offset <font color="#2e8b57"><b>:</b></font> <font color="#804040"><b>in</b></font>  <font color="#2e8b57"><b>bit_vector</b></font> <font color="#6a5acd">(</font><font color="#ff00ff">10</font> <font color="#804040"><b>downto</b></font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
    <font color="#6a5acd">);</font>
<font color="#804040"><b>end</b></font> addacc<font color="#6a5acd">;</font>

<font color="#804040"><b>architecture</b></font> structural <font color="#804040"><b>of</b></font> addacc <font color="#804040"><b>is</b></font>
   <font color="#804040"><b>component</b></font> adder_10bit
      <font color="#804040"><b>port</b></font> <font color="#6a5acd">(</font>
      addend_10bit   <font color="#2e8b57"><b>:</b></font> <font color="#804040"><b>in</b></font>  <font color="#2e8b57"><b>bit_vector</b></font> <font color="#6a5acd">(</font><font color="#ff00ff">10</font> <font color="#804040"><b>downto</b></font> <font color="#ff00ff">0</font><font color="#6a5acd">);</font>
      augend_10bit   <font color="#2e8b57"><b>:</b></font> <font color="#804040"><b>in</b></font>  <font color="#2e8b57"><b>bit_vector</b></font> <font color="#6a5acd">(</font><font color="#ff00ff">10</font> <font color="#804040"><b>downto</b></font> <font color="#ff00ff">0</font><font color="#6a5acd">);</font>
      adder10_output <font color="#2e8b57"><b>:</b></font> <font color="#804040"><b>out</b></font> <font color="#2e8b57"><b>bit_vector</b></font> <font color="#6a5acd">(</font><font color="#ff00ff">11</font> <font color="#804040"><b>downto</b></font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
      <font color="#6a5acd">);</font>
   <font color="#804040"><b>end</b></font> <font color="#804040"><b>component</b></font><font color="#6a5acd">;</font>

<font color="#804040"><b>signal</b></font> result_adder01     <font color="#2e8b57"><b>:</b></font> <font color="#2e8b57"><b>bit_vector</b></font> <font color="#6a5acd">(</font><font color="#ff00ff">11</font> <font color="#804040"><b>downto</b></font> <font color="#ff00ff">0</font><font color="#6a5acd">);</font>
<font color="#804040"><b>signal</b></font> result_adder02     <font color="#2e8b57"><b>:</b></font> <font color="#2e8b57"><b>bit_vector</b></font> <font color="#6a5acd">(</font><font color="#ff00ff">11</font> <font color="#804040"><b>downto</b></font> <font color="#ff00ff">0</font><font color="#6a5acd">);</font>
<font color="#804040"><b>signal</b></font> result_adder02_reg <font color="#2e8b57"><b>:</b></font> <font color="#2e8b57"><b>bit_vector</b></font> <font color="#6a5acd">(</font><font color="#ff00ff">11</font> <font color="#804040"><b>downto</b></font> <font color="#ff00ff">0</font><font color="#6a5acd">);</font>

<font color="#804040"><b>begin</b></font>
adder01 <font color="#2e8b57"><b>:</b></font> adder_10bit <font color="#0000ff">-- first adder to add adc sample and offset</font>
  <font color="#804040"><b>port</b></font> <font color="#804040"><b>map</b></font> <font color="#6a5acd">(</font>
  addend_10bit     <font color="#2e8b57"><b>=&gt;</b></font> offset<font color="#6a5acd">,</font>
  augend_10bit     <font color="#2e8b57"><b>=&gt;</b></font> acc<font color="#6a5acd">,</font>
  adder10_output   <font color="#2e8b57"><b>=&gt;</b></font> result_adder01
  <font color="#6a5acd">);</font>
adder02 <font color="#2e8b57"><b>:</b></font> adder_10bit <font color="#0000ff">--second adder to add result from first adder to the result from accumulator</font>
  <font color="#804040"><b>port</b></font> <font color="#804040"><b>map</b></font> <font color="#6a5acd">(</font>
  addend_10bit     <font color="#2e8b57"><b>=&gt;</b></font> result_adder01<font color="#6a5acd">,</font>
  augend_10bit     <font color="#2e8b57"><b>=&gt;</b></font> result_adder02_reg<font color="#6a5acd">,</font>
  adder10_output   <font color="#2e8b57"><b>=&gt;</b></font> result_adder02
  <font color="#6a5acd">);</font>
  <font color="#804040"><b>process</b></font> <font color="#6a5acd">(</font>clock<font color="#6a5acd">,</font>rst<font color="#6a5acd">)</font>
  <font color="#804040"><b>begin</b></font>
          <font color="#804040"><b>if</b></font>  <font color="#6a5acd">(</font>rst<font color="#2e8b57"><b>=</b></font><font color="#ff00ff">'1'</font><font color="#6a5acd">)</font> <font color="#804040"><b>then</b></font>
                result_adder02_reg <font color="#2e8b57"><b>&lt;=</b></font><font color="#6a5acd">(</font><font color="#804040"><b>others</b></font><font color="#2e8b57"><b>=&gt;</b></font><font color="#ff00ff">'0'</font><font color="#6a5acd">);</font>
          <font color="#804040"><b>elsif</b></font> <font color="#6a5acd">((</font>clock <font color="#2e8b57"><b>=</b></font> <font color="#ff00ff">'1'</font><font color="#6a5acd">)</font> <font color="#2e8b57"><b>and</b></font> clock<font color="#2e8b57"><b>'event</b></font><font color="#6a5acd">)</font> <font color="#804040"><b>then</b></font>
                  result_adder02_reg <font color="#2e8b57"><b>&lt;=</b></font> result_adder02<font color="#6a5acd">;</font>
                  result <font color="#2e8b57"><b>&lt;=</b></font> result_adder02<font color="#6a5acd">;</font>
          <font color="#804040"><b>end</b></font> <font color="#804040"><b>if</b></font><font color="#6a5acd">;</font>
  <font color="#804040"><b>end</b></font> <font color="#804040"><b>process</b></font><font color="#6a5acd">;</font>
<font color="#804040"><b>end</b></font> structural<font color="#6a5acd">;</font>

