OFFICESOON - Free documents Downloads
Contact Us __word document download ,ppt download , pdf download
    

OFFICESOON - Free Documents Downloads

 

HOMEPAGE : Homework

  GET download  GET download
   

 Homework


  >
 
  
 

1  

Homework 

Reading (linked from my web page) S and S Extracts National Semiconductor UART Data Sheet Machine Projects mp2 due at start of class 12 Labs Continue labs in your assigned section  

2  

Addressing I/O Devices 

Intel I/O devices have addresses assigned in an 00rthogonal00space from memory addresses Remember the M/IO# signal that is used with the address bus to select memory versus I/O devices? Use I/O instructions for I/O device addresses

    inw  inb

    outw  outb

 

3  

Addressing I/O Devices 

The 00nput00 instruction 00direct addressing

    inw $0xdd, %ax   #  8 bit address

    inb $0xdd, %al   #  8 bit address

The 00nput00 instruction 00indirect addressing

    movw $0x3f8, %dx

    inw (%dx), %ax   # 16 bit address

    inb (%dx), %al   # 16 bit address

Reads from an I/O device to a register  

4  

Addressing I/O Devices 

The 00utput00 instruction 00direct addressing

    outw %ax, $0xdd  #  8 bit address

    outb %al, $0xdd  #  8 bit address

The 00utput00 instruction 00indirect addressing

    movw $0x3f8, %dx

    outw %ax, (%dx)  # 16 bit address

    outb %al, (%dx)  # 16 bit address

Writes from a register to an I/O device  

5  

Addressing I/O Devices 

In some processor architectures (Motorola), there is no M/IO# signal in the control bus This is called using 00emory mapped I/O00/font> I/O device addresses are in the same address space as memory I/O device ports are accessed as memory addresses Use equivalent of 00ove00instructions to write or read data to or from I/O device registers as memory  

6  

Addressing I/O Devices 

COM port addresses (Neveln, Table 4.2)     

          * corrects an error in the text 

COM Port 

I/O Addresses 

0x3F8-0x3FF 

0x2F8-0x2FF 

0x3E8-0x3EF 

0x2E8-0x2EF  *

 

7  

Accessing the Serial Port 

PC specification allows up to four serial ports COM1: base address is 0x3f8 COM2: base address is 0x2f8  

0x3f8 

0x3fc 

0x3fb 

Write 

Read 

D7 

D6 

D5 

D4 

D3 

D2 

D1 

D0 

D7 

D6 

D5 

D4 

D3 

D2 

D1 

D0 

DLAB 

Set

Brk 

Evn

Par 

Par

Enb 

#

Stop 

Loop 

Out2 

Out1 

RTS 

DTR 

Len

Sel 1 

Len

Sel 0 

0x3fd 

0x3fe 

Same as Write 

Same as Write 

- - - 

- - - 

Stk

Par 

DCD 

RI 

DSR 

CTS 

DCD

CHG 

DSR

CHG 

CTS

CHG 

TE

RI 

RX

ERR 

TX

EMP 

THRE 

BRK

Int 

FRM

ERR 

PAR

ERR 

OVRN

ERR 

Data

RDY 

0

 

8  

Accessing the Serial Port 

Don00 want to use hard coded numbers! Look at $pcinc/serial.h for symbolic constants  

#define COM1_BASE   0x3f8

#define COM2_BASE   0x2f8

#define UART_TX   0  /* send data */

#define UART_RX   0  /* recv data */

. . .

#define UART_LCR   3  /* line control */

#define UART_MCR   4  /* modem control */

#define UART_LSR   5  /* line status */

#define UART_MSR   6  /* modem status */

 

9  

Parallel Serial Conversion 

UART performs double buffered, bidirectional, parallel-to-serial / serial-to-parallel conversion:  

Transmit Holding

Register 

Transmit Shift

Register 

TXD

(Serial) 

THRE 

TX Empty 

Data Bus

(Parallel) 

RXD

(Serial) 

Data Ready 

Receive Shift

Register 

Receive Holding

Register 

Overrun Error

 

10  

Strategies for I/O Driver Code 

Two Basic Strategies for I/O Driver Code Status Polling Interrupt Driven Status Polling Uses only the port addresses on the I/O device Ties up the entire processor for the duration of I/O Interrupt Driven Adds an interrupt line from I/O device to processor Allows processor to do other work during I/O  

11  

Status Polling 

Review the serial port details: Status and Control Registers We will look at assembly language driver to send and receive data in 00ull duplex00 mode Half Duplex 00 Sending or receiving alternately (data going only one direction at a time) Full Duplex 00 Sending and receiving at same time (data going both directions simultaneously)  

