diff options
author | lshprung <lshprung@yahoo.com> | 2020-12-02 09:28:48 -0800 |
---|---|---|
committer | lshprung <lshprung@yahoo.com> | 2020-12-02 09:28:48 -0800 |
commit | 4fcde852ec11da56785a91faa5efa4b6b4f1e407 (patch) | |
tree | 0875ef74150967fe5db576a0eec03191313ae775 | |
parent | 8419ec5940cd45e455a503858e16b35c6ac925cc (diff) |
-rw-r--r-- | 23.md | 4 | ||||
-rw-r--r-- | 24.1.png | bin | 0 -> 3859 bytes | |||
-rw-r--r-- | 24.10.png | bin | 0 -> 32993 bytes | |||
-rw-r--r-- | 24.2.png | bin | 0 -> 22828 bytes | |||
-rw-r--r-- | 24.3.png | bin | 0 -> 5167 bytes | |||
-rw-r--r-- | 24.4.png | bin | 0 -> 14884 bytes | |||
-rw-r--r-- | 24.5.png | bin | 0 -> 22555 bytes | |||
-rw-r--r-- | 24.6.png | bin | 0 -> 6858 bytes | |||
-rw-r--r-- | 24.7.png | bin | 0 -> 12885 bytes | |||
-rw-r--r-- | 24.8.png | bin | 0 -> 18070 bytes | |||
-rw-r--r-- | 24.9.png | bin | 0 -> 24525 bytes | |||
-rw-r--r-- | 24.md | 126 |
12 files changed, 130 insertions, 0 deletions
@@ -97,3 +97,7 @@ - Address size depends on how many registers ![diagram](23.9.png) + +--- + +[Tri-state buffers, RAM ->](24.md) diff --git a/24.1.png b/24.1.png Binary files differnew file mode 100644 index 0000000..5e43d07 --- /dev/null +++ b/24.1.png diff --git a/24.10.png b/24.10.png Binary files differnew file mode 100644 index 0000000..2f57ede --- /dev/null +++ b/24.10.png diff --git a/24.2.png b/24.2.png Binary files differnew file mode 100644 index 0000000..72be686 --- /dev/null +++ b/24.2.png diff --git a/24.3.png b/24.3.png Binary files differnew file mode 100644 index 0000000..810d4a9 --- /dev/null +++ b/24.3.png diff --git a/24.4.png b/24.4.png Binary files differnew file mode 100644 index 0000000..9d345f8 --- /dev/null +++ b/24.4.png diff --git a/24.5.png b/24.5.png Binary files differnew file mode 100644 index 0000000..94781bf --- /dev/null +++ b/24.5.png diff --git a/24.6.png b/24.6.png Binary files differnew file mode 100644 index 0000000..46a254e --- /dev/null +++ b/24.6.png diff --git a/24.7.png b/24.7.png Binary files differnew file mode 100644 index 0000000..39e39a1 --- /dev/null +++ b/24.7.png diff --git a/24.8.png b/24.8.png Binary files differnew file mode 100644 index 0000000..e021b0e --- /dev/null +++ b/24.8.png diff --git a/24.9.png b/24.9.png Binary files differnew file mode 100644 index 0000000..b8508d2 --- /dev/null +++ b/24.9.png @@ -0,0 +1,126 @@ +[\<- Decoders and register files](23.md) + +--- + +# Tri-state buffers, RAM + +## Tri-state buffer concept and usage for 2:1 mux + +### Active outputs + +- AND/OR/INV gates actively drive a 0 or 1 +- We can't connect the outputs of two gates because they may want to drive different values + - This would be bad (electrically): + +![diagram](24.1.png) + +### Tri-state Buffer/Driver + +- When not enabled, it is no "driving" the output +- Allows connecting multiple outputs + - As long as only one is ever enabled + +![diagram](24.2.png) + +- Z symbol reflects no active value on the wire (since when e=0, the wire becomes electrically disconnected) + +### Muxing with tri-state buffers + +- Usage of tri-state bufferis really a form of muxing + - The input to the enabled buffer is selected to pass thru to the output +- A 2:1 mux using tri-state buffers: + +![diagram](24.3.png) + +--- + +## Using tri-state buffers for large, distributed muxes + +### 1-hot buffer enables + +- The key is that only 1 enable can be asserted at a time +- With four choices and 2 selects => decode + +![diagram](24.4.png) + +### A distributed mux + +- There are four choices here, but we don't have to pull the four inputs into a localized circuit; the buffers can be "far" away + +![diagram](24.5.png) + +--- + +## The abstraction of memory + +### Memory + +- A large number of addressable locations + - Just like a register file, but typically many order of magnitude larger + - Also like a register file, the number of locations is independent of the data width +- The address is an encoded value specifying the desired location +- The structure of the memory may lead to multi-level decoding of the address + +### Memory as an abstraction + +- Systems with memory are usually fairly complex, so memory is typically represented as an abstraction + - Data buses and control signals can differ + - M address bits => 2^M locations + +![diagram](24.6.png) + +--- + +## An array of SRAM cells + +### SRAM cell + +- Same feedback loop as latch + - By contrast, DRAM uses just a capacitor +- "Pass" transistors to read and write + - Similar to tri-state buffer + +![diagram](24.7.png) + +### A 2x2 array of cells + +- Typically connected in a regular pattern + - Cells in a row share the same select line + - Cells in a column share the same data line + +![diagram](24.8.png) + +### A block of SRAM + +- Address goes thru row decoder (1-hot) + +![diagram](24.9.png) + +--- + +## Multi-level addressing of memory + +### Two-level addressing + +- For larger memory structures, it becomes inefficient to have just a single column of cells +- Consider an array of 1024 addressable locations, each of which is just 1-bit of data + - 32 rows of 32 columns yields 1024 bits + - Break 10-bit addresses into 5 bits for selecting the rows, and 5 bits to select the column + - Similar to hotel room numbers + - Row is like the floor, column is like the room + +### A Memory Chip (1Kx4bit) + +- Each sub-array stores one of the 4 bits + +![diagram](24.10.png) + +### More on address decoding + +- Previous example showed break down into rows and columns +- Some memory chips are banked + - Subset of address bits used to select bank +- In general, full address can be broken down into fields that enumerate/select an instance of a structure + - E.g., 4 banks \* 128 rows \* 16 columns + - How many address bits for each and in total? + - Deconstruct address 0x14B7 |