-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
767a57f
commit f6f06b8
Showing
29 changed files
with
936 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
748 changes: 748 additions & 0 deletions
748
70046 - EEE - Advanced Digital Systems Design/6T_SRAM.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 18 additions & 0 deletions
18
70046 - EEE - Advanced Digital Systems Design/Abstraction Layers.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
## Layers | ||
![[abstraction_layers.png]] | ||
*Image is from ADSD slides* | ||
|
||
| Level | Description | Objective | | ||
| ---- | ---- | ---- | | ||
| System | | Defines partitions and the interfaces used to connect between them (e.g. communications, inter-processor, memory hierarchy) | | ||
| Algorithm | | Model the behaviour of the system. Simulations to ensure system implements an algorithm correctly. | | ||
| [[Register Transfer Level\|RTL]]/[[Hardware Description Languages\|HDL]] | The functional level. (using SystemVerilog, VHDL, etc) | Defines the [[Microarchitecture]] , control and data paths, timing/clocking. | | ||
| Gate | Connecting logic gates. | Define the behaviour of components/building blocks used in the [[Register Transfer Level\|RTL]] | | ||
| Circuit | | Implementing logic gate behaviour with transitors. | | ||
| Device | | Optimisation of [[Transistor]] parameters | | ||
## Design Process | ||
Top down and bottom up design strategies (refining & decomposing down to primitive components, versus building up from primitives). | ||
- Usually a mixed strategy of mostly top-down with some bottom-up is used. | ||
## Synthesis | ||
$$\text{Specification} \to \text{System-Level Model} \to \text{algorithm} \to \text{RTL Model} \to \text{RTL Optimisation} \to \text{generic gate-level model} \to \text{Mapped gate-level model} \to \text{Place and Route}$$ | ||
- Mapped Gate-Level Model depends on the underlying technology (e.g. [[FPGA]] vs [[ASIC]]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
- Ripple carry | ||
- lookahead | ||
- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
## Definition | ||
The ability of an object to store charge. | ||
$$Capacitance = \cfrac{Charge}{Voltage}$$ |
6 changes: 6 additions & 0 deletions
6
70046 - EEE - Advanced Digital Systems Design/Content Addressable Memory.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
## Definition | ||
A hardware key-value store. User provides a key, and in return gets the location/value (potentially multiple). | ||
|
||
## Examples | ||
### TLB | ||
Many [[Translation Lookaside Buffer|TLBs]] are implemented using [[Content Addressable Memory]] (provide page virtual address, get cached physical address). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
## Definition | ||
> *Double Data Rate Synchronous Dynamic Random Access Memory* | ||
A [[Synchronous Dynamic RAM]] where control actions occur on both the falling, and rising edge to double the rate at which accesses can be issued. |
25 changes: 25 additions & 0 deletions
25
70046 - EEE - Advanced Digital Systems Design/Dynamic Memory.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
## Definition | ||
Uses a capacitor to store a charge to represent the bit held. | ||
- Much smaller than a [[Static Memory#6T SRAM]] | ||
- leakage from the capacitor requires periodic refresh | ||
- Includes [[Synchronous Dynamic RAM]] and [[DDR SDRAM]] | ||
Much like in [[RAM Organisation]] cells are organised by row and column. | ||
## 1T DRAM | ||
![[1T_Dynamic_Cell.png]] | ||
## Access | ||
| Pin | Name | Purpose | | ||
| ---- | ---- | ---- | | ||
| `A` | Address | contain address of cell | | ||
| `D` | Data | Combined input/output (bidirectional).<br><br>Input when `WE_L` asserted (low) and `OE_L` disasserted (high).<br><br>Output when `WE_L` disasserted (High) and `OE_L` asserted (Low) | | ||
| `RAS_L` | Row Address Low | Latch in row on low (edge-sensitive) | | ||
| `CAS_L` | Column Address Low | Latch in column on low (edge-sensitive) | | ||
| `WE_L` | Write Enable Low | enable writes (edge-sensitive) | | ||
| `OE_L` | Output Enable Low | enable output (`D` is input also) (edge-sensitive) | | ||
### Latency | ||
| Property | Description | 4Mbit DRAM Performance with $t_{RAC} = 60 \ ns$ | | ||
| ---- | ---- | ---- | | ||
| $t_{RAC}$ | Minimum time from `RAS` fall to valid data output. (Set row, wait for output) | $60 \ ns$ | | ||
| $t_{RC}$ | Minimum time from one row access to the next. | $110 \ ns$ | | ||
| $t_{CAC}$ | Minimum time from `CAS` fall to valid data output. (Set column, wait for output) | $15 \ ns$ | | ||
| $t_{PC}$ | Minimum time from one column access to the next. | $35 \ ns$ | | ||
- Accessing different rows is more expensive than different columns. So more same-row access is better. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
## Definition | ||
A queue based buffer. | ||
- Used for IO devices, input (e.g. network interface, smooth bursts from unsynchronised IO pins to constant rate synchronised CPU), and output (e.g. generate audio in bursts, but output at constant rate by DAC) | ||
- Can be implemented as a circular queue. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
## Definition | ||
[[TODO]] | ||
## Comparison | ||
|
||
| Type | Transistors | Latency | Power | | ||
| ---- | ---- | ---- | ---- | | ||
| [[Flip Flop]] | ~20 | fast | | | ||
| [[Static Memory#6T SRAM]] | 6 | medium | low | | ||
| [[Dynamic Memory#1T DRAM]] | 1 | slow | high | |
3 changes: 3 additions & 0 deletions
3
70046 - EEE - Advanced Digital Systems Design/Hardware Description Languages.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
## Definition | ||
A language for describing formal representations of digital circuits for simulation, analysis and synthesis. | ||
- Synthesis is the creation of a [[Netlist]] to use in physically implementing the design. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
## Definition | ||
A [[Soft Processor]] supporting a 32-bit [[RISC]] architecture, 32 interrupt sources, and optional single-precision floating point operations. | ||
|
||
Functional units can be implemented in hardware, emulated in software (e.g. implement floating point multiplication using fixed point instructions for using [[NIOS II]] functional units), or omitted entirely. | ||
|
||
| Core Design | Description | | ||
| ---- | ---- | | ||
| Nios II/f | Fast performance (large size) | | ||
| Nios II/s | Balance between *e* and *f* | | ||
| Nios II/e | Economy core (small size) | | ||
## Units | ||
### ALU | ||
| Operation | Description | | ||
| ---- | ---- | | ||
| Arithmetic | `+,-,/` on unsigned integers | | ||
| Relational | Comparison operations for `==,!=,>=,<` on signed & unsigned integers | | ||
| Shift/Rotate | `0-31` positions per instruction, arithmetic right shift & logical right/left shift. | | ||
*Arithmetic right means shift right, and fill empty left with MSB (hence preserving sign also)* | ||
### Cache | ||
On chip separate instruction and data caches. | ||
- Caches are optional for example when all data and instructions are stored on chip memory (the cache is used for caching external memory, no longer needed) | ||
- Instruction cache is not effective if instruction cache is much smaller than the working set of instructions (e.g. 2KB hot loop, with 1KB instruction cache) | ||
### Tightly Coupled Memory | ||
A guaranteed low-latency memory on chip. | ||
- No need for cache, so no overhead from using a cache. | ||
- performance of the memory is similar to cache hit. | ||
- Cannot be adapted to dynamic behaviour - a fixed region of the available address space is mapped to this memory. | ||
- Place fast access data/instructions here (e.g. performance critical interrupt code) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
## Definition | ||
A description of all the electronic components in an electronic circuit, and how they are connected. |
3 changes: 3 additions & 0 deletions
3
70046 - EEE - Advanced Digital Systems Design/Parasitic Capacitance.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
## Definition | ||
Unwanted [[Capacitance]] built up between parts of an electronic circuit due to proximity. | ||
- Close wires at different voltages generate an electric field that causes change to be stored on both them. |
8 changes: 8 additions & 0 deletions
8
70046 - EEE - Advanced Digital Systems Design/RAM Organisation.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
|
||
## Memory Array Structure | ||
![[basic_memory_array.drawio.svg]] | ||
Generally we attempt to make the memory array as *square* as possible (word-lines $\approx$ bit-lines) to reduce [[Parasitic Capacitance]] of both groups of lines. | ||
- This only allows for a single address & data bus supporting a single read/write port. | ||
## MultiPort Memory | ||
Increasing bandwidth of read with multiple read ports. | ||
|
12 changes: 12 additions & 0 deletions
12
70046 - EEE - Advanced Digital Systems Design/Register File.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
## Definition | ||
A small multiported [[Static Memory]] array. | ||
- We can implement read/write by using a multiplexor to select the input to the flipflop (either its output, or from the bit-line). | ||
- A read line is used to open the output using a tristate-buffer. | ||
![[Register_File_Cell.png]] | ||
## Access | ||
| Access | Description | Type | | ||
| ---- | ---- | ---- | | ||
| Read | Output is a combinational function of the address input. When address is changed, the output is immediately (at speed of silicon) changed (not reliant on clock). | Asynchronous | | ||
| Write | Write can only occur when the flipflop allows, hence the write, select and data lines need to be on long enough to hit a clock-tick and update the flip flop's state. | Synchronous | | ||
![[Register_file_read_write_timing.png]] | ||
- Read changes continuously (combinational logic), but write only has effect of rising clock edge. |
4 changes: 4 additions & 0 deletions
4
70046 - EEE - Advanced Digital Systems Design/Register Transfer Language.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
## Definition | ||
An assembly-like IR used by compilers describing computations as actions on, and transfers between registers. | ||
|
||
**Not to be confused with [[Register Transfer Level]]** |
4 changes: 4 additions & 0 deletions
4
70046 - EEE - Advanced Digital Systems Design/Register Transfer Level.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
## Definition | ||
A design abstraction for modelling [[Synchronous Digital Circuits]] as a flow of signals between hardware registers and the logic applied to the signals. | ||
|
||
The abstraction is present in most [[Hardware Description Languages]] |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+291 KB
70046 - EEE - Advanced Digital Systems Design/Register_file_read_write_timing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions
3
70046 - EEE - Advanced Digital Systems Design/Soft Processor.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
## Definition | ||
A general purpose processor synthesised on a [[FPGA]], rather than in custom silicon. | ||
- Can be customised/modified (add instructions, add/remove features) and redeployed easily. |
12 changes: 12 additions & 0 deletions
12
70046 - EEE - Advanced Digital Systems Design/Static Memory.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
## Definition | ||
Uses transistors, typically two latches. | ||
- Lack of leakage (as with [[Dynamic Memory#1T DRAM]]) means low power consumption & no refresh required. | ||
## 6T SRAM | ||
A common 6-[[Transistor]] SRAM design. | ||
![[6T_SRAM.svg]] | ||
## Access | ||
Both read & write are asynchronous. | ||
- A *WE* (write enable) and *OE* (output enable) control output and | ||
![[SRAM_Access.png]] | ||
## Extra | ||
[Boise State University](https://www.eecis.udel.edu/~vsaxena/courses/ece518/Handouts/SRAM%20Architecture.pdf) |
Empty file.
5 changes: 5 additions & 0 deletions
5
70046 - EEE - Advanced Digital Systems Design/Synchronous Dynamic RAM.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
## Definition | ||
A [[Dynamic Memory]] where the external interface is coordinated by an external clock. | ||
- Previously changed in control signals had immediate affects (only delayed by distance for current to travel) | ||
- Synchronous means each (clock - e.g. rising edge) the control input are applied. | ||
- Allows for pipelining of access operations (each tick a new access can be made, accesses are overlapped for higher throughput) |
28 changes: 28 additions & 0 deletions
28
70046 - EEE - Advanced Digital Systems Design/Taxonomy of Memories.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
## Taxonomy by Access | ||
### Random Access | ||
#### Single Port | ||
*ROM and RAM* | ||
#### Multiport | ||
Provides multiple ports for access to the same data. | ||
#### Special Purpose | ||
*[[Register File]]* | ||
### Associative | ||
*[[Content Addressable Memory|CAM]]* | ||
### Implicit Addressing | ||
*Serial, [[FIFO Memory|FIFO]]/Queue, LIFO/Stack* | ||
## By Implementation | ||
### Volatile | ||
#### [[Static Memory|Static]] | ||
*SRAM* | ||
#### Dynamic | ||
*[[Dynamic Memory|DRAM]], [[Synchronous Dynamic RAM|SDRAM]], [[DDR SDRAM]] and VRAM* | ||
### Non-Volatile | ||
*Ferrorelectric/FRAM* | ||
### Erasable | ||
- *Block Electrically Erasable/Flash* | ||
- *Electrically Erasable/$E^2$PROM* | ||
- *UV Erasable/EPROM* | ||
### One-Time Programmable | ||
*OTP ROM or PROM* | ||
### Mask Programmed | ||
*ROM* |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions
4
70046 - EEE - Advanced Digital Systems Design/basic_memory_array.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.