summaryrefslogtreecommitdiff
path: root/1.md
blob: 2432c0c19fb5a31e05fbb2bbfe76f0c038793dee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Digital Hardware and Logic Gates

## Digital Hardware Concepts

### Digital Hardware

- Hardware (HW) means electronic circuits
- Digital means every wire (or signal) can be in one of two (binary) states
	- Electrically, the states are two different voltage levels (e.g. 5V and 0V)
	- We abstractly define two logic values (1 and 0) to be associated with these two voltage levels
	- We also use the terms "true" and "false"
- Abstraction is key to much of this course!

### Representing Information

- Every signal means something (abstractly)
- A single signal can represent some state, or be used as a means of control
- Multiple signals can be grouped together to create a binary value
	- Each signal is a bit (binary digit)
- The same multi-bit value can mean different things in different contexts...

### Putting values in context

- The 6-bit value 101000 might mean
	- 40, as an unsigned number, or address
	- -24, if viewed as a 6-bit signed number
	- "store byte", as an opcode (instruction)
- Sometimes, leading 0's are implied
	- 101000 as an 8-bit unsigned number is still 40
		- But it's not still -24 as an 8-bit signed number (it's also 40)
- With no context, the default is to interpret as an unsigned (i.e. no negatives) number

---

## Counting in Binary

- Insight into unsigned numbers
- When we count, we start from 0, add 1 at each step:
	- 0+1 = 1
	- 1+1 = 2, but we can't express 2
- In decimal, 9+1 = 10
	- Carry into next position and go back to 0
	- Same with binary, but that happens at 1+1
- 1+1 = 10, 10+1 = 11, 11+1 = 100, etc.
- What is 111?

### Counting from 0 to 15

- You will need to know this range of binary numbers
- Leading 0's: 3 as a 4-bit number is 0011

|Decimal|Binary|
|--|----|
|0 |0   |
|1 |1   |
|2 |10  |
|3 |11  |
|4 |100 |
|5 |101 |
|6 |110 |
|7 |111 |
|8 |1000|
|9 |1001|
|9 |1001|
|10|1010|
|11|1011|
|12|1100|
|13|1101|
|14|1110|
|15|1111|

---

## ASCII codes

- Another context for representing letters
	- A table can be found [here](https://www.asciitable.com/)
- ASCII codes are 7-bit values (between 0 and 127)

---

## Logic building blocks

### Logic Circuit Building Blocks

- Logic circuits are functions that generate an output based on a set of inputs
	- Inputs and output are binary/logical values
- Three fundamental operations
	- AND (output is true only if all inputs are true)
	- OR (output is true if any of the inputs are true)
	- NOT (output is the inverse of the input)
		- Also called INV (for inverter)
- **All** logic functions are made by a combination of these three operations

### Logic in algebraic form

- Note: variable names are generic; they have no inherent meaning
- AND
	- Expressed as a product (multiplication)
	- `Y = X1 * X2` (or just `X1X2`)
- OR
	- Expressed as a sum (addition)
	- `Y = X1 + X2`
- NOT
	- `Y = !X1`

### Logic Gates

- Because these are HW circuits, it's useful to have a schematic abstraction
	- We call these logic "gates"
	- The symbols for AND, OR, and INV are below
	- AND and OR can have more than 2 inputs
		- Same symbol
- Note the overbar used at the output of the inverter
	- Just another way of expressing `!` (or `~`)

![schematic](1.1.png)

### Logic Circuits

- If we want a function that is different than just AND or OR, or we have more than two signals to work with, we can combine gates into a larger circuit
- Much of what we'll be covering is how to define the circuit needed to implement a given logic function

![schematic](1.2.png)

---

[Truth tables, minterms, and simple synthesis ->](2.md)