390 likes | 513 Views
Explore the basics of computer processors, ISA, and RTL in embedded systems design. Learn about data types, numeric representations, error handling, and instruction coding intricacies. Discover control instructions, addressing modes, and common ALU functions. Dive into the world of embedded systems with this comprehensive reference.
E N D
Embedded Systems: Hardware Computer Processor Basics ISA (Instruction Set Architecture) RTL (Register Transfer Language) Main reference: Peckol, Chapter 1 Fig. 01-00
fig_01_01 Basic components Common bus structure: address, data, control fig_01_01 fig_01_03
fig_01_05 Some processor options (note firmware) 1. Microprocessor-based system fig_01_05 2. Microcontroller-based system Fig. 1-05 components integrated into one unit) fig_01_07 DSP (A/D, D/A; high speed—video, audio, images fig_01_06
DATA: DATA TYPES fig_01_08 NUMERIC --Unsigned integer --Signed integer (2’s complement, sign-magnitude, fixed point, etc.) --Floating point: 3 components: sign exponent mantissa fig_01_08 NONNUMERIC --address --character
Numeric data • Range is always limited. Number of digits of resolution is size of fractional part. • Example: in 4 numeric bits: • Number of bits in fractionrange • 0 (integer) 0-15 • 1: xxx.x 0-7.5 • (fractions 0, ½) • 2: xx.xx 0-3.75 • (fractions, 0, ¼, ½, ¾) • 3: x.xxx 0-1.875 • (fractions, 0, 1/8, ¼, 3/8, ½, 5/8, ¾, 7/8) fig_01_09
Most base 10 fractions cannot be represented exactly in binary: Example: how to represent 2.x in 4 bits, with 2 bits of resolution? Choices: 2.0, 2.25, 2.5, 2.75, 3.0 2.1 2.0 or 2.25 2.2 2.0 or 2.25 2.3 2.0 or 2.25 or 2.5 fig_01_09 fig_01_09 r rounding truncation truncation Error range for n bits of resolution: Truncation: -2-n < Etruncation < 0 Rounding: - ½ 2-n < Erounding< ½ 2-n Computation: which is easier to compute? rounding down rounding up
Error propagation in arithmetic: Examples: Consider two numbers whose true values are N1 and N2 and whose values in the computing system are N1E and N2E Addition: errors add: N1E = N1 + E1 N2E = N2 + E2 N1E + N2E = (N1 + E1) + (N2 + E2) = N1 + N2 + E1 + E2 Multiplication: error: N1E * N2E = (N1 + E1) * (N1 + E2) = (N1N2) + (N2 * E1 + N1 * E2) + (E1 * E2) term 1 term 2 Note that if term 2 is neglected then error depends on size of N1 and N2 fig_01_09
Another example (pp. 11-12 of text): measuring power dissipated in resistor R in the following circuit: Suppose E = 100 VDC +/- 1%, I = 10A +/- 1%, R = 10 ohms +/- 1%. 3 methods of caluculatin power dissipated, neglecting lower order error terms: a. E1 = (100V +/- 1%) * (10A +/- 1%) = 998.9 1001.1 b. I2R = (10A +/- 1%) * (10A +/- 1%) * (10 ohms +/- 1%) = 997 1003 c. E3 = (100 V +/- 1%)*(100 V +/- 1%) / (10 ohms +/- 1%) = 908.9 1111.3 Which should we use? “optimistic”: a “middle-of-the-road”: average of a,b,c “safest”: c fig_01_10 fig_01_10
Instructions—ISA level • Instruction coding: • HLL (high level language, C, C++ , e.g.) • assembly language (ISA) • machine language (can work at any level; high level allows faster but less efficient coding) IEEE Standard 694-1985—IEEE standard for microprocessor assembly language—used for examples in text
operator addr mode operand(s) Instruction coding: Fields: operator, operands (type of addressing) Example: 32 bits 3 bits: opcode 2 bits: address mode (e.g. direct, indirect, indexed, immediate) 27 bits: for addressing operand (s) Expanding opcode (example): 000-110xxxx…xxx: 2 operands 1110xxx…xxx: 1 operand 1111xxx…xxx: no operand (e.g., HALT)
Example instruction formats fig_01_13 fig_01_14 fig_01_13 fig_01_15
Instructions Instruction types: arithmetic / logical data movement control Arithmetic / logical instructions: operator; number of operands; arity (unary, binary, three-operand, …) Examples: x = -x negation, assignment x = y assignment x = x + y addition, assignment z = x + y addition, assignment
fig_01_42 Typical ALU and registers fig_01_42
Common ALU functions fig_01_43 fig_01_43 Cannot be affected by interrupt
Common ALU functions (continued) fig_01_44 fig_01_44
fig_01_45 Common ALU functions (continued) Question: what is a minimal set of ALU instructions? fig_01_45
fig_01_16 Data movement instructions: source / destination fig_01_16
fig_01_17 Common data movement instructions fig_01_17 Question: how can you implement XCH without using a temporary variable?
Addressing modes: Immediate: MOVE A, #BH; Direct: MOVE OPR1, OPR2; Indirect: MOVE OPR1, *myVarPtr; MOVE *OPR1, *OPR1; MOVE *OPR1, **yPtr; Register direct: MOVE Reg1, Reg2; Register indirect: MOVE Reg1, *Reg2; Indexed (loops): MOVE Reg1, OPR2[REG2]; PC relative (loops,e.g.; offset can be negative): ADD PC, [Reg1]; Example: what is the difference between Y, *Y, **Y fig_01_12 fig_01_12 Indirect addressing—myVarPtr holds address or myVar
Addressing examples: fig_01_21 fig_01_21
fig_01_22 fig_01_22
fig_01_23 fig_01_23
fig_01_24 fig_01_24
fig_01_25 Control instructions Control can be: sequential (default) loop (pre or posttest) branch: go to conditional (if, if-else,, case, branch on condition) procedure or function calll
Branch instructions Typical condition codes Typical branch instructions: fig_01_29 fig_01_29 fig_01_30
Example of conditional statements: C / assembly language: fig_01_31 fig_01_31 fig_01_32
Looping: example fig_01_34 fig_01_34 fig_01_35
Function or procedure call: Must store return address, pass information back and forth What are standard parameter passing methods? fig_01_36 fig_01_36 fig_01_37
fig_01_39 Stack: common way to handle procedure / function calls Q: what are two alternative methods for handling function / procedure calls? Which methods facilitate recursion? fig_01_39
fig_01_40 Function call: example: fig_01_40 fig_01_41
Question: can you design a “general-purpose computer” with a 3-bit opcode?
fig_01_46 Different viewpoint: RTL: register-transfer language level fig_01_46
fig_01_49 Register behavior: Read / Write; Serial / Parallel fig_01_49 fig_01_51 fig_01_50
fig_01_52 RTL VIEW fig_01_52 fig_01_53
fig_01_54 Instruction execution cycle Q: Where is this step implemented? fig_01_55 fig_01_54
fig_01_57 Multiple levels--examples fig_01_57
fig_01_58 fig_01_58
fig_01_59 fig_01_59
table_01_03 table_01_03