hardware-software interfaces - columbia universitysedwards/classes/2004/4840/hw-sw... ·...

27
Hardware-Software Interfaces CSEE W4840 Prof. Stephen A. Edwards Columbia University Hardware-Software Interfaces – p. 1/2

Upload: others

Post on 07-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Hardware-Software InterfacesCSEE W4840

Prof. Stephen A. Edwards

Columbia University

Hardware-Software Interfaces – p. 1/27

Page 2: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Basic Processor Architecture

Controller

RegistersAddressReg.

Memory

Shared Bus

Operation Result Latch LatchRead, Write

Hardware-Software Interfaces – p. 2/27

Page 3: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Typical Processor System

ProcessorR/WEnableAddressData

Memory Peripheral Peripheral

Hardware-Software Interfaces – p. 3/27

Page 4: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Simple Bus Timing

Read Cycle

R/W

� � � � �

Enable

� � �

� � � �

Addr

Data � � � � � �

Write Cycle

R/W� � � � �

Enable

� � �

� � � �

Addr

Data � � �

Hardware-Software Interfaces – p. 4/27

Page 5: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Strobe vs. Handshake

Strobe

Req

� �

� � �

� � � �

Data

Handshake

Req�

� � � �

� � � � �

Ack

� � � � �

� � �

� �

Data

Hardware-Software Interfaces – p. 5/27

Page 6: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

1982: The IBM PC

Hardware-Software Interfaces – p. 6/27

Page 7: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

The ISA Bus: Memory Read

CLK

� � �

� �

� �

� �

� �

� �

� �

� �

� �

� � �

Addr

BALE

� �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

MEMR

� � � � � � �

� � � � � � � � � � � � � � � � � � � � � �

� � � � � � �

IOCHRDY

� � � � � � � � � �

� � � � �

� � � � � � � � � � � � � � � � � � � � �

Data

C1 C2 Wait C3 C4

Hardware-Software Interfaces – p. 7/27

Page 8: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

The ISA Bus: Memory Write

CLK

� � �

� �

� �

� �

� �

� �

� �

� �

� �

� � �

Addr

BALE

� �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

MEMW

� � � � � � �

� � � � � � � � � � � � � � � � � � � � � �

� � � � � � �

IOCHRDY

� � � � � � � � � �

� � � � �

� � � � � � � � � � � � � � � � � � � � �

Data

C1 C2 Wait C3 C4

Hardware-Software Interfaces – p. 8/27

Page 9: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

The PC/104 Form Factor: ISA Lives

3.8in

Embedded System Legos. Stack ’em and go.

Hardware-Software Interfaces – p. 9/27

Page 10: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Memory-Mapped I/O

To a processor, everything is memory.

Peripherals appear as magical memorylocations.

Status registers: when read, report state ofperipheral

Control registers: when written, change stateof peripheral

Hardware-Software Interfaces – p. 10/27

Page 11: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Typical Peripheral: PC Parallel Port

Hardware-Software Interfaces – p. 11/27

Page 12: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Parallel Port Registers

D7 D6 D5 D4 D3 D2 D1 D0 0x378

Busy Ack Paper Sel Err 0x379

Sel Init Auto Strobe 0x37A

1. Write Data

2. Assert Strobe

3. Wait for Busy to clear

4. Wait for Acknowledge

Hardware-Software Interfaces – p. 12/27

Page 13: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

A Parallel Port Driver

#define DATA 0x378

#define STATUS 0x379

#define CONTROL 0x37A

#define NBSY 0x80

#define NACK 0x40

#define OUT 0x20

#define SEL 0x10

#define NERR 0x08

#define STROBE 0x01

#define INVERT (NBSY | NACK | SEL | NERR)

#define MASK (NBSY | NACK | OUT | SEL | NERR)

#define NOT_READY(x) ((inb(x)ˆINVERT)&MASK)

void write_single_character(char c) {

while (NOT_READY(STATUS)) ;

outb(DATA, c);

outb(CONTROL, control | STROBE); /* Assert STROBE */

outb(CONTROL, control ); /* Clear STROBE */

}Hardware-Software Interfaces – p. 13/27

Page 14: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Interrupts and Polling

Two ways to get data from a peripheral:

Polling: “Are we there yet?”

Interrupts: Ringing Telephone

Hardware-Software Interfaces – p. 14/27

Page 15: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Interrupts

Basic idea:

1. Peripheral asserts a processor’s interruptinput

2. Processor temporarily transfers control tointerrupt service routine

3. ISR gathers data from peripheral andacknowledges interrupt

4. ISR returns control to previously-executingprogram

Hardware-Software Interfaces – p. 15/27

Page 16: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Many Different Interrupts

Peripheral

Peripheral

Peripheral

Processor Int?

What’s a processor to do?

Hardware-Software Interfaces – p. 16/27

Page 17: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Interrupt Polling

Peripheral

