Project - Phase 2
due Wednesday, October 21, 7:20pm
at the beginning of the class
Based on your hash function specification (and possibly its pseudocode)
1. Block diagram of the Datapath (90
2. Interface with the division into
the Datapath and the Controller (10 points).
Please follow the listed below recommendations:
- Please draw your block diagram by hand, using paper (letter
size), pencil and eraser.
- Use several levels of hierarchy in your block diagram.
- You can use connections by name, in order to simplify your
diagram. This is especially true for global signals such as clock,
reset, etc., and for connections between multiple sheets of your
- For each interconnect show the direction of the dataflow (using
arrows). For each bus show its width in bits. Use generic widths, such
as w, b, r, if appropriate.
- Name all SHA core inputs and outputs consistently with the
specification of the SHA core interface described in
- Name all intermediate signals and signals exchanged with the
Controller in a meaningful way, and show their names in the diagram.
- Write internal names of all ports of used components inside of
symbols of respective components. Makes these names short but
meaningful in order to save space (e.g., clk, rst, din, dout, sel, en,
- Make sure that your block diagram is able to execute all
instructions of the pseudocode.
- Optimize your circuit for the maximum speed (throughput) to area
ratio. In particular, make sure to reuse significant portions of your
circuit for multiple iterations of the same operation (e.g.
compression). Avoid including in your circuit any portions that remain
idle for a significant percentage of the execution time.
- Your circuit should not store any significant portions of the
input message before processing. All words of the message should be
processed as soon as they are read from the input FIFO.
- Your block diagram should implement as a minimum a version of
your SHA-3 function with the 256-bit output. Do your best to implement
other versions of your SHA-3 function (for example those with the
384-bit and 512-bit output). Try to accomplish this task using minimum
changes in the block diagram, for example by just describing sizes of
buses, registers and memories using generics, with the values of these
generics dependent on a particular version of the SHA function. Prepare
a table showing a dependence between values of generics (listed in
rows) and versions of the SHA-3 function (listed in columns).
- A part of your circuit
responsible for padding is optional in this assignment.
You can initially assume that padding is done in software. Providing a
block diagram of the padding circuit is worth 10 bonus points.