AZreferate - Referate und hausaufgaben fur schule.
Referatesuche, Hausarbeiten und Seminararbeiten Kostenlose Online-Dokumente mit Bildern, Formeln und Grafiken. Referate, Facharbeiten, Hausarbeiten und Seminararbeiten findest für Ihre einfache Hausarbeiten.



BetriebstechnikBiographienBiologieChemieDeutschDigitaltechnik
ElectronicaEpochenFertigungstechnikGemeinschaftskundeGeographieGeschichte
InformatikKulturKunstLiteraturManagementMathematik
MedizinNachrichtentechnikPhilosophiePhysikPolitikProjekt
PsychologieRechtSonstigeSportTechnikWirtschaftskunde

Referat I²C-Bus-Dokumentation - Slave-Receiver - Projektablauf

digitaltechnik referate

digitaltechnik referate

I²C-Bus-Dokumentation

Slave-Receiver

Aufgabenstellung


Unser Projekt sollte darin bestehen, einen I²C-Bus Slave-Receiver als XILINX-Schaltung zu realisieren. Hr. Prof. Guggenberg hatte jedoch bald die Idee, daß es praktisch wäre, einen Slave-Receiver als Software-Programm für den Mikroprozessor zu erstellen. So wurde unsere Aufgabe in zwei Teile unterteilt, zuerst die softwaremäßige und anschließend die hardwaremäßige Realisierung des I²C-Bus-Bausteins.

Projektablauf

Anfänglich mußten wir uns in die Grundlagen des I²C-Bus einarbeiten. Während dieser Zeit wurden auch einige andere Aufgaben, wie die Fertigstellung unseres Vorjahresprojekts oder die Programmierung einiger WSI-Chips für das Heinrich-Clausen-µP-Board, erledigt. Anschließend entstanden erste Programmteile, z.B. die Erkennung der Startbedingung, Adress­erkennung, usw. Am Ende des ersten Semesters war ein Programm entstanden, bei dem eine I²C-Bus Übertragung software­mäßig möglich war (hierfür wurde ein "Software-Master" programmiert). Dieses Programm war jedoch nicht zu verwenden, da es die I²C-Bus Spezifikationen nicht einhielt. Der größte Teil des zweiten Semesters wurde dafür verwendet, das Programm so umzuarbeiten, daß ein "Hardware-Master" damit kommunizieren konnte (Einhaltung der Spezifikationen!). Somit entstand ein komplett überarbeitetes Programm, daß bis jetzt ohne Fehler funktioniert und bereits von anderen Klassen verwendet wird. Christian Steinbrecher kümmerte sich ebenfalls um eine 19"-Konstruktion, auf der ein fix verdrahteter I²C-Bus aufgebaut wurde. Ein Teil besteht aus einem Hardware-Master-Transmitter und einem Software-Salve-Receiver, der andere aus einem Hardware-Master-Receiver und einem Software-Slave-Transmitter, also zwei Specon- und zwei Heinrich-Clausen-Boards. Zusätzlich wurde ein Hardware-Slave-IC montiert. Das zweite Problem, die XILINX-Schaltung, wurde anhand eines Zustandsdiagramms (nach mehrmaligem Drängen von Hrn. Prof. Guggenberg) gelöst. Dort wurden die Zustände an der SCL- bzw. SDA-Leitung eingetragen und benötigte Signale hinzugefügt. So entstand eine Schaltung die mit VIEWLOGIC gezeichnet wurde und nun nur noch in das Programm XACT übernommen werden muß, sodaß ein XILINX-Baustein der 3000er Serie programmiert werden kann. Dies ist unsere letzte Aufgabe, somit wird unser Projekt wahrscheinlich rechtzeitig und erfolgreich abgeschlossen werden.

Nähere Informationen zu den einzelnen Projekttagen sind dem Projekttagebuch zu entnehmen.


Prinzipielle Überlegungen (Flussdiagramm)

Impulsdiagramme + Spezifikationen

Timing-Spezifikationen

Parameter

Symbol

min.

Max.

Einheit

SCL Taktfrequenz

SCL-clockfrequency

fSCL

100

kHz

Zeit in der Bus frei bis wieder Übertragung starten kann