Peripheral

Peripheral

Processor Int

Processor receives interruptISR polls all potential interrupt sources

Hardware-Software Interfaces – p. 17/27

Page 18: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Intel 8259 PIC

Innocor Proprietary Page 2/3

Block Diagram

Data BusBuffer

Cascade

Read /WriteLogic

Control Logic

InServiceRegister

(ISR)

PriorityResolver

InterruptRequestRegister

(IRR)

Interrupt Mask Register(IMR)

ReadWriteCSA0Reset

CAS

Dout[7:0]

INTA Int

Din[7:0]

Data Valid

clk

Prioritizes incoming requests & notifies processor

ISR reads 8-bit interrupt vector number of winner

IBM PC/AT: two 8259s; became standard

Hardware-Software Interfaces – p. 18/27

Page 19: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Debugging Skills

Hardware-Software Interfaces – p. 19/27

Page 20: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

The Edwards Way to Debug

1. Identify undesired behavior

2. Construct linear model for desired behavior

3. Pick a point along model

4. Form desired behavior hypothesis for point

5. Test

6. Move point toward failure if point working,away otherwise

7. Repeat #4–#6 until bug is found

Hardware-Software Interfaces – p. 20/27

Page 21: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

The Xilinx Tool Chain

Hardware-Software Interfaces – p. 21/27

Page 22: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

The .mhs File

Xilinx platgen uses this to piece together thenetlist from library components. Excerpt:PORT VIDOUT_GY = VIDOUT_GY, DIR = OUT, VEC = [9:0]

PORT VIDOUT_BCB = VIDOUT_BCB, DIR = OUT, VEC = [9:0]

PORT FPGA_CLK1 = FPGA_CLK1, DIR = IN

PORT RS232_TD = RS232_TD, DIR=OUT

BEGIN microblaze

PARAMETER INSTANCE = mymicroblaze

PARAMETER HW_VER = 2.00.a

PARAMETER C_USE_BARREL = 1

END

BEGIN opb_uartlite

PARAMETER INSTANCE = myuart

PARAMETER C_CLK_FREQ = 50_000_000

PARAMETER C_BASEADDR = 0xFEFF0100

PARAMETER C_HIGHADDR = 0xFEFF01FF

ENDHardware-Software Interfaces – p. 22/27

Page 23: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

The .mss File

Used by Xilinx libgen to link software. Excerpt:BEGIN PROCESSOR

PARAMETER HW_INSTANCE = mymicroblaze

PARAMETER DRIVER_NAME = cpu

PARAMETER DRIVER_VER = 1.00.a

PARAMETER EXECUTABLE = hello_world.elf

PARAMETER COMPILER = mb-gcc

PARAMETER ARCHIVER = mb-ar

PARAMETER DEFAULT_INIT = EXECUTABLE

PARAMETER STDIN = myuart

PARAMETER STDOUT = myuart

END

BEGIN DRIVER

PARAMETER HW_INSTANCE = myuart

PARAMETER DRIVER_NAME = uartlite

PARAMETER DRIVER_VER = 1.00.b

PARAMETER LEVEL = 1

END

Hardware-Software Interfaces – p. 23/27

Page 24: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

The .ucf file

Pin assigments and other global chip information.net sys_clk period = 18.000;

net pixel_clock period = 36.000;

net VIDOUT_GY<0> loc="p9" ;

net VIDOUT_GY<1> loc="p10";

net VIDOUT_GY<2> loc="p11";

net VIDOUT_BCB<0> loc="p42";

net VIDOUT_BCB<1> loc="p43";

net VIDOUT_BCB<2> loc="p44";

net FPGA_CLK1 loc="p77";

net RS232_TD loc="p71";

Hardware-Software Interfaces – p. 24/27

Page 25: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Lab 1

Write and execute a C program that counts indecimal on the two 7-segment displays on theXSB-300E.

We supply

A hardware configuration consisting of aprocessor, UART, and

A simple memory-mapped peripheral thatlatches and displays a byte controlling eachsegment of the displays.

A skeleton project that compiles, downloads,and prints “Hello World” through the serialdebugging cable.

Hardware-Software Interfaces – p. 25/27

Page 26: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Your Job

Write and test C code that

Counts

Converts the number into arabic numerals onthe display

Transmits this to the display

Goal: Learn basics of the tools, low-level Ccoding, and memory-mapped I/O.

Hardware-Software Interfaces – p. 26/27

Page 27: Hardware-Software Interfaces - Columbia Universitysedwards/classes/2004/4840/hw-sw... · 2004-01-09 · Hardware-Software Interfaces – p. 24/27. Lab 1 Write and execute a C program

Debugging Lab 1

Examine build error messages for hints

“make clean” sometimes necessary

Call print to send data back to the host

Run Minicom on /dev/ttyS0 (9600 8n1) toobserve output

Hardware-Software Interfaces – p. 27/27