Verilog Code Example and Altera Report
This example covers Verilog code, Altera report, and housekeeping tasks for the end of class. Topics include instruction set architecture, RTL levels, instruction cycles, interrupts, and processor basics.
Verilog Code Example and Altera Report
E N D
Presentation Transcript
Housekeeping teams—end of class Example verilog code (alter) Example altera report Lab Monday: you will be asked to show: -- one or more reports --one or more verilog modules --one or more simulation
Processors (ISA, RTL levels); Instruction cycle; interrupts Computer Processor Basics ISA (Instruction Set Architecture) RTL (Register Transfer Language) Main references: Peckol, Chapters 1-3 Patt and Patel, Introduction to Computing Systems (slides from NC State) Fig. 01-00
“Machine” categories • FSM • Stack machine • Turing machine • von Neumann architecture • Harvard architecture Harvard memory: separation of program, data Von Neumann memory program and data share one memory program data
I/O Popped Item (from “Top”) Control (fsm) Combinational Logic “Top” Stack
Registers Cache Main Memory (RAM) (Virtual Storage) {Hard Disk, Secondary Devices} (Actual “RAM” Hierarchy)
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
Instruction Set Architecture • ISA = All of the programmer-visible components and operations of the computer • memory organization • address space -- how may locations can be addressed? • addressibility -- how many bits per location? • register set • how many? what size? how are they used? • instruction set • opcodes • data types • addressing modes • ISA provides all information needed for someone that wants towrite a program in machine language(or translate from a high-level language to machine language).
Example 1:LC-3 (Patt) Overview: Memory and Registers • Memory • address space: 216 locations (16-bit addresses) • addressability: 16 bits • Registers • temporary storage, accessed in a single machine cycle • accessing memory generally takes longer than a single cycle • eight general-purpose registers: R0 - R7 • each 16 bits wide • how many bits to uniquely identify a register? • other registers • not directly addressable, but used by (and affected by) instructions • PC (program counter), condition codes
LC-3 Overview: Instruction Set • Opcodes • 15 opcodes • Operate instructions: ADD, AND, NOT • Data movement instructions: LD, LDI, LDR, LEA, ST, STR, STI • Control instructions: BR, JSR/JSRR, JMP, RTI, TRAP • some opcodes set/clear condition codes, based on result: • N = negative, Z = zero, P = positive (> 0) • Data Types • 16-bit 2’s complement integer: (q: how does 2’s c arithmetic work?) • Addressing Modes • How is the location of an operand specified? • non-memory addresses: immediate, register • memory addresses: PC-relative, indirect, base+offset
Example: NOT (Register) Note: Src and Dstcould be the same register.
Example: ADD/AND (Register) this zero means “register mode”
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 Q: what common data type is not named? Is it “missing”?
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
fig_01_42 Typical ALU and registers fig_01_42
fig_01_16 Data movement instructions: source / destination fig_01_16
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 call [interrupt or exception] change in control flow, e.g., I/O device ready Unusual event, e.g., overflow or undefined instruction
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
LC-3 Data Path Filled arrow = info to be processed. Unfilled arrow = control signal.
Instruction Processing Cycle Fetch instruction from memory Q: what about interrupts? Decode instruction Evaluate address Fetch operands from memory Execute operation Store result
fig_01_46 Different viewpoint: RTL: register-transfer language level fig_01_46
fig_01_52 RTL VIEW fig_01_52 fig_01_53
fig_01_57 Multiple levels--examples fig_01_57
fig_01_58 fig_01_58
table_01_03 table_01_03
Op code (3) Addr Mode (2) Address (13) M: memory MA: memory address register MD: memory data register IR: instruction register AC: accumulator CF: carry flag IA, IB: index registers (13 bit) PC: program counter Ex 2: Minimal hardware resources high degree of functionality What should instructions be? M MA IR AC CF MD IA IB PC ABUS BBUS ALU ALU OUTPUT Instruction format: OBUS Functionality: 2's complement add, subtract, multiply, and divide, and, or, not jumps (conditional and unconditional), simple subroutine call and return Interrupts I/O