Asynchronous...: Asynchronous Fibonacci counter using two phase dual rail logic.

Clone this repo:

Branches

  1. 6be736b final gds oasis by Jeff DiCorpo · 2 years, 8 months ago main
  2. c3f6bc9 Disabled optimization by HexKotnk · 2 years, 9 months ago
  3. 74137e9 Fibb cnt sim works by HexKotnk · 2 years, 9 months ago
  4. 883a958 Fibonacci counter commit by HexKotnk · 2 years, 9 months ago
  5. b3ac77d Merge pull request #86 from efabless/jeffdi-patch-1 by Jeff DiCorpo · 2 years, 10 months ago

Caravel User Project

License UPRJ_CI Caravel Build

Asynchronous Fibonacci counter

The counter uses two phase dual rail logic. An asynchronous sequential logic circuit does not rely on the assumption that logic values only need to be valid within a window around the clock edge. Instead, the circuit needs to be valid all the time.

Two phase means that data is represented using edges (both a positive and negative edge are equivalent). These edges are called events. Dual rail means that for each bit, we use two wires, one for 0 and one for 1. An event is sent on only one of these two wires to send a binary digit.

To transfer data between components, we need to know whether the component we are sending data to is ready to accept new data and when the data has been sent. A component signals it is ready to accept new data by sending an event on its acknowledge signal. We know that data has been sent once one event is detected on every pair of wires in a bus.

Excellent book about asynchronous design: https://orbit.dtu.dk/en/publications/introduction-to-asynchronous-circuit-design