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) develop:

1. Block diagram of the Datapath (90 points)

2. Interface with the division into the Datapath and the Controller (10 points).

Please follow the listed below recommendations:
  1. Please draw your block diagram by hand, using paper (letter size), pencil and eraser.
  2. Use several levels of hierarchy in your block diagram.
  3. 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 diagram.
  4. 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.
  5. Name all SHA core inputs and outputs consistently with the specification of the SHA core interface described in
  6. Name all intermediate signals and signals exchanged with the Controller in a meaningful way, and show their names in the diagram.
  7. 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, etc.).
  8. Make sure that your block diagram is able to execute all instructions of the pseudocode.
  9. 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.
  10. 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.
  11. 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).
  12. 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.