Rauschgenerator
-
Hey Leute...!
Ich bin im 6. Semester eines Physikstudiums und muss eine Aufgabe zum Thema Programmieren lösen! Die Vorlesung unseres Profs war eher schlecht und er ist auch nicht bereit uns auf Nachfrage irgendetwas erneut zu erklären... wobei es bei ihm auch nicht viel bringen würde...! Ich muss ehrlich gestehen, dass ich sehr wenig ahnung von programmieren habe! ich habe versucht zumindest die Grundlagen über Bücher, Internet und Foren zu erlangen, doch die Aufgabe übersteigt meine Kenntnisse deutlich.
Das Fach nennt sich Programmieren von Microprozessoren und wir arbeiten mit Visual Studio und dem Altium Designer.
Wir haben zu der Aufgabe zwar schonmal etwas in der Art gemacht... aber nur in Assembler...!
So wie ich es verstehe sollen wir es nun in C programmieren.
Nun ist das Forum hier meine letzte Hoffnung...!
Hier die gestellte Aufgabe...vielleicht hat ja jemand eine Ahnung...!
Aufgabenstellung:
Rauschgenerator:
Es ist ein PRBS - Signal (32 - stufiges Register) zu erzeugen
und die untersten 8 bit des Schieberegisters werden für die
Digital - Analog - Daten - Ausgabe genutzt.Ich würde mich sehr freuen wenn mir jemand helfen könnte...
-
Was hast du schon selbst gemacht? Wenn du eine konkrete Frage hast dann kannst du sie hier stellen, aber Hausaufgaben fertig lösen lassen wollen ist hier eher ungern gesehn.
-
Die entsprechenden Funktionen müssten dann schon in Assembler vorliegen, mit Standard-C hat das nichts zu tun!
-
Die Forensuch spuckt bei PRBS auch nur diesen Thread aus.
Aber ein PRBS kann (laut Wikipedia) durch ein Linear rückgekoppeltes Schieberegister (LFSR) gemacht werden kann.Und bei LFSR ist sogar die Forensuche erfolgreich.
Bitteschön: http://www.c-plusplus.net/forum/264427?highlight=lfsr
-
Ok danke schonmal für den anfang...! also ich habe die Hardware in Altium schon aufgebaut und ein programm in assemlber haben wir mal geschrieben... aber ob das nun dazu zu verwenden ist und ob es dann auch 32 - stufig ist habe ich keine ahnung...! zudem kommt dann noch dazu wie ich sowas mit dem PRBS - Signal kopple...!
wie ihr bestimmt merkt habe ich nicht soviel ahnung... aber ich wusste nun auch nicht wo ich mir sonst hilfe holen soll... will ja auch nicht das mir das einfach einer von euch fertig schreibt oder so einen quatsch, aber ich würde vielleicht ein paar denkanstöße bekommen... das dann noch zu verstehen, selbst wenn ich das fertige programm vor mir hätte wäre für mich bestimmt schon schwer...:/Hier ansonsten das was wir schon gemacht haben... nur was ich da noch ändern muss damit es zu der aufgabenstellung passt...keine ahnung
.define call 'bgezal $0,' .define ret 'jr $ra' ;Return ;************************************************************** ; TSK300 Special Function Registers - Coprocessor 0 [COP0] ;************************************************************** .define COP_Status '$0' ;SFR-$0: Control/Status (R/W) .define COP_IEnable '$1' ;SFR-$1: Interrupt Enable (R/W) .define COP_IPending '$2' ;SFR-$2: Interrupt Pending (R/W) .define COP_TBLO '$3' ;SFR-$3: Time Base Low (R) .define COP_TBHI '$4' ;SFR-$4: Time Base High (R) .define COP_PIT '$5' ;SFR-$5: Programmable Interval Timer Limit (R/W) .define COP_Debug '$6' ;SFR-$6: Debug Data .define COP_ER '$7' ;SFR-$7: Exception Retunr (R/W) .define COP_EB '$8' ;SFR-$8: Exception Base (R/W) .define IMode '$9' ;SFR-$9: Interrupt Event Mode (R/W) ;************************************************************** ; TSK300 Status Register Bit Functions - STATUS.x ;************************************************************** SRBF_InterruptEnable .equ 0x0001 SRBF_InterruptDisable .equ 0xFFFE SRBF_IntervalTimerReset .equ 0x0080 SRBF_IntervalTimerEnable .equ 0x0100 SRBF_VectorModeEnable .equ 0x0200 ;************************************************************** PRTIO .equ 0xFF000000 ;Basisadresse von PRTIO COUNTER .equ 0x1000 ;Speicheradresse von COUNTER STACK .equ 0x1F00 ;STACK-Anfangsadresse .GLOBAL _START .SECTION .text.abs., at(0x00000000) .ALIGN 4 .EXTERN reset_timer_interval _START: nop la $sp, STACK ;Stackpointer zeigt auf STACK la $a0, PRTIO ;Adressregister $a0 zeigt auf PRTIO la $a1, COUNTER ;Adressregister $a1 zeigt auf COUNTER li $v0, 0 ;Counter = 1 sw $vo, 0($a1) ;Save COUNTER call INIT ;Initialisiere MIPS3000 (Unterprogramm) LOOP: nop ;Endlosschleife j LOOP ;************************************************************** ; Initialisierung ;************************************************************** INIT: mfc0 $v1, COP_Status ;aktuellen Status einlesen (move from Coprozessor: Status->$v1) andi $v1, $v1, SRBF_InterruptDisable ;Disable Interrupts mtc0 $v1, COP_Status ;========================= (move to Coprozessor) li $v1, ISR ;ISR(Interrupt Service Routine) Adresse -> $v1 mtc0 $v1, COP_EB ;Exception Base -> ISR ;========================= li $v1, 0x00000001 ;Enable Interrupt 1 mtc0 $v1, COP_IEnable ;========================= mfc0 $v1, COP_Status ;aktueller Status einlesen qri $v1, $v1, SRBF_VectorModeEnable ;Set Vector Interrupts mtc0 $v1, COP_Status ;========================= li $v1, 50 * 1000 * 200 ;Set Timer Interval mtc0 $v1; COP_PIT ;========================= mfc0 $v1, COP_Status ;aktuellen Status einlesen ori $v1, $v1, SRBF_InterruptEnable ;Enable Interrupts mtc0 $v1, COP_Status ;========================= mfc0 $v1, COP_Status ;aktuellen Status einlesen ori $v1, $v1, SRBF_IntervalTimerEnable ;Enable Timer Interval mtc0 $v1, COP_Status ;========================= ret ;Return ;************************************************************** ; Interrupt-Service-Routine ;************************************************************** ISR: addiu $sp, $sp, -4 ;Rückkehradresse sw $ra, 0($sp) ;retten ($ra: Rückkehradressenregister) jal reset_timer_interval lw $v0, 0($a1) ;Load COUNTER sb $v0, 0($a0) ;COUNTER -> LEDs addi $v0, $v0, 1 ;COUNTER inkrementieren (COUNTER = COUNTER + 1) sw $v0, 0($a1) ;Save COUNTER lw $ra, 0($sp) ;Rückkehradresse wiederherstellen addiu $sp, $sp, 4 ;herstellen -> $ra (Stackpointer wieder auf den Anfang setzen) rfe ;Return from Exception ;************************************************************** .endsec .end
-
Sollt ihr folgende Info nutzen?
http://wiki.altium.com/display/ADOH/Introduction+to+C-to-Hardware+Compilation+Technology+in+Altium+DesignerWenn du deinen Quellcode, der nicht C oder C++ ist, einfach mit der Maus markierst und dann unter dem Editerfeld auf den [Code] - Button klickst sieht dein letzter Beitrag übersichtlicher aus.
Keine Ahnung was ein TSK 300 bei euch im Labor ist und ob du den Code nutzen kannst
MfG f.-th.
-
TSK 300 ist der Processor...!
Tja also wir benutzen genau das programm... aber in einem solchen plan hat er uns das nicht erklärt... eigentlich versteht man bei unsrem prof nur bahnhof und er denkt wir haben schon 10 jahre berufserfahrung im programmieren obwohl unsere kenntnisse gegen null gehen...!
mist!!!
-
http://www.mikrocontroller.net/topic/158086
( hier aufgeführt auch noch:
http://en.wikipedia.org/wiki/Linear_feedback_shift_register )
http://www.scheidig.de/Deutsch/Projekte/Rauschgenerator/PrbsGenerator.htm
http://www.doepfer.de/a117.htm
http://www.loetstelle.net/projekte/tiny13rng/tiny13rng.php
http://www.maxim-ic.com/app-notes/index.mvp/id/1743/CMP/WP-9
http://www.lrr.in.tum.de/~jasmin/index.html
http://www.armory.com/~rstevew/Public/Tutor/Debug/debug-manual.html
http://134.108.191.1/vorl/rt2/debug.pdf
http://www.proggen.org/doku.php?id=project:wordcount
http://de.wikibooks.org/wiki/Assembler_(80x86_Prozessor)-Programmierung:_Rechnen_mit_dem_Assembler
http://www.df.lth.se/~john_e/gems.html
http://www.tonmeister.de/symposium/2009/np_pdf/B21.pdfmöglicherweise helfen diese Links weiter. Programmierpraxis in 10min oder 21Tagen kann aber keiner wirklich bieten, da helfen eher Begeisterung, gute Texte, gute Bücher, Bibliotheken, Compiler, Debugger usw. und natürlich Arbeitseinsatz.
(man braucht noch das ein oder andere Buch, braucht aber etwas Zeit:
http://www.amazon.de/Programmieren-C-Reference-Manual-deutscher-Sprache/dp/3446154973/
http://www.amazon.de/Hacking-Die-Kunst-Exploits-mit/dp/3898645363/
und noch vielleicht sowas hier:
http://www.amazon.de/AVR-Mikrocontroller-programmieren-Selbstbauprojekte-ATtiny13-ATmega32/dp/3645650199/
http://www.netzmafia.de/skripten/hardware/index.html
http://mirror.lihnidos.org/GNU/savannah/pgubook/ProgrammingGroundUp-1-0-booksize.pdfGrundsätzlich ist so ein Rauschgeneratorgerät ziemlich praktisch für Physiker, oder?
-
Vielen dank... das ist doch schonmal was...!
einsatz ist ja sowieso im studium gefragt, aber ohne kenntnisse soetwas in einem semester programmieren zu können... ich weiss nicht ob das so ohne weiteres zu mahcen ist...! es kommen ja auch noch 6 - 7 andere Fächer dazu die etwas zeit in anspruch nehmen...!
aber jetzt habe ich ja erstmal ein paar sachen zu lesen...!
nochmals vielen dank...der sonntag ist gerettet...:D