Bus free time

tBUF

4,7

-

µs

Haltezeit nach Startbedingung (Zeit bis erster Takt generiert wird)

Start condition hold time

tHD;STA

4,0

-

µs

LOW-Periode des Taktes

SCL-LOW period

tLOW

4,7

-

µs

HIGH-Periode des Taktes

SCL-HIGH period

tHIGH

4,0

-

µs

Zeitdifferenz zwischen SCL->HIGH u. Startbed.

(bei Repeated Start -Bedingung)

Start condition set-up time

tSU:STA



µs

Haltezeit der gültigen Daten nach SCL-Impuls

(für C-Bus kompatible Master

Data hold time

tHD:DAT

0

5

-

-

µs

µs)

Vorhaltezeit der gütigen Daten vor SCL-Impuls

Data set-up time

tSU:DAT

250

-

ns

Anstiegszeit (SDA und SCL-Flanken)

Rise time

tR

-

1

µs

Abfallszeit (SDA und SCL-Flanken)

Fall time

tF

-

300

ns

Zeitdifferenz zwischen SCL->HIGH u. Stopbed.

Stop condition set-up time

tSU:STO



µs

START-Bedingung


Kurze Erklärung

START: Clock - Leitung HIGH   Datenleitung wechselt von HIGH auf LOW

START Bedingung wird immer vom Master generiert.

An den Bus angeschlossenen ICs (gewisse Geräte) können die START Bedingung leicht erkennen, weil sie das richtige Interface besitzen.

Mikrocomputer ohne ein solches Interface müssen die Datenleitung zwei mal pro Periode abtasten, um den Übergang zu erkennen.

Spezifikationen

tBUF min 4,7µs . BUS FREE TIME Zeit , die der Bus frei sein muß, bevor wieder eine

Übertragung gestartet werden kann

tHD;STA min 4,0µs . START CONDITION HOLD TIME Haltezeit nach Startbedingung (Zeit bis

erster Takt generiert wird)


LOW und HIGH Zustände - Mastertakt

Kurze allgemeine Erklärung

[i]

Der Takt beim I²C-Bus hat eine minimale LOW-Periode von 4,7µs und eine minimale HIGH-Periode von 4µs. In diesem Mode kann ein Master einen Takt mit einer Frequenz von bis zu fmax=100kHz erzeugen.

Alle an den Bus angeschlossenen Geräte müssen aber in der Lage sein, diese Frequenz zu verarbeiten - gegebenenfalls muß der Takt synchronisiert werden   d.h. der Master wird in einen WAIT STATE gebracht. Dadurch wird die LOW-Periode ausgedehnt. Daraus ergibt sich natürlich eine Verminderung der Frequenz.

Spezifikationen

tLOW min 4,7µs . SCL-LOW period LOW-Periode des Taktes

tHIGH min 4,0µs . SCL-HIGH period HIGH-Periode des Taktes

Zeitspezifikationen bei Datentransfer


Allgemein

Daten dürfen nur während der LOW-Periode des Taktes geändert werden (ausgenommen START- und STOP-Bedingungen).

Spezifikationen

tLOW min 4,7µs . SCL-LOW period LOW-Periode des Taktes

tHIGH min 4,0µs . SCL-HIGH period HIGH-Periode des Taktes

tHD;DAT 0µs . DATA HOLD TIME Haltezeit der gültigen Daten nach einer

(negativen) SCL-Flanke

( 5µs . DATA HOLD TIME Haltezeit der gültigen Daten nach einer

(negativen) SCL-Flanke für C kompatible Master )

tSU;DAT min 250ns . DATA SET-UP TIME Vorhaltezeit der gültigen Daten vor einer

(positiven) SCL-Flanke


STOP Bedingung

Kurze Erklärung

STOP: Clock - Leitung HIGH   Datenleitung wechselt von LOW auf HIGH

STOP Bedingung wird immer vom Master generiert.

Auch hier gilt: An den Bus angeschlossenen ICs können die STOP Bedingung leicht erkennen, weil sie das richtige Interface besitzen. Mikrocomputer ohne ein solches Interface müssen die Datenleitung zwei mal pro Periode abtasten, um den Übergang zu erkennen.