12  

Initializing the UART 

Tutor does this for us on COM1: and COM2: Select speed, data bits, parity, and number of stop bits Turn on DTR and wait for DSR on Half duplex mode modem signal handshake: Transmit: Turn on RTS and wait for CTS on Receive: Turn off RTS and wait for DCD on Full duplex mode modem signal handshake: Turn on RTS and leave it on Transmit whenever CTS on Receive whenever DCD on  

13  

Status Polling 

Loop on send/receive data to/from COM2:

(Assume Tutor has initialized bit rate and line control)

1. Turn on DTR & RTS, wait for DSR, CTS, & DCD

2. Read data ready (DR)

3. If data is ready, read a byte of receive data

4. Read transmit holding register empty (THRE)

5. If THR is empty, write a byte of transmit data

6. Jump back to step 2

Processor loop is much faster than byte transfer rate But, hard to do other work while looping on status  

14  

Status Polling Assembly Code 

Step 1a: Turn on DTR and RTS

  movw  $0x2fc, %dx # modem control

  inb  (%dx), %al # get current

  orb  $0x03, %al # or on 2 lsbs

  outb  %al, (%dx) # set control

 

15  

Status Polling Assembly Code 

Step 1b: Wait for DSR, CTS, and DCD

  movw  $0x2fe, %dx # modem status

loop1:

  inb   (%dx), %al # get current

  andb  $0xb0, %al # get 3 signals

  xorb  $0xb0, %al # check all 3

  jnz   loop1  # some missing

# all 3 are on now

 

16  

Status Polling Assembly Code 

Step 2: Read Data Ready Step 3: If ready, read a byte from receive data

loop2:

  movw  $0x2fd, %dx # line status

  inb   (%dx), %al # get data ready

  andb  $0x01, %al # look at dr

  jz    xmit  # if recv data

  movw  $0x2f8, %dx # i/o data addr

  inb   (%dx), %al # move rx to %al

  movb  %al, somewhere # save it somewhere

  movw  $0x2fd, %dx # line status

 

17  

Status Polling Assembly Code 

Step 4: Read transmit holding register empty Step 5: If empty, write a byte to transmit data

xmit:

  inb   (%dx), %al # get thre

  andb  $0x20, %al # look at thre

  jz    loop2  # if tx hr empty

  movb  somewhere, %al # get data to send

  movw  $0x2f8, %dx # i/o data addr

  outb  %al, (%dx) # send it

  jmp   loop2  # and loop

 

18  

COM Port Driver in C 

#include <serial.h> 

void pollputc(unsigned char ch)

{

/* polling loop, waiting for THRE bit to go on */

  while ((inpt(COM1_BASE + UART_LSR) & UART_LSR_THRE) == 0)

     ; 

/* output character  */ 

  outpt(COM1_BASE + UART_TX, ch);

}

 

19  

Implementing a Comm Protocol 

You can now write a 00ow-level00serial port driver! But, can you put a sequence of bytes out the serial port to implement standard communication protocol? Not without a lot more information about the protocol format for messages and procedures that are used to interact in a standard fashion with other devices That is a higher level 00rotocol00that is usually coded in some other portion of the system than the 00river00/font> Example of a protocol procedure is 00low control00/font>  

20  

SW and HW Flow Control 

A flow control mechanism allows receiver to stop transmitter from sending more characters than it is ready to handle (e.g. out of buffers) Software - Use X-ON and X-OFF characters Send X-OFF (ASCII DC3) to stop remote TX Send X-ON  (ASCII DC1) to start remote TX Hardware - Use control signal leads Turn off RTS (crossed to CTS) to stop remote TX Turn on  RTS (crossed to CTS) to start remote TX
 Report Problem File Size 85.5k   ppt  
Homework 

DOWNLOAD Homework

 Homework
 
Most Popular
 MINUTES
 BUDGET COMMITTEE MINUTES
 OFFICIAL MINUTES OF THE BOARD OF EDUCATION MAPLEWOOD...
 CELLULAR PHONE DEPARTMENTAL REQUEST FORM
 The University of Scranton
 TWO RIVERS HIGH TRAMS PROGRAM GUIDELINES AND CONTRACT
 e-Institute Academic and Behavior Contract
 Application for Admission 2008-09
 OZ Communications: The IM 'Wizard' Firm wins big clients...
 Push2Talk - fast and efficient communication
 Environ mental Wellness
 Skookum Biweekly FACTS
 Dean's Council November 10, 2004
 General Services Commission
 Retreat Rental Contract
officesoon

officesoon at gmail.com ,replace at to @


Copyright ©2005-2008 OfficeSoon.com . All rights reserved.