Autor |
Hardware PIC Register Suche nach: pic (2056) |
|
|
|
|
BID = 771874
chris24 Stammposter
Beiträge: 217
|
|
Hallo,
nach einer Diskussion mit einem Bekannten über den physikalischen Aufbau eines PICs, möchte ich euch kurz um eine Meinungs bzw. Auskunft bitten.
Wo werden Registerinhlate, wie z.B. die das Statusregister gespeichert?
Bei movwf STATUS verschiebe ich in eine Bank des File-Registers? Sind die Register dann zusammen mit oder in dem RAM gespeichert?
Danke.
_________________
Gruß
Chris24 |
|
BID = 771887
QuirinO Schreibmaschine
Beiträge: 2205 Wohnort: Behringersdorf
|
|
Zitat :
| verschiebe ich in eine Bank des File-Registers? |
Ich denke ja, siehe mein Bild im Anhang aus dem Datenblatt des 16F628
Zitat :
| Sind die Register dann zusammen mit oder in dem RAM gespeichert? |
Die Frage versteh ich nicht.
|
|
BID = 771895
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Welchen meinst du?
Mittlerweile gibt es eine stattliche Zahl davon und nicht alle sind gleich.
|
BID = 771897
chris24 Stammposter
Beiträge: 217
|
Es handelt sich um die PIC16F87XA Familie.
Auf Mikrochip.com sind nur Blockdiagramme dargestellt, welche das Arbeitsschema zeigen sollen. Hardware wird dort nicht erklärt.
Mir geht es hier konkret um den Speicherort. Der RAM wird über das F-Register beschrieben. Die anderen Register werden auch über dieses beschrieben, bzw. befinden sich in diesem. In dem Blockdiagramm sind sie aber außerhalb dargestellt.
Frage: Ist es Tatsache, dass sich der komplette Speicher im F-Register befindet oder ist der Assemblerbefehl nur so geschrieben?
Danke.
_________________
Gruß
Chris24
|
BID = 771910
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Ist es Tatsache, dass sich der komplette Speicher im F-Register befindet |
Nein, zumal es gar kein F-Register gibt.
Die Bytes des Registerfiles werden ja über den Adressdecoder adressiert, der bei der direkten Adressierung die auszuwählende Adresse in einem Feld des Opcode vorfindet.
Die Abtrennung des Adressfeldes und der eventuelle Ersatz seines Inhalts durch den Inhalt des FSR besorgt der Befehlsdecoder.
Deshalb wird das FSR-Register in dessen Nähe angeordnet sein, ebenso wie sich das Statusregister gewöhnlich in unmittelbarer Nähe der ALU befindet.
|
BID = 771916
Bartholomew Inventar
Beiträge: 4681
|
Auf die Schnelle aus dem Gedächtnis:
Die meisten Systemregister liegen im normalen RAM und lassen sich mit den für GP-Registern üblichen Befehlen auslesen/verändern. Eine Ausnahme bildete früher bei alten kleinen PICs (12-Bitter, weiß nicht mehr genau welche) das Option-Register, das seine eigenen Befehle hatte (es gab max. ein Dutzend Register, und das Option-Register hatte aus Address-Platzgründen keine eigene richtige Addressnummer, sondern wurde über einen eigenen Befehl angesprichen).
Ferner liegt der Rücksprungadressen-Stack nicht im RAM, sondern hat seine einen davon separaten Speicherzellen (die auch fast immer länger als die normalen Wortlängen sind, wenn ich mich nicht irre).
Separat neben dem RAM müsste in der Hardware auch noch das Überlauf-Bit (Carry) vorhanden sein, dass dann ins Statusregister kopiert wird (mag mir nicht vorstellen, dass der Akkumulator/W-Register mit dem Bit im Statusregiser hartvertrahtet ist); gleiches gilt für's DC-Bit (Überlauf an Stelle 5).
Und dann gibt's natürlich noch die Konfigurations-Bits (Taktgeschwindigkeit, Kopierschutz usw.), die beim Brennen festgelegt werden.
Das Work-Register selbst liegt natürlich auch nicht im Ram.
Das müsste es gewesen sein an Speicher außerhalb des RAMs (abgesehen von evtl. vorhandenem EEPROM).
Zitat :
| Frage: Ist es Tatsache, dass sich der komplette Speicher im F-Register befindet oder ist der Assemblerbefehl nur so geschrieben? |
Das F-Register ist eine beliebige Adresse im RAM, die mit dem Befehl an die ALU übergeben wurde.
Gruß, Bartho
Edit: Perl war schneller
(Telefon kam dazwischen)
Zitat :
| ... ebenso wie sich das Statusregister gewöhnlich in unmittelbarer Nähe der ALU befindet. |
Kannst Du bestätigen, dass das Carry-Bit auch noch separat neben dem Akkumulator vorhanden ist, oder stimmt meine Theorie nicht?
Andererseits: Dann müsste ja irgendwo im Takt auch noch das Statusregister separat manipuliert werden... hmm...
[ Diese Nachricht wurde geändert von: Bartholomew am 22 Jun 2011 22:22 ]
|
BID = 771942
chris24 Stammposter
Beiträge: 217
|
Kurzum:
Das F-Register gibt die Befehle an den RAM weiter.
Dort stehen einige Register, u.a. auch das Statusregister.
Danke.
_________________
Gruß
Chris24
|
BID = 771945
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| dass das Carry-Bit auch noch separat neben dem Akkumulator vorhanden ist, oder stimmt meine Theorie nicht? |
Diese Frage verstehe ich wohl nicht.
Das Carry ist ein separates Flipflop, das von der ALU im Bedarfsfall gelesen und beeinflusst werden kann.
Überhaupt ist das Statusregister oft kein kompaktes Register wie die anderen, sondern es handelt sich um einzelne Bits, die auf dem Chip etwas verstreut liegen und nur gemeinsam adressiert werden.
|
BID = 771949
Bartholomew Inventar
Beiträge: 4681
|
Zitat :
chris24 hat am 22 Jun 2011 23:42 geschrieben :
|
Das F-Register gibt die Befehle an den RAM weiter.
Dort stehen einige Register, u.a. auch das Statusregister.
|
Nein, Die ALU holt sich den Befehl aus dem Programmspeicher (fetch), liest ein evtl. darin angegebenes Register ein (read), führt die eigentliche Arbeit aus (modify) und schreibt das Ergebnis evtl. zurück (write). Das gilt für die meisten Befehle, und deswegen braucht ein Befehlszyklus auch vier Quarztakte (manche auch acht, wie goto). Genaueres steht in den Datenblättern; ist viel zu lesen, lohnt sich bei Bedarf aber.
Zitat :
| Diese Frage verstehe ich wohl nicht. |
Hast sie trotzdem beantwortet, Danke
Ich wollte wissen, ob dieses Carry-Flipflop separat außerhalb des RAMs nahe der Alu liegt, und ob es im Status-Register innerhalb des RAMs noch mal gedoppelt ist.
Deiner Antwort entnehme ich, dass das RAM nicht kompakt und räumlich abgeschlossen auf dem Chip verortet ist (wovon ich fälschlicherweise ausging), sondern dass einzelne funktionale Bits durchaus auch außerhalb der übrigen Speicherzellen liegen (nahe der ALU beispielsweise, wie das Carry-Flipflop), und dennoch über eine normale RAM-Adresse Byteweise ausgelesen/manipuliert werden können.
Bin schlauer geworden
Gruß, Bartho
|
BID = 771966
chris24 Stammposter
Beiträge: 217
|
Ja, dass der RAM nicht selbst rechnen kann ist mir klar.
In ihm befinden sich teilweise die Register und der restliche Speicher, die ausgelesen werden können.
Danke.....
_________________
Gruß
Chris24
[ Diese Nachricht wurde geändert von: chris24 am 23 Jun 2011 7:24 ]
|