Spezifikationen

tSU;STO min 4,7µs . STOP CONDITION SET-UP TIME Zeitdifferenz zwischen positiver Flanke

SCL und der STOP-Bedingung

RISE-  und  FALL - TIME


Spezifikationen

tR max. 1µs . RISE TIME Anstiegszeiten für SDA- und SCL-Flanken

tF max. 300ns . FALL TIME Abfallzeiten für SDA- und SCL-Flanken


Repeated start

Spezifikationen

tSU;STA min. 4,7µs . SCL HIGH Zeitdifferenz zwischen der (positiven) Flanke des

Taktes und der Startbedingung (Repeated Start

Bedingung !)


Programm:


;############### I2C Slave ###################


;### Christoph Auer,Christian Steinbrecher ###

;############### 5HNA 1997/98 ################




;############## Zuweisungen ##################



hauptpr code 8100h

unter code 8200h

charout code 3000h

binout       code 301eh

binbit code 3018h

charin code 302ah

cursor equ 59h

home         equ 48h

erase equ 4Ah

esc          equ 1Bh

left         equ 44h

down         equ 42h

auer          equ 10000000b ;Adresse des Slave-Receivers

enter equ 3003h

dat          bit 01b

sda          bit p1.7 ;Port für die softwaresimulierte SDA-Leitung

scl          bit p1.6 ; -'- SCL-Leitung



;############# Startbedingung ################



org    hauptpr


haupt: jnb scl,haupt ;SCL=HIGH


X1:          jnb sda,haupt ;SDA=HIGH


anf:         jnb scl,haupt ;SCL immer noch HIGH

jb sda,anf ;SDA HIGH->LOW Übergang

mov R1,#00h ;R1 'leeren'

mov R2,#00h ;R2 'leeren'

mov R3,#8h ;R3 für 8 Durchläufe setzen (1byte)



;############## Adressabfrage ################



X2:          setb scl ;SCL freigeben


X3:          jnb scl,x3 ;positive Clockflanke zur Datenübernahme


X4:          mov c,sda ;Daten übernehmen

nop ;minimale HIGH-Zeit=4µs

clr scl ;Clock auf LOW ziehen ('Master bremsen')

mov A,R2 ;gesicherten Akku laden

rlc A ;Daten (Carry-Bit) bitweise (MSBLSB) in den

;Akku schreiben (rotieren)

mov R2,A ;Akku (Daten) sichern

djnz r3, x2 ;8x wiederholen (8bit=1byte)


X5:          mov R4,#auer ;lädt eigene Adresse in R4

mov A,R2 ;gesicherten Akku laden

subb A,R4 ;vergleicht die angelegten Daten=Adresse mit der

;eigenen Adresse

jnz haupt ;bei Übereinstimmung weiter, wenn nicht warten auf neue

;Startbedingung


;############### Acknowledge #################



ack:         clr sda ;Daten auf LOW ziehen

setb scl ;Takt freigeben

ack11: jnb scl,ack11 ;warten bis Clock auf HIGH (Acknowledge Bit: Daten=LOW

;während SCL-HIGH-Phase)

ack12: jb scl,ack12 ;halten der Datenleitung auf LOW bis Clockleitung LOW

setb sda ;Datenleitung freigeben



;############### Datenempfang ################



empfang: mov R3,#8h ;R3 für 8 Durchläufe setzen (1byte)

mov R1,#0h ;R1 'leeren'

mov R4,#2h ;Stopbedingung 2x abtasten


X6:          setb scl ;SCL freigeben


X7:          jnb scl,x7 ;postive Taktflanke (SCL LOW->HIGH) zur Datenübernahme


X8:          mov c,sda ;Daten übernehmen

jb sda,x98 ;wenn sda=HIGH, dann sicher keine Stop-Bed.


x99:         jnb scl,x98 ;scl=HIGH

jb sda,haupt ;sda:low->high

djnz R4,x99 ;2x abtasten


x98:         clr scl ;Clock auf LOW ziehen ('Master bremsen')

mov A,R1 ;gesicherten Akku laden

