diff options
Diffstat (limited to 'raw-wiki-dump/GitRepositories%2Fcore%2Fhash%2Fsha1')
-rw-r--r-- | raw-wiki-dump/GitRepositories%2Fcore%2Fhash%2Fsha1 | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/raw-wiki-dump/GitRepositories%2Fcore%2Fhash%2Fsha1 b/raw-wiki-dump/GitRepositories%2Fcore%2Fhash%2Fsha1 deleted file mode 100644 index d4c246d..0000000 --- a/raw-wiki-dump/GitRepositories%2Fcore%2Fhash%2Fsha1 +++ /dev/null @@ -1,308 +0,0 @@ -{{{ -#!htmlcomment - -This page is maintained automatically by a script. Don't modify this page by hand, -your changes will just be overwritten the next time the script runs. Talk to your -Friendly Neighborhood Repository Maintainer if you need to change something here. - -}}} - -{{{ -#!html -<h1>sha1</h1> - -<h2>Introduction</h2> - -<p>Verilog implementation of the SHA-1 cryptgraphic hash function. The -functionality follows the specification in NIST FIPS 180-4.</p> - -<p>The sha1 design is divided into the following sections.</p> - -<ul> -<li>src/rtl - RTL source files</li> -<li>src/tb - Testbenches for the RTL files</li> -<li>src/model/python - Functional model written in python</li> -<li>doc/ - documentation (currently not done.)</li> -<li>toolruns/ - Where tools are supposed to be run. Includes a Makefile -for building and simulating the design using <a href="http://iverilog.icarus.com/">Icarus -Verilog</a>.</li> -</ul> - -<p>The actual core consists of the following RTL files:</p> - -<ul> -<li>sha1.v</li> -<li>sha1_core.v</li> -<li>sha1_w_mem.v</li> -</ul> - -<p>The main core functionality is in the sha1_core file. The file -sha1_w_mem contains the message block memory W (see FIPS 180-4). -The top level entity is called sha1_core. The sha1_core module has wide -interfaces (512 bit block input, 160 bit digest). In order to make it -usable you probably want to wrap the core with a bus interface.</p> - -<p>The file sha1.v contains a top level wrapper that provides a simple -interface with 32-bit data access . This interface contains mesage block -and digest registers to allow a host to load the next block while the -current block is being processed.</p> - -<h2>API</h2> - -<p>The following list contains the address map for all registers -implemented by the sha1 top level wrapper:</p> - -<table> -<thead> -<tr> - <th>address</th> - <th>name</th> - <th>access</th> - <th>description</th> -</tr> -</thead> -<tbody> -<tr> - <td>0x00</td> - <td>name0</td> - <td>R</td> - <td>"SHA1"</td> -</tr> -<tr> - <td>0x01</td> - <td>name1</td> - <td>R</td> - <td>" "</td> -</tr> -<tr> - <td>0x02</td> - <td>version</td> - <td>R</td> - <td>"0.50"</td> -</tr> -<tr> - <td></td> -</tr> -<tr> - <td>0x08</td> - <td>control</td> - <td>R/W</td> - <td>Control of core. Bit 0: init, Bit 1: next</td> -</tr> -<tr> - <td>0x09</td> - <td>status</td> - <td>R/W</td> - <td>Status of core. Bit 0: Ready, Bit 1: valid data</td> -</tr> -<tr> - <td></td> -</tr> -<tr> - <td>0x10</td> - <td>block0</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x11</td> - <td>block1</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x12</td> - <td>block2</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x13</td> - <td>block3</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x14</td> - <td>block4</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x15</td> - <td>block5</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x16</td> - <td>block6</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x17</td> - <td>block7</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x18</td> - <td>block8</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x19</td> - <td>block9</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x1a</td> - <td>block10</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x1b</td> - <td>block11</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x1c</td> - <td>block12</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x1d</td> - <td>block13</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x1e</td> - <td>block14</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td>0x1f</td> - <td>block15</td> - <td>R/W</td> - <td>data block register</td> -</tr> -<tr> - <td></td> -</tr> -<tr> - <td>0x20</td> - <td>digest0</td> - <td>R/W</td> - <td>digest register</td> -</tr> -<tr> - <td>0x21</td> - <td>digest1</td> - <td>R/W</td> - <td>digest register</td> -</tr> -<tr> - <td>0x22</td> - <td>digest2</td> - <td>R/W</td> - <td>digest register</td> -</tr> -<tr> - <td>0x23</td> - <td>digest3</td> - <td>R/W</td> - <td>digest register</td> -</tr> -<tr> - <td>0x24</td> - <td>digest4</td> - <td>R/W</td> - <td>digest register</td> -</tr> -</tbody> -</table> - -<h2>Implementation details</h2> - -<p>The implementation is iterative with one cycle/round. The initialization -takes one cycle. The W memory is based around a sliding window of 16 -32-bit registers that are updated in sync with the round processing. The -total latency/message block is 82 cycles.</p> - -<p>All registers have asynchronous reset.</p> - -<p>The design has been implemented and tested on TerasIC DE0-Nano and C5G -FPGA boards.</p> - -<h2>Status</h2> - -<p>The design has been implemented and extensively been tested on TerasIC -DE0-Nano and C5G FPGA boards. The core has also been tested using SW -running on The Novena CPU talking to the core in the Xilinx Spartan-6 -FPGA.</p> - -<h2>FPGA-results</h2> - -<h3>Altera Cyclone FPGAs</h3> - -<p>Implementation results using Altera Quartus-II 13.1.</p> - -<p><strong><em>Altera Cyclone IV E</em></strong></p> - -<ul> -<li>EP4CE6F17C6</li> -<li>2913 LEs</li> -<li>1527 regs</li> -<li>107 MHz</li> -</ul> - -<p><strong><em>Altera Cyclone IV GX</em></strong></p> - -<ul> -<li>EP4CGX22CF19C6</li> -<li>2814 LEs</li> -<li>1527 regs</li> -<li>105 MHz</li> -</ul> - -<p><strong><em>Altera Cyclone V</em></strong></p> - -<ul> -<li>5CGXFC7C7F23C8</li> -<li>1124 ALMs</li> -<li>1527 regs</li> -<li>104 MHz</li> -</ul> - -<h3>Xilinx FPGAs</h3> - -<p>Implementation results using ISE 14.7.</p> - -<p><em>* Xilinx Spartan-6 *</em></p> - -<ul> -<li>xc6slx45-3csg324</li> -<li>1589 LUTs</li> -<li>564 Slices</li> -<li>1592 regs</li> -<li>100 MHz</li> -</ul> - -<h2>TODO</h2> - -<ul> -<li>Documentation</li> -</ul> -}}} - -[[RepositoryIndex(format=table,glob=core/hash/sha1)]] - -|| Clone `https://git.cryptech.is/core/hash/sha1.git` || |