rlc A ;Daten (Carry-Bit) bitweise (MSBLSB) in den Akku

;schreiben (rotieren)

mov R1,A ;Akku (Daten) sichern

djnz R3,X6 ;8x wiederholen (1byte)

mov A,R1 ;gesicherten Akku laden

call charout ;Ausgabe am Bildschirm



;############### Acknowledge #################



ack2: clr sda ;Daten auf LOW ziehen

setb scl ;Takt freigeben

ack21: jnb scl,ack21 ;warten bis Clock auf HIGH (Acknowledge Bit: Daten=LOW

;während SCL-HIGH-Phase)

ack22: jb scl,ack22 ;halten der Datenleitung auf LOW bis Clockleitung LOW

setb sda ;Datenleitung freigeben

jmp empfang ;Sprung zur Empfangsroutine=Warten auf neue Daten




end

TIMING-DIAGRAMM:

Programm

Zeit/Befehl

SDA

SCL






;############# Startbedingung ################


org

hauptpr

haupt:

jnb

scl,haupt

2µs

X1:

jnb

sda,haupt

2µs

anf:

jnb

scl,haupt

2µs

jb

sda,anf

2µs

mov

R1,#00h

1µs

mov

R2,#00h

1µs

mov

R3,#8h

1µs


;############## Adressabfrage ################


X2:

setb

scl

1µs

X3:

jnb

scl,x3

2µs

X4:

mov

c,sda

1µs

nop

1µs

clr

scl

1µs

mov

A,R2

1µs

rlc

A

1µs

mov

R2,A

1µs

djnz

r3, x2

2µs

X5:

mov

R4,#auer

1µs

mov

A,R2

1µs

subb

A,R4

1µs

jnz

haupt

2µs


;############### Acknowledge ################


ack:

clr

sda

1µs

setb

scl

1µs

ack11:

jnb

scl,ack11

2µs

ack12:

jb

scl,ack12

2µs

setb 

sda

1µs


;############### Datenempfang ###############


empfang:

mov

R3,#8h

1µs

mov

R1,#0h

1µs

mov

R4,#2h

1µs

X6:

setb

scl

1µs

X7:

jnb

scl,x7

2µs

X8:

mov

c,sda

1µs

jb

sda,x98

2µs

x99:

jnb

scl,x98

2µs

jb

sda,haupt

2µs

djnz

R4,x99

2µs

x98:

clr

scl

1µs

mov

A,R1

1µs

rlc

A

1µs

mov

R1,A

1µs

djnz

R3,X6

2µs

mov

A,R1

1µs

call

charout

1,x ms


;############### Acknowledge ################


ack2:

clr

sda

1µs

setb

scl

1µs

ack21:

jnb

scl,ack21

2µs

ack22:

jb

scl,ack22

2µs

setb

sda

1µs

jmp

empfang

2µs


end

Zustandsdiagramm (f. XILINX-Schaltung)

Blockschaltbild

Gray-Code-Counter (9 negative Flanken)

Dieser Zähler ist kein richtiger Gray-Code-Zähler, weil sich vom 9. Auf den 1.Zustand 2Bits ändern. Dies ist jedoch unerheblich, da bei diesem Übergang nicht der wichtige Zustand 8 erreicht werden kann (hier wird das Schieberegister ausgelesen und das ACK "gesendet").

QN+1

QN

D

C

B

A

D

C

B

A


















































































A






C

D





B

A





X


X

X

C

D



X

X


X

X


B

A=/B*/C*/D+C*D

A





X


X

X

C

D



X

X


X

X


B

B=A*/B*/C+B*/D

A





X


X

X

C

D



X

X


X

X


B

C=/B*D

A





X


X

X

C

D



X

X


X

X


B

D=/A*B+/A*/B*D

komplette Schaltung (Viewlogic)




[i] So nicht im Datenblatt spezifiziert, TL,TH sollte sich aber bei anderem fmax derart ändern



Referate über:


Datenschutz




Copyright © 2024 - Alle Rechte vorbehalten
AZreferate.com
Verwenden sie diese referate ihre eigene arbeit zu schaffen. Kopieren oder herunterladen nicht einfach diese
# Hauptseite # Kontact / Impressum