Folgendes....ich habe nun ein VHDL Programm geschrieben, welches ich auf einen FPGA laden muss Testprint kaufen fällt mal weg.... Das ganze soll 2 mal sein (sender und empfänger seite) fpga wird wohl ein xilinx werden Wie kann ich den fpga programmieren Mit eeprom wird ja immer die information in den fpga geladen wie schaut das schaltungstechnisch aus mit (selber bauen ?!?) PC --> eeprom --> fpga ist ein eeprom leicht zu programmieren? mfg
@ Vhdler (Gast) >Folgendes....ich habe nun ein VHDL Programm geschrieben, welches ich auf >einen FPGA laden muss >Testprint kaufen fällt mal weg.... ??? >Das ganze soll 2 mal sein (sender und empfänger seite) >fpga wird wohl ein xilinx werden Wie schön. >Wie kann ich den fpga programmieren Das gibt es viele Möglichkeiten. - per Programmierkabel über den PC - mit einem kleinen Mikrocontroller - mit einem speziellen EEPROM - mit Standard EEPROM mit SPI >wie schaut das schaltungstechnisch aus mit (selber bauen ?!?) Datenblatt? >ist ein eeprom leicht zu programmieren? Alles relativ, wenn man gewisse Grundkenntnisse hat. MFg Falk
- per Programmierkabel über den PC --> man kann ja keinen fpga direkt programmieren? er muss ja bei jedem start (ein / aussschalten) neu programmiert werden oda? - mit einem kleinen Mikrocontroller --> und wie? - mit einem speziellen EEPROM --> und wie? - mit Standard EEPROM mit SPI --> und wie? Hab bisher vhdl und c++ erfahrung hab nach einem schaltplan gesucht...nix gefunden und wie muss ich da überhaupt den eeprom programmieren? hab da keinen plan was ich da eig machen muss :(
@ Vhdler (Gast) >- per Programmierkabel über den PC --> man kann ja keinen fpga direkt >programmieren? ??? Warum nicht? > er muss ja bei jedem start (ein / aussschalten) neu >programmiert werden oda? Ja eben! Das macht dann der PC per Kabel. >- mit einem kleinen Mikrocontroller --> und wie? Steht in den Datenblättern bzw. Application notes. ISt relativ einfach, mann muss nur den Datenstrom seriell reinschieben. >- mit einem speziellen EEPROM --> und wie? Datnblatt. Eifach anschliessen und es geht. >- mit Standard EEPROM mit SPI --> und wie? Dito. >Hab bisher vhdl und c++ erfahrung >und wie muss ich da überhaupt den eeprom programmieren? Die speziellen EEPROM von Xilinx werden in die JTAG Kette eingeklinkt und dann per Kabel über den PC programmiert. > hab da keinen >plan was ich da eig machen muss :( Datenblätter lesen. MFG Falk
ich muss den fpga einmal programmieren....danach hab ich keinen PC mehr zur verfügung....daher muss er sich die information über ein eeprom holen...:/ und datenblätter such ich...nur i weiß ja net mal welcher eeprom für welchen fpga geeignet ist...und wie man den eeprom programmen muss find ich auch nirgends
@ Vhdler (Gast) >ich muss den fpga einmal programmieren....danach hab ich keinen PC mehr >zur verfügung....daher muss er sich die information über ein eeprom >holen...:/ OK. >und datenblätter such ich...nur i weiß ja net mal welcher eeprom für >welchen fpga geeignet ist... Steht alles im Datenblatt. Unter Configuration. >und wie man den eeprom programmen muss find >ich auch nirgends Naja, das steht so direkt nicht im Datenblatt. MFG Falk
gibt es irgendwelche "standard" eeproms die geeignet sind für sowas? die man vl auch über farnell usw bekommt?
Es gibt neuere Familien, die haben dass EEPROM gleich mit eingebaut. Falls es denn eine aeltere Familie sein muss, gibt's die Konfigurationsbausetine an selben Ort wie das FPGA. Eine Demokit zu kaufen waere doch mal eine Idee, da ist dann moeglicherweise der Programmieradapter dabei.
neue familien...auch bei xilinx? demokit..naja...brauchs ja 2 mal..und so billig is das net :( such schon seit stunden nach diversen datenblättern usw... den XILINX XCS05XL gäbs zb für rund 22€...genaues DB dazu find ich nicht und welches EEPROM geeignet wäre...keine ahnung hab auch nahc fpgas mit integriertem eeprom gesucht --> seufz
http://www.atmel.com/dyn/resources/prod_documents/doc3301.pdf Configuring High-density FPGAs using Atmel’s Serial DataFlash® and an AVR® Microcontroller http://www.xilinx.com/bvdocs/appnotes/xapp445.pdf Configuring Spartan-3E FPGAs with SPI Flash Memories
@ Vhdler (Gast) >neue familien...auch bei xilinx? Aber sicher. Spartan 3 ist das Mittel der Wahl. Die N Typen haben den EEPROM auf dem Chip. >demokit..naja...brauchs ja 2 mal..und so billig is das net :( Denkst du, du kommst mit dem nachten IC billiger? IRRTUM! >such schon seit stunden nach diversen datenblättern usw... Naja, da mussten wir alle durch. >den XILINX XCS05XL gäbs zb für rund 22€...genaues DB dazu find ich Warum willst du einen sooo alten, teuren IC nutzen. Spartan 2, oder besser Spartan3 ist das Mittel der Wahl. Gibts günstig bei Reichelt. >nicht >und welches EEPROM geeignet wäre...keine ahnung >hab auch nahc fpgas mit integriertem eeprom gesucht --> seufz Spartan3N von Xilinx. Oder welche von Lattice. MFG Falk
Vhdler wrote: > Folgendes....ich habe nun ein VHDL Programm geschrieben, welches ich auf > einen FPGA laden muss > Das ganze soll 2 mal sein (sender und empfänger seite) Programm für ein FPGA? Kommunikation? Bist du sicher, dass ein FPGA für dein Vorhaben geeignet ist? Lass mal durchblicken, was du überhaupt machen willst. Die bisherige Diskussion lässt nicht auf umfangreiche Vorkenntnisse schliessen.
also...ein dmx signal kommt am eingang herein (seriell mit 250kHz) --> sende seite dieser fügt via hamming code redundantbits hinzu...--> paar leichte berechnungen --> ausgabe von fpga mit 500 Khz danach wird dieses Signal über eine funkstrecke am 2 fpga eingelesen (eingang 500kHz) er macht fehlererkennung usw...und anschließend schickt er das signal ohne redundanz wieder mit 250 Khz weiter
@ Vhdler (Gast) >also...ein dmx signal kommt am eingang herein (seriell mit 250kHz) --> Nöö, 250 kbit/s. Das ist was anderes. >berechnungen --> ausgabe von fpga mit 500 Khz 500 kbits/s. >danach wird dieses Signal über eine funkstrecke am 2 fpga eingelesen >(eingang 500kHz) er macht fehlererkennung usw...und anschließend schickt >er das signal ohne redundanz wieder mit 250 Khz weiter Kann man mit einem FPGA machen, ist aber eher Overkill. Ein kleiner Mikrocontroller mit zwei UARTS kann das auch. MFg Falk
welchen µC würdest du uns da empfehlen? Atmel wäre nice,...den könnten wir auch programmieren.... Programmsprache sollte C sein :D Nunja...probleme die ich da sehe...die geschwindigkeit Man muss: -) Seriell einlesen (250kb/s) -) dieses parallel umwandeln (vl mit schieberegister) -) berechnungen -) parallel auf seriel umwandeln -) Seriell ausgeben (500kb/s) Probleme die ich da sehe...zeit das alles muss ja recht zeitgleich sein während er einlest...muss gerade ein anderes Byte berechnet und wieder ein anderes Byte gesendet werden.
aja...es sind 8 datenbits und 2 start und 1 stop außerdem ist das signal NICHT synchron...es kann oft sekundenlang NICHTS daherkommen...dann wieder viel... und startcondition(welche alle paar sekunden ausgelöst wird) besteht aus 22 - 0 Bits... weiß nicht ob seriele das kann oder da beschränkt ist
Reichelt hat derzeit drei Configuration EEPROM im Programm, AT 17LV256-10 PU 9,90 € (256kBit) AT 17LV256-10 JU 10,50 € (256kBit) AT 17LV010-10 PU 18,15 € (1MBit) und das reicht noch nicht aus für das größte FPGA im Katalog, das braucht 2MBit. Die Lösung mit normalem SPI-Flash und entweder Spartan3E oder mit Mikrocontroller ist billiger.
Spartan3E hat der nun nen internen speicher? versteh das irgendwie net ganz spartan3E ist doch eine FPGA reihe..OHNE internen speicher also braucht man wieder eeprom? wieso braucht man hier weniger eeprom speicher?!? und wegen µC...kann die serielle 500 kHz und 250 kHz Oo mfg
Spartan3 ist eine Familie. Spartan3E ist ein Mitglied der Familie ohne nichtflüchtigen Speicher. Spartan3AN (<-WICHTIG AN) ist mit nichtflüchtigem Speicher ausgestattet. Wie Falk schon sagte und wie es auch riesengroß auf der xilinx seite steht.
spartan3E ?? ohne nichtflüchtigen speicher?!? also wäre AN empfehlenswerts ? da brauch ich also KEIN eeprom mehr...er macht das alles von alleine? brauch ich nur das kabel vom PC zum fpga richtig? mfg
Vhdler wrote: > Nunja...probleme die ich da sehe...die geschwindigkeit > Man muss: > -) Seriell einlesen (250kb/s) > -) dieses parallel umwandeln (vl mit schieberegister) > -) berechnungen > -) parallel auf seriel umwandeln > -) Seriell ausgeben (500kb/s) > > Probleme die ich da sehe...zeit Bei 500 kbps und 8Bit Datenworten sind das 62500 Datenworte pro Sekunde die in den USART reingeschrieben resp. rausgelesen werden müssen. Pro Datenwort hast du also 16us Zeit. Bei einer Taktfrequenz am Controller von sagen wir mal 10MHz ergibt das 160 Instruktionen, die du zwischen zwei Datenworten abarbeiten kannst. Das ist schon gar nicht sooo wenig (1 Instruktion pro Takt vorausgesetzt) Wo genau ist das Zeitproblem?
Aber ich muss alles gleichzeitig machen senden, rechnen und empfangen zudem sind 160 assembler befehle in wirklichkeit nicht recht viel
Das Senden und Empfangen macht ja hoffentlich der USART für dich in den dafür vorgesehenen Interrupt Routinen. Da hast du immer noch einige Instruktionen fürs Rechnen. die Datenmenge mit ein bisschen Hammingcode aufblasen wird wohl nicht so rechenintensiv sein. Zudem hast du beim Senden dann immer gleich zwei Bytes aufbereitet pro empfangenes Datenbyte.
@ Vhdler (Gast) >Aber ich muss alles gleichzeitig machen >senden, rechnen und empfangen Nöö. UART1 empfängt die Daten die CPU rechnet um UART2 sendet die Daten Alles parallel. Arbeitsteilung. >zudem sind 160 assembler befehle in wirklichkeit nicht recht viel Doch, doch. Wenn der Compiler was taugt, kann man das recht problem los in C machen. MFG Falk
@ Vhdler (Gast) Ach ja. Wenn es nur darum geht, könnte man auch einen grösseren CPLD nehmen, dann braucht man keinen EPROm wie fürs FPGA. Ein XC9572XL könnte reichen. MFG Falk
Stimmt, Falk, gearbeitet wird parallel. In den IRQ-Routinen wird nur der "Service" durchgeführt. Danke für die Präzisierung. Ich sehe, du bist auch der Meinung, dem Kollegen vom FPGA abzuraten ;-)
nungut cpld vs µC der vorgeschlagene cpld...braucht KEINEN eeprom? also brauch ich nur per kabel EINMAL die vhdl daten reinspielen und die bleiben automatisch gespeichert? es steht im DB bei dem: 72 macrocells with 1600 useable gates wie darf man das verstehen? für das sipo / posi ,speichern und berechnen zudem brauch ich auch einige gates nur um den takt richtig zu synchronisieren usw... brauch ich ja doch noch einige gates.. Oder sipo und posi dann mit schieberegister....oder geht sich das eh im cpld aus? sonst ginge ja gleich fpga Oo auf der anderen seite...welcher µC wäre geeignet
Vhdler wrote: > auf der anderen seite...welcher µC wäre geeignet irgend einer mit zwei USART. http://www.atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=1262&Direction=DESC# Mit USART hast du nämlich auch den Stress mit der Takt-Rückgewinnung gleich mit erledigt.
@ Vhdler (Gast) >der vorgeschlagene cpld...braucht KEINEN eeprom? also brauch ich nur per >kabel EINMAL die vhdl daten reinspielen und die bleiben automatisch >gespeichert? Ja. >es steht im DB bei dem: 72 macrocells with 1600 useable gates >wie darf man das verstehen? 72 FlipFlops plus 72 recht grosse Logikdekoder. > für das sipo / posi ,speichern und berechnen >zudem brauch ich auch einige gates nur um den takt richtig zu >synchronisieren usw... Ja, man muss einen kompletten UART nachbilden. Ist aber halb so wild. >Oder sipo und posi dann mit schieberegister Ja. >....oder geht sich das eh im >cpld aus? sonst ginge ja gleich fpga Oo FPGA ist dafür Hundertfach zu gross. MfG Falk
Hat der clpd einen internen Clock? wenn ja wie schnell? 72 FlipFlops sind doch etwas wenig....muss ja doch zwischenspeichern, bits hinzufügen usw...wird sich net ausgehen denk ich : / gibt es vl eine größere Cpld mit mehr flipflops? wenn ich sipo und posi extern mach...kann ich dafür den takt vom cpld nach außen führen? habe mit hardware sipo / posi wenig erfahrung :(
Bei einem CPLD/FPGA berechnest Du dann ja die bits nicht, sonder erzeugst die kombinatorisch aus den entsprechenden Bitgruppen. Brauchst Du also eine Eingabe SIPO-Register mit einem Zähler für die Bits und wenn alle 8 Bit 'drin' sind übernimmst Du diese Bits plus der generierten Hammingbits in das Ausgabe PISO Register. Den Takt synchronisierst Du anhand der Flanke des Startbits ... den 'internen Takt' musst Du natürlich von aussen anlegen.
@ Vhdler (Gast) >Hat der clpd einen internen Clock? wenn ja wie schnell? Nein. UNd für DMX brauchst du sowieso einen Qaurz oder Keramikresonator. Siehe http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART#Senden >72 FlipFlops sind doch etwas wenig....muss ja doch zwischenspeichern, >bits hinzufügen usw...wird sich net ausgehen denk ich : / Kann man im Moment schwer sagen muss man mal probieren. >gibt es vl eine größere Cpld mit mehr flipflops? Sicher, 128/144/256/385/512 Den XC95144XL gibts für 9,70 bei Reichelt. >wenn ich sipo und posi extern mach...kann ich dafür den takt vom cpld >nach außen führen? habe mit hardware sipo / posi wenig erfahrung :( Lass den Unsinn. Wenn schon CPLD/FPGA, dann als Einchiplösung. Sonst kannst du gleich ein TTL-Grab schaufeln. MFG Falk
heist das nun ich komm mit den FF die er hat aus? würde gern das sipo und posi integriert haben...also im cpld hat der cpld keinen internen takt wie der pfga? wie erzeug ich einen synchronen takt? wegen schieberegister...es kommt nicht immer 8 bit rein + start / stopbits kann auch manchmal anders kommen dmx signal ist hier zu finden : http://www.soundlight.de/techtips/dmx512/dmx512.htm einfach bissi runterscrollen :D Ich versuch mich seit 7:50 zu entscheiden...aber ich seh überall nur mehr schwarz :( CPLD mit integriertem eeprom und viel FF gibts ja nicht oder? :( ich will nicht einen kaufen...und dann draufkommen...OH geht sich doch net aus das kostet geld...ABER vor ALLEM zeit..die ich net habe kann auch das programm nicht fertig schreiben,...weil es doch aufwendig is und wenn ich dann doch anders entscheide...zu viel zeit weg daher sollt ich mich jetzt entscheiden WAS ich nehme : /
Ich habe ja schon geschrieben, dass ich das mit uC machen würde - auch aufgrund deiner Vorkenntnisse. Aber entscheiden musst du selbst (und Datenblätter lesen).
@ Vhdler (Gast) >heist das nun ich komm mit den FF die er hat aus? Kann man im Moment nicht genau sagen. Schreib das VHDL dazu, simuliers. Wenn es dann so löuft wie du willst schau in den Fitter Report. Dann kannst du dich für das eine oder andere CPLD entscheiden. >würde gern das sipo und posi integriert haben...also im cpld >hat der cpld keinen internen takt wie der pfga? FPGAs haben auch keinen inmterenen Takt. Und alle interenen Taktgber sind nur mehr oder weniger "gute" RC-Oszillatoren, die hierfür zu ungenu sind. >wie erzeug ich einen synchronen takt? Nimm nem Quarzoszillator. Kostet wenig ud ist Plug&Play. >wegen schieberegister...es kommt nicht immer 8 bit rein + start / >stopbits Doch, doch, sooo komplex ist das bei weitem nicht. >Ich versuch mich seit 7:50 zu entscheiden...aber ich seh überall nur >mehr schwarz :( Logisch, dir fehlt das Hintergrundwissen. Hast du überhaupts Kentnisse über DIgitaltechnik, von VHDL mal ganz zu schweigen? Willst du dich dort einarbeiten? >CPLD mit integriertem eeprom und viel FF gibts ja nicht oder? Doch, bis 512 Makrozellen. Brauchst du aber bei Weitem nicht. >ich will nicht einen kaufen...und dann draufkommen...OH geht sich doch >net aus Erst programmieren/simulieren, dann Hardware entwerfen/ICs kaufen. >das kostet geld...ABER vor ALLEM zeit..die ich net habe >kann auch das programm nicht fertig schreiben,...weil es doch aufwendig >is und wenn ich dann doch anders entscheide...zu viel zeit weg "Wenn du es eilig hast, gehe langsam". >daher sollt ich mich jetzt entscheiden WAS ich nehme : / CPLD oder uC. Kein FPGA. MFG Falk
"Wenn du es eilig hast, gehe langsam".... Das ist eine Diplomarbeit...is net so dass ich ungeduldig bin... aber irgendwann is schlussstrich also back to topic der XC 95144XL TQ100 hat: PLD-cells: 144 --> also 144 gatter reicht das für sipo + posi + berechnungen und synchronisation? Er hat einen internen eeprom ... also brauch ich KEINEN externen? brauch ich da nur ein kabel von pc zum clpd und er SPEICHERT automatisch?!? also einmal programmieren und dann nie wieder? muss ich NUR den vhdl code reinladen? gibts sonst noch was wichtiges zu wissen?
@ Vhdler (Gast) >>"Wenn du es eilig hast, gehe langsam".... >Das ist eine Diplomarbeit...is net so dass ich ungeduldig bin... >aber irgendwann is schlussstrich Das ändert nichts. >also back to topic >der XC 95144XL TQ100 hat: >PLD-cells: 144 --> also 144 gatter Nöö, 144 Makrozellen, das ist WESENTLICH mehr als 144 Gatter. > reicht das für sipo + posi + >berechnungen und synchronisation? Zu 99,999%. UART passt auf jeden Fall rein, wenn deine Hammingberechung nicht exorbitant ist, sollte es reinpassen. >Er hat einen internen eeprom ... also brauch ich KEINEN externen? Zum 1001.ten mal: JA! > brauch ich da nur ein kabel von pc zum clpd und er SPEICHERT automatisch?!? JA. http://www.geocities.com/jacquesmartini/digital/schematic/Parallel_Cable_III.png >also einmal programmieren und dann nie wieder? Ja. > muss ich NUR den vhdl code reinladen? ;-) VHDL wird dort nicht reingeladen. Die Software für den IC (Webpack von Xilinx) compiliert aus deinem VHDL eine Binärdatei, die dann in den CPLD geladen wird. >gibts sonst noch was wichtiges zu wissen? Jain. Der Teufel steckt im Detail. MFG Falk
@Falk & Martin: Ich bewundere Eure Geduld. @Vhdler: Ich kann den genauen technischen Hintergrund nicht einschätzen, aber es wurden hier mehrfach Hinweise auf mögliche Lösungen gegeben. Wenn Du diese dann immer wieder in Frage stellst wirst Du in 2 Wochen noch keine Lösung haben. Wenn Du ein VHDL-Programm geschrieben hast (siehe 1. Beitrag) frage ich mich warum es so ein Problem ist festzustellen ob es in einen CPLD passt. Nimm Xilinx-Webpack, stelle einen verfügbaren CPLD als Ziel ein und synthetisiere das Design. Am Ende sagt Dir die Software ob es passt oder nicht. Allerdings habe ich nicht den Eindruck das Du in Sachen programmierbarer Logik wirklich fit bist. Also ist ein uC warscheinlich die bessere Wahl, allein aus dem Grund weil Du damit möglicherweise besser zurechtkommst. Wenn Du denkst das ein AVR zu langsam ist, kaufe Dir hier im Shop 2 Boards mit ARM-Controllern drauf. Die sind noch eine Ecke schneller. Jens
@ Vhdler (Gast) >wie ich grad sehe....alle µC's mit 2 USART werden mit AVR programmiert >:( >gibts keine mit µC? >*edit gibt keine die in C programmiert werden Ohhhh Mann!! Und du bist sicher, dass du mit der Aufgabe nicht prinzipiell überfordert bist? Ich nicht! Ein AVR ist eine Prozessorfamilie, so wie PIC, 16x, PowerPC etc. Die kann man mit Assembler, C und weissderteufelnochalles programmieren. AVR-GCC-Tutorial MFG Falk
@ Jens (Gast) >Ich bewundere Eure Geduld. OMMMMMMMMM ;-) >Wenn Du ein VHDL-Programm geschrieben hast (siehe 1. Beitrag) >frage ich mich warum es so ein Problem ist festzustellen ob es >in einen CPLD passt. Stimmt, hab ich ganz vergessen. Die Argumentation des OP ist schon recht, ähhhh, unlogisch. >das ein AVR zu langsam ist, kaufe Dir hier im Shop 2 Boards mit >ARM-Controllern drauf. Die sind noch eine Ecke schneller. Aber mit soviel Hartholz vorm Kopp ist wahrscheinlich auch ein Quadcore P4 zu langsam ;-) SCNR Falk
Falk Brunner wrote: >>Wenn Du ein VHDL-Programm geschrieben hast (siehe 1. Beitrag) >>frage ich mich warum es so ein Problem ist festzustellen ob es >>in einen CPLD passt. Genau. Poste doch mal dein "VHDL Programm". Dann sehen wir weiter. (ich wette es enthält wait statements ;-) )
Hey leute :D Also im auge habe ich diesen hier: XC 95144XL Ich werde mich übers wochenende nochmal gscheit reinhaun...weil ich einfach grad absoluter anfänger bin... Ich bedanke mich mal für alles...hat echt sehr geholfen Melde mich dann wieder...wenn i mich bissi mehr auskenn und noch fragen hab bzw so net weiter weiß :D Aber ich denke ich werds mit cpld machen Ich habe 4 jahre mit c++ und µC herumgespielt...will nun mal was neues lernen weil ich eine synthetisierungssprache wie vhdl einfach sehr interessant finde Softwaremäßig habe ich mich schon etwas eingeübt nur...wie das ganze hardware mäßig aufgebaut ist...da happerts einfach total und ich kann mir da einfach noch keine vorstellungen machen also danke jedenfalls und ich denke (hoffe) man liest sich noch :D mfg
Morgen :D Naja zur zeit besteht das programm nur aus SIPO und POSI und...der etwaskläglichen startbedingung Der part der berechnung fehlt noch total programm trotzdem posten? PS...nein ich hab keine "wait" kommandos im programm...nur bei der simulation datei um eingangssignale zu erstellen... Tendiere grad zwischen XC 95144XL und AVR :D Qual der wahl...
Tach.... Hab mal eine Zwischenfrage Hab mich mal genauer über die RS232 erkundigt Wenn ich einen µC oder AVR verwende, würde ich ja die RS232 (serielle) benutzen ich muss 500kbit/s übertragen... Das maximum der RS232 finde ich jedoch bei 460.800 kbit/s (Die µC die wir verwenden schaffen zb bestenfalls 19.200 kbit/s) Was überseh ich da? Nächstes problem...mit steigender Baudrate, sinkt die Leitungslänge die man verwenden darf: zb bei 115.200 kbit/s nur mehr <2 m Ich benutze zwar keine direkte Leitung, sondern benutze Funk...was nicht besser sein dürfte mfg
Vhdler wrote: > Tach.... Hab mal eine Zwischenfrage > Hab mich mal genauer über die RS232 erkundigt > Wenn ich einen µC oder AVR verwende, würde ich ja die RS232 (serielle) > benutzen > ich muss 500kbit/s übertragen... > Das maximum der RS232 finde ich jedoch bei 460.800 kbit/s die offiziell maximal angegebene Frequenz wird evtl. so sein, ja. Das hindert dich aber nicht daran, mit einer eigenen Frequenz zu kommunizieren, da du ja Sende- und Empfangsstelle selbst programmierst und nicht mit Drittgeräten arbeitest. Du kannst auch mit 382956bps arbeiten, wenn es dich freut. > (Die µC die wir verwenden schaffen zb bestenfalls 19.200 kbit/s) und welche sind das? Aus alten Sowjet-Beständen? > > Was überseh ich da? Das Datenblatt? > > Nächstes problem...mit steigender Baudrate, sinkt die Leitungslänge die > man verwenden darf: > zb bei 115.200 kbit/s nur mehr <2 m Kommt auf die Übertragungsart drauf an. Ethernet geht z.B. einiges höher. > Ich benutze zwar keine direkte Leitung, sondern benutze Funk...was nicht > besser sein dürfte Ich dachte, die Funkstrecke besteht bereits? > > mfg auch Gruss!
Nunja...Sender und Empfänger arbeiten schon... Funkübertragung dürfte ja eig kein problem sein, beschränkte Leitunglänge entsteht denk ich mal nur daraus, dass bei Kabel Reflexionen entstehen Bisher habe ich leider noch nichts gefunden bezüglicher der maximalen Bitrate, auch wenn ich es von selbst wählen kann, werd ich irgendwann das Maximum erreichen...und ich weiß nicht wie das zb dann bei einem 20 MHz geteilt wird.... Bezüglich CPLD Ich muss ja die UART programmieren, wäre das mit einer PLL nicht einfacher (falls das den funktioniert)? Nur gibt es nicht viele CPLDs mit einer integrierten PLL, bzw kann ich die im CPLD synthetisieren? Ansonsten muss ich die UART wohl anders programmieren, obwohl ich da noch nicht recht weiß wie, aber hab scho paar (dumme) ideen :D Ich benätige ja 2 CPLDs (sende und Empfänger seite) Kann ich dafür einen "Programmer Print" bauen, wo ich die CPLDs in einen art sockel stecke -> programmiere -> aus den "programmer print" gebe -> und in die eigentliche schaltung einbaue Vorteile davon: Ich brauch den Programmer Teil nur einmal bauen, brauch bei der eigentlichen schaltung weniger platz Ich tendiere eigentlich zur zeit eher richtung CPLD, wobei mir die UART und die Programmer Sorgen bereitet mfg :D
> Kann ich dafür einen "Programmer Print" bauen, wo ich die CPLDs in einen > art sockel stecke -> programmiere -> aus den "programmer print" gebe -> > und in die eigentliche schaltung einbaue > Vorteile davon: Ich brauch den Programmer Teil nur einmal bauen, brauch > bei der eigentlichen schaltung weniger platz Wenn du den JTAG Anschluss auf dem Target Board korrekt einplanst, lassen sich die CPLDs In-Circuit programmieren. Das ist einfacher, als bereits programmierte Bausteine einzulöten, die obendrein noch verwechselt werden können.
So...werde nun einen CPLD nehmen Vorzugsweise: A300-XC95144XL (weil er doch noch mehr gatter hat) Jedoch finde ich den nur bei deutschen Firmen (bin Österreicher) In österreich wäre der erhältlich: XC9572XL Die abgespeckte Version, unsere Lehrkraft meinte dass wir wohl mindestens 100 Gates brauchen werden...damit würde der XC9572XL flachfallen Würd mir ja gern mal das Webpack von xilinx downloaden um mal zu testen wie viel mein DERZEITIGES (daher noch lange nicht vollendetes) programm in etwa braucht. Jedoch hab ich erst ab Dezember eine Flatrate..und 1,3 GB würden mir zur zeit das Knack brechen :( Ich kann momentan nicht einschätzen wie viel gates ich brauche, weil ich da noch keine erfahrung besitze, aber wie gesagt laut lehrkraft mindestens 100 .. und da wirds ja dann wohl sogar mit dem XC95144XL knapp Kleine Nebenfrage, gibts irgendwo Sockel für diese CPLD baugruppe zu kaufen?
@ Vhdler (Gast) >Die abgespeckte Version, unsere Lehrkraft meinte dass wir wohl >mindestens 100 Gates brauchen werden...damit würde der XC9572XL >flachfallen Jaja, die Leerkraft. Die Angabe 100 Gate ist so ziemlich nichtssagend. Wenn gleich sie indirekt Recht hat, der 72er könnte knapp werden. Aber das hatten wir doch schon dreimal. Entwirf erst das VHDL, simulier alles, und DANN erst wird der CPLD ausgewählt. >Würd mir ja gern mal das Webpack von xilinx downloaden um mal zu testen >wie viel mein DERZEITIGES (daher noch lange nicht vollendetes) programm >in etwa braucht. Jedoch hab ich erst ab Dezember eine Flatrate..und 1,3 >GB würden mir zur zeit das Knack brechen :( Nimm die Version 6.3 + Service Pack 3, das reicht LOCKER und hat weniger Macken. Sind AFAIK 200 + 230 MB. >Ich kann momentan nicht einschätzen wie viel gates ich brauche, weil ich >da noch keine erfahrung besitze, aber wie gesagt laut lehrkraft >mindestens 100 .. und da wirds ja dann wohl sogar mit dem XC95144XL >knapp Käse. >Kleine Nebenfrage, gibts irgendwo Sockel für diese CPLD baugruppe zu >kaufen? Die 72er gibt es als VQ44, dazu govt es Sockel. Die 144 gibt es nur in QFP Gehäuse, Sockel dafür sind teuer und meist sinnlos. MFG Falk
Werde schaun das ich bald das programm weiterschreibe Folgendes hab ich mir wegen der UART überlegt: Ich benutze einen 12 MHz Quarz --> 12 MHz Clock Zu begin taste ich mit 12 MHz ab (sagen wir eingang = 1)-> dabei zähle ich die anzahl der Clock flanken Ist der eingang 0 und gleichzeitig habe ich eine Clock flanke --> stoppe ich das zählen der Clock Flanken Ich kann mir somit einen EIGENEN Takt generieren, der die gleiche frequenz wie das DMX Signal hat (eh klar) und das KURZ danach einen Clock erzeugt mit dem ich abtasten kann Die Verzögerung zwischen DMX signal und abtast takt liegt dabei bei < 83ns (worst case)....also KAUM verzögerung Seh eigentlich keinen Fehler und sollte funktionieren ?!? Ich hoffe ich habe das halbigs so erklärt damit man weiß was ich meine Das ganze würde ich in einer eigenen Entity anlegen...oder? Habe vor folgende Entitys zu entwickeln: Eingang (SIPO) Takt Berechnungen Ausgang (POSI) Gut so? Also den XC 95144XL kann ich nicht kaufen :( In Österreich gibt es ihn nicht (außer in einem sehr teuren laden...40€ Oo) und von Deutschland kann ich nicht...verlangen alle mindestens 150€ einkaufspreis damit sie etwas ins ausland schicken.... Was mich richtung XC 9572 verweist....wo eben nicht sicher ist ob er ausreicht : /....Will auch nicht unbedingt dann die schieberegister extern aufbaun,...weil wenn ich schon CPLD benutze, dann ohne Geht sichs also mit dem CPLD nicht aus muss ich wohl doch auf einen FPGA zurückgreifen.... Nehme mal an FPGA wird gleich programmiert wie CPLD, also JTAG usw... Sind denn FPGA's mit internen EEPROM sehr teuer?
@ Vhdler (Gast) >Zu begin taste ich mit 12 MHz ab (sagen wir eingang = 1)-> dabei zähle >ich die anzahl der Clock flanken >Ist der eingang 0 und gleichzeitig habe ich eine Clock flanke --> stoppe >ich das zählen der Clock Flanken >Ich kann mir somit einen EIGENEN Takt generieren, der die gleiche >frequenz wie das DMX Signal hat (eh klar) und das KURZ danach einen >Clock erzeugt mit dem ich abtasten kann Naja, so in die Richtung. Such mal im Internet nach UART VHDL, da wirst du viel finden. Das hier erklärt auch ganz gut den UART. http://www.xilinx.com/support/documentation/application_notes/xapp341.pdf >Die Verzögerung zwischen DMX signal und abtast takt liegt dabei bei < >83ns (worst case)....also KAUM verzögerung Spielt beim UART keine Rolle. >Seh eigentlich keinen Fehler und sollte funktionieren ?!? Mehr oder weniger. Nur weil du keine Fehler siehst, heisst das ncoh lange nicht, dass keine da sind. ;-) >Das ganze würde ich in einer eigenen Entity anlegen...oder? >Habe vor folgende Entitys zu entwickeln: >Eingang (SIPO) >Takt >Berechnungen >Ausgang (POSI) Kann man machen, muss aber nicht. Ich würde die Aufteilung so machen Empfänger mit SIPO + Steuerung Berechnung Ausgabe mit PISO >Was mich richtung XC 9572 verweist....wo eben nicht sicher ist ob er >ausreicht Kann du es nicht verstehen oder willst du nicht? > : /....Will auch nicht unbedingt dann die schieberegister >extern aufbaun, Unsinn. >Geht sichs also mit dem CPLD nicht aus muss ich wohl doch auf einen FPGA >zurückgreifen.... Genauso Usinn. >Nehme mal an FPGA wird gleich programmiert wie CPLD, also JTAG usw... >Sind denn FPGA's mit internen EEPROM sehr teuer? Nein, aber die muss man auch erstmal irgendwo kaufen können (als Bastler). MFG Falk
@Vhdler: Sorry, aber liest Du eigentlich die Antworten auf Deine Fragen und machst Dir Gedanken darüber? Oder siehst Du das Forum mehr als Medium für Selbstgespräche? Es kommt mir so vor als ob Du, selbst wenn Dir jemand eine komplette Lösung für dein Problem präsentieren würde, weiterhin mehr oder weniger wirre Fragen stellen würdest. Mal abgesehen davon, das nach wie vor viele Details Deiner Aufgabenstellung im Dunkeln liegen und nur ganz langsam sichtbar werden. Jens
@ JENs Könnte so wirken ja.....bin leider immer etwas skeptisch und hierbei geht es um relativ viel..... Werd mich jetzt mal ans Programm haun...es testen...und dann weiterschaun Mal ne Frage am Rande... Als student ist es scheinbar viel leichter an Bauteile zu kommen als als hobby bastler ....obwohl auch studenten wohl eher nur einzelstücke kaufen und das selbe zahlen...why?
frage...was ist der unterschied zwischen: 3 entitys oder 1 entity das 3 verschiedene prozesse beinhaltet?
Ich bekomme bei mehreren Variablen folgende Fehlermeldung: line 40: Signal start_condition cannot be synthesized, bad synchronous description. Hab schon im internet gesucht was der fehler heist,...wohl irgendwas mit takt :D Wie genau umgehe ich diesen Error bzw wie kommt er zustande? mfg
@ Vhdler (Gast) >line 40: Signal start_condition cannot be synthesized, bad synchronous >description. Poste kompletten VHDL Code. MFg Falk
Ich glaube ich habs..viele ... CLK'event Wäre ein guter Aufbau folgender: process begin if clk'event then if A if B if C if D if E usw.... end if; end process Weil zur zeit hab ich die events sehr vermischt...hab auch events in events ... das wohl der fehler Oo
@ Vhdler (Gast) >Ich glaube ich habs..viele ... CLK'event Ist ja prinzipiell nicht schlimm. >Wäre ein guter Aufbau folgender:
1 | process
|
2 | begin
|
3 | if clk'event then |
Schlecht, weil welche Flanke soll das sein? Steigende oder fallende? Und NEIN, man kann NICHT auf beide gleichzeitig reagieren. Machs am besten immer so, ist einfacher und lesbarer
1 | if rising_edge(clk) then --steigende Flanke |
2 | if falling_edge(clk) then --fallende Flanke |
>Weil zur zeit hab ich die events sehr vermischt...hab auch events in >events ... das wohl der fehler Oo In der Tat. MFG Falk
Hallo....ich versuch schon längere zeit das programm zu synthetisieren...aber mich überschlägts mit fehlern ala synchron hab jetzt keine events in events mehr usw...weiß au nimma weiter...daher hier das programm...vl kann wer helfen und programm ist noch net fertig...hat noch inhaltliche fehler...aber will mal die synchron fehler weghaben mfg library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity eingang is PORT ( e0 : IN std_logic; clk : IN std_logic; -- Annahme: Clock = 4µs ausgang : OUT std_logic; parallel : OUT std_logic_vector(7 downto 0); clk_out_so : OUT std_logic ); end entity eingang; architecture schieberegister of eingang is shared variable zaehler0 : INTEGER := 0; --3 bit shared variable start0 : std_logic := '0'; shared variable start_condition : std_logic := '0'; shared variable data_condition : std_logic := '0'; shared variable anzahl : INTEGER := 0; shared variable anzahl1 : INTEGER := 0; shared variable anzahl2 : INTEGER := 0; shared variable anzahl3 : INTEGER := 0; shared variable start_aus : std_logic := '0'; shared variable a0 : std_logic_vector(7 downto 0); shared variable start_condition_out : std_logic; shared variable x512 : std_logic := '1'; shared variable zaehler1 : INTEGER := 0; shared variable start1 : std_logic := '0'; shared variable uart_anfang : std_logic; signal clk_out : std_logic; shared variable uart_reset : std_logic := '0'; begin process(clk) begin ------------------------------ Start-Condition Anfang if (e0 = '0' and start_condition = '0' and x512 = '1') then if(uart_reset = '0') then uart_anfang := '1'; uart_reset := '1'; end if; start0 := '1'; if(clk'event and clk = '0') then anzahl := anzahl + 1; end if; if(anzahl > 21) then start_condition := '1'; x512 := '0'; end if; end if; ------------------------------ Start-Condition Ende if (clk'event and clk = '0' and start_condition = '1') then --------------- ACHTUNG !!!! Hier kommt 8µs ein High und dann 4µs ein Low---> dann 8 daten bits if(data_condition = '0') then ----------------- if(clk_out = '1' and e0 = '1') then uart_reset := '0'; anzahl1 := anzahl1 + 1; end if; if(clk_out = '1' and e0 = '0' and anzahl1 > 1) then anzahl2 := anzahl2 + 1; end if; ----------------- if(anzahl2 = 2) then data_condition := '1'; end if; end if; if(clk_out = '1' and data_condition = '1') then a0(zaehler0) := e0; if(zaehler0 < 8) then zaehler0 := zaehler0 + 1; end if; else if(zaehler0 >7) then zaehler0 := 0; data_condition := '0'; -- start_condition := '0'; start_condition_out := '1'; anzahl := 0; anzahl1 := 0; anzahl2 := 0; end if; parallel <= a0; end if; start_aus := '1'; end if; if(start_aus = '1') then if(clk'event and clk = '1' and clk_out = '1') then anzahl3 := anzahl3 + 1; end if; if(anzahl3 = 9) then start_condition_out := '0'; anzahl3 := 0; start_aus := '0'; end if; end if; end process ; process(clk) ---------------------- Ausgang --------------- begin if (clk'event and clk_out = '1' and start_condition_out = '1') then if(zaehler1 < 8) then ausgang<= a0(zaehler1); zaehler1 := zaehler1 + 1; else zaehler1 := 0; start1 := '1'; end if; end if; end process; process (clk) --------------------------- UART variable uart_start: std_logic; variable x : INTEGER := 0; variable anzahl_uart : std_logic_vector(6 downto 0) := "0000000"; variable uart_ablauf : std_logic; begin if(uart_anfang = '1') then uart_start := '1'; x := 0; uart_anfang := '0'; uart_ablauf := '0'; end if; if (uart_start = '1' and rising_edge(clk)) then x := x+1; end if; if(uart_start = '1') then case x is when 0 => clk_out <= '0'; when 1 => clk_out <= '0'; when 2 => clk_out <= '1'; when 3 => clk_out <= '1'; when 4 => clk_out <= '0'; uart_ablauf := '1'; when OTHERS => clk_out <= '0'; uart_ablauf := '1'; end case; end if; if(uart_start = '1' and uart_ablauf = '1') then if rising_edge(clk) then anzahl_uart := anzahl_uart + 1; end if; if (anzahl_uart = "1010000") then clk_out <= '1'; anzahl_uart := "0000000"; end if; -- kommt net her if (anzahl_uart > "0000000" and anzahl_uart < "1010000") then clk_out <= '0'; end if; -- net her end if; clk_out_so <= clk_out; end process ; end architecture schieberegister;
@ VHDLer (Gast) >Hallo....ich versuch schon längere zeit das programm zu >synthetisieren...aber mich überschlägts mit fehlern ala synchron >hier das programm...vl kann wer helfen Dir kann man schwer helfen, du bist lernresistent. Wie oft hat man dir gesagt, den Müll mit den shared Variables wegzulassen? Und was sehe ich? Gehe direkt zu den Grundlagen. Gehe direkt dorthin. Lerne VHDL richtig. Ziehe keine 4000 Euro ein. >und programm ist noch net fertig...hat noch inhaltliche fehler...aber Dein ganzer Ansatz sowie Programmierstil ist MÜLL! Schreibs - ohne shared variables - sauber formatiert - ohne logische Verknüpfungen in asynchronen Resets dann schau ich mir das an. Eher nicht. MFG Falk
- ohne shared variables - sauber formatiert - ohne logische Verknüpfungen in asynchronen Resets Besser ist für ein Erst-Design: -komplett ohne Variablen, nur Signal -synchrone Systemresets oder garkeine sytemweiten resets, halt auf die PowerUp-initialisierung verlassen -die erste zeile in einem Prozeß nach begin sollte if rising_edge(clk) then sein: (OK, es geht auch anders, aber so versteht die synthese dich) -kein rising_edge zusammen mit AND verwenden -nur ein rising_edge pro prozess
Siehe auch: http://www.mikrocontroller.net/articles/VHDL#Grundregeln_f.C3.BCr_synthetisierbaren_VHDL-Code
eine frage....ist folgendes korrekt: if (e = '0' and x = '1' and y = '1' ) then w = '1'; x = '0'; y = '0'; end if; folgendes Problem tritt auf: also: x=1 y=1 w=0und e wird 0 => x wird 0, y wird 0, w bleibt 0 wie gibts das? das sich der eine wert nicht ändert? das ganze passiert NUR auf der Hardware und das NICHT IMMER...manchmal gehts. manchmal net?!? mir ist klar das es nicht ganz sauber ist,,...aber bekommt er damit probleme?
a) das muss wohl <= heissen, nicht = b) stimmt die sensitivity list des Prozesses? c) ist das komplett kombinatorisch oder wird da auch was synchronisiert?
sensitivity stimmt, es heißt =...sind keine ein oder ausgänge,..sonderun nur zwischenvariablen.. ja es wird auch was synchronisiert ich versteh nicht...simulation geht alles (auch hardware mäßige simulation) hardware...manchmal schon, manchmal net
Das es := heißt weiß ich war auch kein syntax sondern wollte es nur vom prinzip her erklären Funktioniert inzwischen alles... nur folgende fragen: 1.) Kapier nicht den Unterschied zwischen Variablen und Signale ?!? Wenn ich einen zustand "zwischenspeichernmöchte" kann ich doch eine variable benutzen oder?!? Wo genau liegt der unterschied? 2.) Total Number Slice Register: 171 as Flip Flop: 169 as Latches: 2 Number of 4 input LUTs Number of occupieced Slices: 304 Related logic: 304 Totalnumber of 4 Input LUTs: 559 Number used as logic: 420 . . . Total equivalent gate count of design: 5071 Additional JTAG gate count for IOBs: 1152 So...ich muss jetzt 2 FPGAs bestellen....nur hab ich damit keine erfahrung wo genau lese ich jetzt die anzahl der benötigten markozellen ab? Würde der zb gehen: XCS05XL Logic Cells: 238 Max System Gates: 5000 No. of FlipFlops: 360 Leider steht da zb nicht dabei welcher Eeprom dafür geeignet ist. Benötige einen FPGA den ich selber löten kann (auch SMD) Sollte 5 V oder 3,3V Versorgung benötigen. Sollte mit Webpack Programmierbar sein. Und ein dazugehöriger EEprom sollte verfügbar sein (bzw gibts einen günstigen mit internen Eeprom) Nächste Frage wäre dann...wie ich Eeprom programmieren muss damit das alles funktioniert.
@ VHDLer (Gast) >Kapier nicht den Unterschied zwischen Variablen und Signale ?!? Da bist du nicht der Erste ;-) >Wenn ich einen zustand "zwischenspeichernmöchte" kann ich doch eine >variable benutzen oder?!? Jain. Kurze Antwort. Nimm Signale. Das sind ie eigentlichen "Variablen" in VHDL. Die Bezeihung ist hier irreführend für Leute, die von der normalen Software kommen. >as Latches: 2 Schlecht. Siehe Latch. >So...ich muss jetzt 2 FPGAs bestellen....nur hab ich damit keine >erfahrung >wo genau lese ich jetzt die anzahl der benötigten markozellen ab? FPGA haben keine. Das nennt man bei Xilinx Slices. Wieviel du brauchst steht im Report, wieviel die FPGAs haben im Datenblatt. >Würde der zb gehen: XCS05XL Finger weg von den uralten Dingern! >Benötige einen FPGA den ich selber löten kann (auch SMD) >Sollte 5 V oder 3,3V Versorgung benötigen. >Sollte mit Webpack Programmierbar sein. Spartan 2 oder 3. >Und ein dazugehöriger EEprom sollte verfügbar sein (bzw gibts einen Das ist schon eher ein Problem, welches aber lösbar ist. Low Cost FPGA Konfiguration MFg Falk
Hmm Ich brauche dafür also: FPGA AVR EEPROM ISP => ist das eine schnittstelle? ein adapter? wie schließ ich das am PC an?!? Wie lade ich das VHDL Programm in den eeprom? bzw wo? Wie lade ich das assembler programm in den AVR? bzw wo? Dachte bisher immer ich brauche einen FPGA und einen EEPROM? Gibts keine FPGAs die sich daten automatisch holen? Kann man das assembler programm 1:1 übernehmen?
@ VHDLer (Gast) >Ich brauche dafür also: >FPGA >AVR >EEPROM Ja. >ISP => ist das eine schnittstelle? Ja, siehe AVR ISP > ein adapter? wie schließ ich das am >PC an?!? Parallelport, COM Port oder USB. >Wie lade ich das VHDL Programm in den eeprom? Erstmal gar nicht. Dein VHDL muss compiliert werden, die Software macht dann eine HEX-Datei draus. Die wird in den EEPROM geladen. > bzw wo? ??? >Wie lade ich das assembler programm in den AVR? bzw wo? Mit ISP >Dachte bisher immer ich brauche einen FPGA und einen EEPROM? >Gibts keine FPGAs die sich daten automatisch holen? Doch, die meisten. Aber dann brauchst du einen speziellen PROM, die sind für Hobbybastler bisweilen schwer zu kriegen. Viele Wege führen nach ROM. >Kann man das assembler programm 1:1 übernehmen? Sicher. Wenn du den Tiny12 mit der selben Pinzuordnung verwendest. MFg Falk
Solangsams versteh ich, aber ^^ Um das ganze mal klar zu stellen: IC1 => AVR IC2 => Eeprom IC3 => Eeprom (wieso eigentlich ein 2er Eeprom...ist das notwendig?) Über ISP wird der AVR Programmiert (mit welchem Softwareprogramm geht das?) und über ISP wird die HEX datei vom FPGA eingelesen (über webpack) => aber wieso geht das vom FPGA zum AVR und nicht zum Eeprom? An den Leitungen: DIN, DONE, CCLK, PROGRAM, GND kommt der FPGA Über diese Leitungen wird er programmiert -) Wieso haben diese Leitungen eine direkte Verbindung mit dem ISP?!? -) Wieso haben diese Leitungen keine Verbindung mit dem Eeprom?, weil die Leitungen gehen nur in den AVR und im Eeprom soll doch das eigtnliche Programm drin, Danke für deine Mühe Falk : /
noch ne frage...bei einem Fpga mit internen EEprom...würde ich dann eigentlich NUR diesen besagten FPGA brauchen und keinen µc und keinen externen eeprom richtig? Welche FPGA besitzt den internen eeprom (der vl sogar noch von webpack unterstützt wird ^^)
Vergiss die 2 vorigen sachen die ich da geschrieben habe....hab ma da einen blödsinn zusammen gesponnen. Also laut "Schaltplan des FPGA Konfigurators" Wir wird der AVR Programmiert: AVR Seite: ISP Computer: Parallele Serielle USB (kann ich mir das aussuchen?) Wie werden die VHDL files ins eeprom geladen (CCLK): Eepromseite: SDA, SCL, GND Computer: Parallele Wie werden die VHDL files direkt ins FPGA geladen (JTAG): FPGA Seite: Wo muss ich hier das parallele Kabel reinstecken? etwa auch ISP? Computer: Parallele Die Programmierung des eeproms (SDA,SCL,GND) ist im schaltplan NICHT eingezeichnet oder? Und wo ist die Schnittstelle wo ich den FPGA über JTAG direkt programmieren kann? Nach langem suchen...hab ich die idee des interen eeproms im FPGA verworden :D
@ VHDLer (Gast) >IC1 => AVR >IC2 => Eeprom >IC3 => Eeprom (wieso eigentlich ein 2er Eeprom...ist das notwendig?) Das ist nur ein Beipsiel! Das hängt vom Typ und der Grösse des FPGAs ab. Siehe erste Tabelle im Artikel. >Über ISP wird der AVR Programmiert (mit welchem Softwareprogramm geht >das?) AVRISP, Ponyprog, AVRdude etc. >und über ISP wird die HEX datei vom FPGA eingelesen (über webpack) >=> aber wieso geht das vom FPGA zum AVR und nicht zum Eeprom? Ganz einfach. Weil der AVR den EEPROM ausliest und die Daten dann zum FPGA schickt. Der FPGA allein kann keinen I2C EEPROM ansprechen (zur Konfigurtion). >An den Leitungen: DIN, DONE, CCLK, PROGRAM, GND kommt der FPGA >Über diese Leitungen wird er programmiert >-) Wieso haben diese Leitungen eine direkte Verbindung mit dem ISP?!? Weil der AVR nur 5 frei Pins hat. >-) Wieso haben diese Leitungen keine Verbindung mit dem Eeprom?, weil Wozu? >die Leitungen gehen nur in den AVR und im Eeprom soll doch das >eigtnliche Programm drin, Ja eben. >noch ne frage...bei einem Fpga mit internen EEprom...würde ich dann >eigentlich NUR diesen besagten FPGA brauchen und keinen µc und keinen >externen eeprom >richtig? Ja. >Welche FPGA besitzt den internen eeprom (der vl sogar noch von webpack >unterstützt wird ^^) Siehe Artikel. >AVR Seite: ISP >Computer: Parallele Serielle USB (kann ich mir das aussuchen?) Sicher, je nacdem welchen Programmieradapter du kaufst bzw. baust. >Wie werden die VHDL files ins eeprom geladen (CCLK): hab ich schon mal gesagt. Gar nicht. Die müssen erst kompiliert werden. Die daraus entstehenden HEX-Files werden per Ponyporg in den EEPROM geschrieben. Steht alles im Artikel. >Eepromseite: SDA, SCL, GND >Computer: Parallele Genau. >Wie werden die VHDL files direkt ins FPGA geladen (JTAG): Ja. >FPGA Seite: Wo muss ich hier das parallele Kabel reinstecken? > etwa auch ISP? Nein. Der JTAG Anschluss ist hier nicht gezeigt. Der ist extra am FPGA dran. >Computer: Parallele Ja. http://www.geocities.com/jacquesmartini/digital/schematic/Parallel_Cable_III.png >Die Programmierung des eeproms (SDA,SCL,GND) ist im schaltplan NICHT >eingezeichnet oder? Nein, man kann/muss direkt auf SDA/SCL gehen. >Und wo ist die Schnittstelle wo ich den FPGA über JTAG direkt >programmieren kann? Nicht eingezeichnet. >Nach langem suchen...hab ich die idee des interen eeproms im FPGA >verworden :D Das Problem ist die Verfügbarkeit für Hobbybastler. MFG Falk
Bestimmte Xilinx FPGAs ab Sparten 3e kann man auch direkt über einen SPI-Flash konfigurieren. Die sollten auch relativ leicht zu finden sein. > SDA,SCL Das klingt nach I2C. Gibt die irgendwo in passenden Größen?
Solangsam versteh ich das direkt *hehe http://www.geocities.com/jacquesmartini/digital/sc... Was ist hier IC1P und IC2P ? Wenn ich das hier nachbaue: http://www.mikrocontroller.net/articles/Low_Cost_FPGA_Konfiguration Könnte ich den AVR ja eig auch mit C programmieren oder? Beim ISP für AVR...benötigt man da noch eine zusätzliche schaltung? Weil da ist nicht ersichtlich was dann an welchen pin der parallelen geht Wie erstell ich ein HEX file meines programmes (damit ich mal seh wie groß das ist und mich entscheiden kann welches eeprom ich nehme) zurzeit erzeug ich immer nur ein BIT file
@ VHDLer (Gast) >http://www.geocities.com/jacquesmartini/digital/sc... >Was ist hier IC1P und IC2P ? Die Stomversorgung der beiden ICs. >Könnte ich den AVR ja eig auch mit C programmieren oder? Sag mal, hast den Artikel mal in Ruhe gelesen? Glaub ich kaum. Dann hol das mal nach. >Beim ISP für AVR...benötigt man da noch eine zusätzliche schaltung? Ja. >Weil da ist nicht ersichtlich was dann an welchen pin der parallelen >geht AVR ISP >Wie erstell ich ein HEX file meines programmes (damit ich mal seh wie >groß das ist und mich entscheiden kann welches eeprom ich nehme) zurzeit Die Angabe findet man im Datenblatt oder der ersten Tablle des Artikels. Augen *Auf* !!! MFg Falk
Also...ich werde jetzt nur mal die JTAG schnittstelle aufbaun und einen print machen lassen..damit ich mal alles testen kann mit funkstrecke usw... Die Leitungen die ich vom FPGA zum programmieren brauche, werde ich am Rand des Prints führen und einen stecker anbringen, damit ich später einen Print fertige, auf welchem sich eeprom und avr befinden, und ich den print dann nur dort anschließen muss Muss daher folgende Leitungen am Rand des Prints führen (für den Print mit dem AVR und dem EEprom): DIN, DONE, CCLK, PROGRAMM, GND Für den JTAG werde ich den von dir (falk) vorgeschlagenen Aufbau verwenden ps.: Warum sind links unten unused gates eingezeichnet? Kann ich eigentlich anstatt des XC3S50 auch einen XC3S200 nehmen und trotzdem nur ein Eeprom verwenden? Es kann nämlich sein das mein Programm noch größer wird, und möchte daher etwas Sicherheit haben. Dürfte kein Problem sein den XC3S200 auch nur mit einem Eeprom zu benutzen (falls ich doch nicht so viel brauche), obwohl man eig 2 für volle ausnutzung bräuchte oder? Hab ich sonst noch irgendwelche Dinge zu beachten?
@ VHDLer (Gast) >ps.: Warum sind links unten unused gates eingezeichnet? Weil in dem IC mehr Gates drin sind als gebraucht werden. Und damit die keinen Unsinn machen, müssen die EIngänge auf ein festes Potential gelegt werden. >Kann ich eigentlich anstatt des XC3S50 auch einen XC3S200 nehmen und >trotzdem nur ein Eeprom verwenden? Es kann nämlich sein das mein Nein, der hat wesentlich mehr Konfigurationsspeicher. Siehe Tabelle. >Programm noch größer wird, und möchte daher etwas Sicherheit haben. >Dürfte kein Problem sein den XC3S200 auch nur mit einem Eeprom zu >benutzen (falls ich doch nicht so viel brauche), obwohl man eig 2 für >volle ausnutzung bräuchte oder? Nein, du muss immer das KOMPLETTE Hexfile laden. Das ist hier anders als bei einem Mikrocontroller. MFG Falk
na gut....dann bleib ich mal bei dem XC3S50-4VQG100 Jtag kann ich mit der schaltung dann eh ohne probleme mit webpack benutzen oder? und außer den besagten leitungen benötige ich nichts für den anderen eeprom und Avr print oder? (DIN, DONE, CCLK, PROGRAMM, GND) Wünsche anonsten mal ein schönes wochenende :D
@ VHDLer (Gast) >Jtag kann ich mit der schaltung dann eh ohne probleme mit webpack >benutzen oder? Ja. >und außer den besagten leitungen benötige ich nichts für den anderen >eeprom und Avr print oder? (DIN, DONE, CCLK, PROGRAMM, GND) Nein. >Wünsche anonsten mal ein schönes wochenende :D Arbeitest du bei VW? ;-) MFg Falk
Hmm...Habe bis jetzt nur eine Firma gefunden die den XC3S50 verkauft --> www1.schukat.com Aber die liefern nicht an Privathändler Weiß sonst wer von wo man den bekommen könnte? (vorzugsweise XC3S50-4VQG100)
@ VHDLer (Gast) >Hmm...Habe bis jetzt nur eine Firma gefunden die den XC3S50 verkauft >--> www1.schukat.com >Aber die liefern nicht an Privathändler >Weiß sonst wer von wo man den bekommen könnte? (vorzugsweise >XC3S50-4VQG100) Warum in der Ferne schweifen, wenn das Gute liegt so nah! http://www.reichelt.de/?;ARTICLE=70579; MFG Falk
liefern nichts ins ausland...außer der wert ist >150€ Ich wohn in österreich : /
@ VHDLer (Gast) >liefern nichts ins ausland...außer der wert ist >150€ >Ich wohn in österreich : / Dann musst du mal ganz lieb bitte bitte sagen, dann findet sich vielleicht ein gutherziger Mensch, der das Zeug in Deutschland bestellt und dir per Post zukommen lässt. MFG Falk
*seufz...gut ding braucht weile : / andere frage: der fpga wird mit 2,5 V versorgt? Eeprom wird mit 3,3 V versorgt der µc den ich verwende wohl auch 3,3V bzw 5V 5V und 3,3V sind kein problem.,...aber 2,5V schon : / Noch ne frage...ich werde wohl statt dem AVR einen normalen µC verwenden programmieren werd ich den µc über ein programmier gerät...da ich den ja net so oft programmieren muss... muss ich irgendwas beachten...oder kann ich jeden xbeliebigen µc verwenden?!?
@ VHDLer (Gast) >*seufz...gut ding braucht weile : / >andere frage: der fpga wird mit 2,5 V versorgt? Datenblatt? Die Spartan 3 brauchen 1,2/2,5 und ggf. 3,3V >Eeprom wird mit 3,3 V versorgt >der µc den ich verwende wohl auch 3,3V bzw 5V Welcher? 5V ist eher schlecht, weil der Spartan 3 keine 5V direkt verträgt. >5V und 3,3V sind kein problem.,...aber 2,5V schon : / Warum? LM317 ist dein Freund. >Noch ne frage...ich werde wohl statt dem AVR einen normalen µC verwenden Was ist am AVR unnormal? >programmieren werd ich den µc über ein programmier gerät...da ich den ja >net so oft programmieren muss... Im Normalfall. >muss ich irgendwas beachten...oder kann ich jeden xbeliebigen µc >verwenden?!? Im Prinzip ja. Aber dann musst du das Programm dazu neu schreiben bzw. portieren. Das ist einiges an Aufwand. MfG Falk
nunja....aber 3 verschiedene Versogungsspannungen sind nicht schön 5 V brauch ich für sende/empfangsmodul als µc werd ich wohl ein ur alt teil verwenden ala AT89 > Welcher? 5V ist eher schlecht, weil der Spartan 3 keine 5V direkt > verträgt. meinst du damit, er verträgt keine 5V Versorgung oder meinst du damit am Eingang selbst. Kann ja auch einen µc mit 3,3 V verwenden, am µc wirds denk ich net scheitern nur...kann ich aus dem DB nicht ganz herauslesen was genau versorgung ist Interne logic 3,3V...lese aber sehr oft auch von 2,5V for core: 1,2V I/O: 1,2V to 3,3V auxiliary:2,5V Steht aber beim allgemeinen teil wo alle versionen von XC3S vermischt sind
@ VHDLer (Gast) >nunja....aber 3 verschiedene Versogungsspannungen sind nicht schön >5 V brauch ich für sende/empfangsmodul Das wären dann vier. 1,2/2,5/3,3 und 5V ;-) >als µc werd ich wohl ein ur alt teil verwenden ala AT89 Und warum? Ist dir der AVR nicht schön genug? Mit 1 Euro zu teuer? >meinst du damit, er verträgt keine 5V Versorgung oder meinst du damit am >Eingang selbst. Sowohl als auch. >Kann ja auch einen µc mit 3,3 V verwenden, am µc wirds denk ich net >scheitern Hoffe ich mal. ;-) >for core: 1,2V Genau, Kernspannung, brauchst du immer. >I/O: 1,2V to 3,3V Spanung für sie IOs, im weiten Bereich wählbar. >auxiliary:2,5V Hilfsspannung, wird auch gebraucht, wenn gleich mit wenig Strom. >Steht aber beim allgemeinen teil wo alle versionen von XC3S vermischt >sind Das ist eine Familie. Da sind die ICs alle gleich, nur dass sie unterschiedlich viele Logikzellen haben. MFG Falk
öhm...ich muss dann nur für den FPGA 3 Versorgungsspannungen anlegen ?!? Oo Wenn dann nur 3,3V oder? weil das die höchste ist die vorkommt
@ VHDLer (Gast)
>öhm...ich muss dann nur für den FPGA 3 Versorgungsspannungen anlegen ?!?
Ja. Und wenn du deinen uC und EEPROM mit 2,5V betreibst reichen auch
zwei (1,2 und 2,5)
MFG
Falk
also eeprom(AT24C51) geht ja von 2,5V bis 3,3V Grundversorgung liegt bei 5V und ich muss den FPGA selbst mit 3 verschiedenen Spannungen betreiben?!? Bin grad etwas aus der Fassung...das ist mit total neu wieso macht der das net intern? dass er eine spannung bekommt und selbst runterteilt? also FPGA benötigt IMMER 1,2 V und 2,5V...wenn ich aber an einem eingang etwas größer >2,5V (und kleiner <3,3V) einspeißen will,...benötige ich noch 3,3V ansonsten lass ich die 3,3V weg?
@ VHDLer (Gast) >und ich muss den FPGA selbst mit 3 verschiedenen Spannungen betreiben?!? Kleiner Tip. Egal was es ist. Nimm weniger davon ! >Bin grad etwas aus der Fassung...das ist mit total neu >wieso macht der das net intern? dass er eine spannung bekommt und selbst >runterteilt? Das Leben ist grausam und ungerecht. Was hast du in den letzten Stunden gemacht? >ansonsten lass ich die 3,3V weg? Lass alles weg und kauf dir ein fertiges Evalboard. Ist wirklich besser, vor allem für dich. http://www.mikrocontroller.net/articles/FPGA#Entwicklungsboards MFG Falk
Habe den ganzen Beitrag von der 1. Zeile bis zum Schluss Satz für Satz gelesen. Selten so gelacht ..... Falk, ich bewundere Deine Geduld. Aber ich werd das Gefühl nicht los, dass auch VHDLer sich köstlich amüsiert.
Ne ich amüsiere mich keineswegs. Und ich bewundere Falk ebenso...denn ich weiß das nicht leicht mit mir ist. Aber ich denke jetzt sinds Falks nerven blank : / Ich verstehe dass es frustrierend sein muss Falk. Aber um mal auf ein Beispiel zurückzugreifen...ich habe danach gesucht...und nirgends etwas gefunden, wo stehen würde dass man mehrere Versorgungsspannungen benötigt. Beim Datenblatt dachte ich mir einfach die ganze familie wurde zusammengefasst und jeder fpga braucht dann eine andere Spannung Bisher hab ich einfach nur µc's programmiert, und ich wollte endlich einen Schritt weitergehen. Die hilfe in meiner umgebung is relativ begrenzt und daher hab ich mich an euch gewandt. Ich bedanke mich bei dir Falk...du hast mir viel weitergeholfen...ich hoffe ich kann das ganze jetzt alleine vollenden
@VHDLer Okay; falls das Ganze von Dir nicht als Amüsement insziniert wurde, dann komme ich nicht umhin zu bemerken: Du schreibst, dass es sich um eine Diplomarbeit handelt. D.h., Du bist mit Deinem Studium fertig und musst nun mit dieser Arbeit beweisen, dass Du das waehrend dem Studium gerlernte verstanden hast. Sicher, es gibt Unterschiede zwischen den Unis; aber ich bezweifle, dass es eine Uni in Deutschland gibt, die einen Studenten bis zum Schluss auf diesem Niveau toleriert. Sollte das Ganze nicht ein Spass gewesen sein - wozu ich immer noch tendiere: schaeme Dich.
Das ganze ist etwas anders, denn ich studiere gar nicht (habe noch keine abitur) Bin in einer höheren schule und dabei matura zu machen das ist nicht wirklich eine richtige Diplomarbeit...wird fälschlicherweise so genannt... man bekommt eine aufgabenstellung die es zu lösen gibt Ich habe davor noch NIE fpga programmiert bzw eine schaltung dazu aufgebaut Hab mir VHDL selbst beigebracht (internet)...dadurch habe ich auch probleme weil ich eben niemanden fragen kann ...auch keine lehrer Neben dieser arbeit muss ich noch für die matura selbst lernen... vielleicht...kann das ja jetzt wer nachvollziehen :/
@VHDLer Waere es nicht viel besser gewesen, von Anfang an diese Fakten auf den Tisch zu legen? Denn ohne diese Fakten hat hier jeder die Latte ziemlich hoch angesetzt ... und bei Deinen Rückfragen staunend den Kopf geschüttelt.
Hätte ich wohl machen sollen :/ Hab halt sehr oft den Vergleich zum µC gesucht...aber wurde gegen ende sinnlos zum stand der dinge...bin schon recht weit.. projekt besteht ja nicht nur aus fpga usw...insofern schon einiges erreicht Die beiden Programme sind auch fast fertig und funktionieren soweit Programmierung ist also fast abgeschlossen :D Es fehlt jetzt nur noch der hardwaremäßige aufbau (zunächst wie gesagt ohne eeprom) Werd in etwa 2 wochn den fpga habn...und dann gleich mit dem aufbau und test beginnen Das einzige was mir bezüglich dem aufbau mit jtag noch unklar ist...ist eben die beschaltung des fpga's, genauer gesagt versorgungsspannungen hab auch noch dinge bezüglich stromaufnahme gelesen...naja mal schaun
@VHDLer Jeder hat Dir gesagt, Du sollst entweder einen uC oder ein CPLD nehmen. Und jeder hat gesagt: kein FPGA. Und Du nimmst trozdem ein FPGA. Interessant.
:D Mann o Mann, fast haette ich meine Meinung geaendert gehabt. Aber soviel Lernresistenz gibt es einfach nicht. Ich bin wieder bei meiner alten Meinung: Das ganze ist ein Amüsement Deinerseits.
Das verstehe ich jetzt nicht? Wenn ichs mitn CPLD (XC 95144XL) probiere kommt: less cells blabla Das kommt raus wenn ich es mit einem fpga probiere: Total Number Slice Register: 171 as Flip Flop: 169 as Latches: 2 Number of 4 input LUTs Number of occupieced Slices: 304 Related logic: 304 Totalnumber of 4 Input LUTs: 559 Number used as logic: 420 Daher muss ich einen fpga nehmen ?!? was ist daran falsch? Wenn die synthere mehr braucht als ein cpld bietet muss ich doch den fpga benutzen?!?
Hallo! Wie dir bereits gesagt wurde, sind Latches schlecht! Wenn ich mich richtig erinnere an meine TEI1 Vorlesung, enstehen Latches, wenn du irgendwo ein if hat, aber kein else dazu. Z.B. so (Pseudocode): if(a==b){ meinsignal = 1; } daraus wird dann implizit: if(a==b){ meinsignal = 1; }else{ meinsignal = meinsignal; //speicherung an dieser stelle => Latch! } deshalb immer fleißig die else-pfade ausformulieren: if(a==b){ meinsignal = 1; }else{ meinsignal = 0; //z.B. }
Es geht auch ohne Else: meinsignal <= '0'; if(a='1') then meinsignal <= '1';
klingt logisch ja einen latch habe ich schon wegbekommen...2te ist auch nur ne frage der zeit Brauche zur zeit 170 Slice Registers (denke das ist der zu betrachtende wert) das cpld hat 144 dabei ist das programm später noch zu erweitern ich denk am fpga führt kein weg vorbei :(
@ VHDLer (Gast) >Brauche zur zeit 170 Slice Registers (denke das ist der zu betrachtende >wert) >das cpld hat 144 CPLD und FPGA haben sehr unterschieliche Strukturen Slices (FPGA) kann man nicht in Makrozellen (CPLD) umrechnen. >dabei ist das programm später noch zu erweitern >ich denk am fpga führt kein weg vorbei :( Wenn man will UND Plan hat schon. Aber das haben wir zur genüge erklärt. MFG Falk
Warum setzt man bei der Synthese nicht mal einen CPLD ein? Dann sieht man, wie viele von den Ressourcen verbraucht werden. Ein FPGA ist kein CPLD, die sind vom Grunde komplett unterschiedlich. Kopfschüttel
Habs mit CPLD eh schon getestet: ERROR:Cpld:837 - Insufficient number of macrocells. The design needs at least ERROR:Cpld:868 - Cannot fit the design into any of the specified devices with irgendwie kann ers nicht synthetisieren, steht leider auch nicht warum? oder ists weil es zu viel braucht? zum fixspgregler: werd wohl den LM117 nehmen wollt anfangs den LM323 nehmen aber der braucht eine mindest eingang von 7,5V (hab nur 5V)
>ERROR:Cpld:837 - Insufficient number of macrocells. The design needs at >least
Da sollte dann eigentlich noch eine Zeile kommen mit der entsprechenden
Information. Schau im kompletten Report nach, nicht in der Ansicht, die
nur Fehler zeigt!
ahhh danke sehr gut bzw doch net sehr gut..... [Warning]:Cpld:868 - Cannot fit the design into any of the specified devices with the selected implementation options. [Error]:Cpld:837 - Insufficient number of macrocells. The design needs at least 359 but only 144 left after allocating other resources.
Habe folgendes Problem: Mit einem Zähler teile ich den Clock runter. Es funktioniert auch aber: Starte ich das Programm neu und erstelle eine neue datei um es in den fpga zu loaden geht der geteilte clock nicht mehr. muss dann den bereich erhöhen...obwohl ich nicht verstehe warum es dann geht bzw warum es ohne nicht geht. Es zeigt keinen fehler bei synthese oder so...nur auf der hardware net...inzwischen sind SEHR viele 0en dazu gekommen Zu Beginn: shared variable zaehler_statisch : std_logic_vector(6 downto 0) := "0000000"; - - - process (clk) begin if(clk'event and clk = '0') then zaehler_statisch := zaehler_statisch + "0000001"; end if; if(zaehler_statisch = "1100011") then clk_stat <= '1'; end if; if(zaehler_statisch < "1100011") then clk_stat <= '0'; end if; if(zaehler_statisch > "1100011") then zaehler_statisch := "0000000"; end if; end process; Jetzt: shared variable zaehler_statisch : std_logic_vector(32 downto 0) := "000000000000000000000000000000000"; - - - process (clk) begin if(clk'event and clk = '0') then zaehler_statisch := zaehler_statisch + "000000000000000000000000000000001"; end if; if(zaehler_statisch = "000000000000000000000000001100011") then clk_stat <= '1'; end if; if(zaehler_statisch < "000000000000000000000000001100011") then clk_stat <= '0'; end if; if(zaehler_statisch > "000000000000000000000000001100011") then zaehler_statisch := "000000000000000000000000000000000"; end if; end process; mfg
@ Martin P. (wallow) "Ich soll keine shared variables verwenden!" So, das schreibst du jetzt 100 mal. Siehe VHDL. MFG Falk
aber bisher hab ich keinen nachteil bei variablen gefunden?!? nachteil von signale ist ja...das sie erst beim nächsten takt wieder gelten. daher wären variblen schneller als signale was ja nicht schlecht ist oder übersehe ich was? gibt es möglicherweise probleme mit gatterlaufzeiten(bei variablen) die durch das warten auf die nächste clockflanke verschwinden (bei signalen)? mfg Ps.: fpga's sind bestellt *freu^^
Variablen haben keine Nachteile, wenn man sie an der richtigen Stelle korrekt benutzt. Shared Variablen haben in einer synthesefähigen Beschreibung nichts zu suchen, weil sie nicht in HW umgesetzt werden können und äusserst fehlerträchtig sind. Und Sorry, das ict jetzt nicht böse gemeint, aber da hilft es einfach mal nen VHDL-Buch zur Hand zu nehmen bevor man drauf los coded, aber das scheint ja aus der Mode gekommen zu sein wenn man sich viele Fragen hier im Forum anschaut...
@ Martin P. (wallow) >aber bisher hab ich keinen nachteil bei variablen gefunden?!? Keine bange, das kommt noch. >nachteil von signale ist ja...das sie erst beim nächsten takt wieder >gelten. ??? Das ist kein Nachteil, das ist der Sinn der Sache! >daher wären variblen schneller als signale was ja nicht schlecht ist >oder übersehe ich was? Ja. VHDL ist kein C oder BASIC. >gibt es möglicherweise probleme mit gatterlaufzeiten(bei variablen) die >durch das warten auf die nächste clockflanke verschwinden (bei >signalen)? Das Problem ist komplexer. Und hab jetzt keine Lust das haarklein zu erklären. Kurze Antwort. NIMM SIGNALE! Und befass dich mal mit den Grundlagen der Digitaltechnik. >Ps.: fpga's sind bestellt *freu^^ Naja, ein Evaluationboard ist einfacher zu nutzen. Dennoch viel Spass und Erfolg damit. MFG Falk
Benötigt das Jtag für einen fpga: TDI TMS TCK TDO oder: TDI TMS TCK TDO DONE Program CCLK DIN Grundsätzlich würde ich behaupten das nur mit der 2 Variante geht. Folgende Schaltung verwirrt mich jedoch. (angehängt) Hier ist das DONE Programm CCLK nur an dem Prom angeschlossen. Kann man hier den fpga also NICHT ohne prom programmieren? Falls nein wieso hat man dann überhaupt eine TDO Leitung vom fpga zum tjag? wenn dann müsste ja alles dabei sein also auch program usw..(TCK und TMS sind ja auch angehängt...aber vl nur für dem Prom) Mfg
@ Martin P. (wallow) >Benötigt das Jtag für einen fpga: >TDI >TMS >TCK >TDO Genau >DONE >Program >CCLK >DIN Das sind die Pins für das serielle Programmierinterface. Jaja, JTAG ist auch seriell und man kann darüber auch konfigurieren, ist aber eine andere Schnittstelle. >Grundsätzlich würde ich behaupten das nur mit der 2 Variante geht. Nö. >Kann man hier den fpga also NICHT ohne prom programmieren? Low Cost FPGA Konfiguration >Falls nein wieso hat man dann überhaupt eine TDO Leitung vom fpga zum >tjag? Die wird für JTAG gebraucht. Über JTAG kann man den FPGA und den PROM programmieren, mit einem Kabel über den PC. Dann zieht man das Kabel ab und der PROM konfiguriert den FPGA über das einfache serielle Interface, nicht über JTAG. MfG Falk
Nochmal wegen der Versorgungsspannungen: 3,3V werd ich weglassen...und bei den I/O maximal 2,5 V benutzen die 2,5V kann man ja durch einen LM317 realisieren die 1,2 V.....LM317 hat ja min. 2V output...ginge es nicht Z dioden zu benutzen? auch bei den 2,5V und so einfach von 5V auf 2,5V bzw 1,2V runterzuschalten Oder gibt es dann probleme mit dem Strom? Mfg
@ Martin P. (wallow) >die 1,2 V.....LM317 hat ja min. 2V output...ginge es nicht Z dioden zu ??? LM317 schafft auch 1,2V Ausgangsspannung, einfach ADJ auf Masse legen. >benutzen? auch bei den 2,5V und so einfach von 5V auf 2,5V bzw 1,2V >runterzuschalten Ja, warum nicht. >Oder gibt es dann probleme mit dem Strom? Wieviel tausend Ampere willst du denn ziehen? MFG Falk
> die 2,5V kann man ja durch einen LM317 realisieren > die 1,2 V.....LM317 hat ja min. 2V output...ginge es nicht Z dioden zu > benutzen? auch bei den 2,5V und so einfach von 5V auf 2,5V bzw 1,2V > runterzuschalten Nimm ein EVA-Board !!! Bei allem anderen zahlst du nur Lehrgeld. Ein FPGA-Design mit einem LM317 ?? Die Energieversorgung eines FPGAs ist nicht gerade trivial, da müssen bestimmte Anstiegszeiten eingehalten werden. Schon mal ins Datenblatt vom FPGA geschaut ? Anscheinend nicht. Kopfschüttel
also mittlerweile bin ich mir 100%ig sicher dass es sich um einen troll handelt ::) So schusselig/lernresistent kann man sich doch gar nicht anstellen... hut ab vor falk der immer noch durchhält... popcorn hol
Der LM317 wurde mir von Falk empfohlen....und bis jetzt benutzen die meisten fpga beschaltungen einen LM317 zur spannungsregulierung. Und nein...ich mache das hier nicht aus spaß...bei gott nicht... Und ich bin auch dankbar für Falks hilfe
Hallo Martin und Zuschauer, Ich habe soeben diese gesamte Diskussion durchgelesen, statt endlich mal früher in die Falle zu kommen. Ich muss sagen, das war anstrengender als so mancher Horror-Film. Vielleicht habe ich die Happy-End Sucht schon von meiner Freundin übernommen und kann es deswegen so schlecht vertragen. Martin, mal im Ernst: Wann soll der Kram fertig sein? Wenn Du erstmal den FPGA hast, geht der Stress erst los - es sei denn, Du bist in Elektronik sehr viel fitter als in Sachen programmierbarer Logik. Wenn ich mir die ganzen Antworten hier so durchlese, ist eins klar: Jeder gibt sich Mühe, Dich bei Deinem Projekt zu unterstützen. Wenn Du studiert hättest, würde ich sagen: Da musst Du selber durch. Aber so finde ich Dein Projekt aller Ehren wert. Ich befürchte, wenn Du den eingeschlagenen Pfad weitergehst (Stichwort FPGA, eigene Programmierlösung etc. pp.), dann wird es noch ein Jahr dauern, bis da etwas funktioniert. Ich würde mir diesen Ansatz gerade zutrauen, wenn ich ein paar Monate zu verbrennen hätte und sehr viel dazulernen möchte - auf die harte Tour. Allerdings habe ich Informatik, Nebenfach Elektrotechnik studiert . Seit ca. einem Jahr beschäftige ich mich beruflich mit programmierbarer Logik und habe noch sehr viel zu lernen. Zum Glück hatte ich direkt sowohl ein einfaches Evaluationsboard für billige Tests und ein Entwicklungsboard mit einem fetten FPGA zum "spielen". Auch so hatte ich viel Spaß mit den Tücken der Synthese und den Einschränkungen der Xilinx-Werkzeuge. @ Martin: Noch ist nichts zu spät. Versuche mal, auf die Leute hier zu hören. Ich bin sicher, wenn Du auf die Ratschläge hier hörst, sind Deine Erfolgschancen sehr viel besser. Wenn möglich würde ich z.B. unbedingt auf einen CPLD setzen. Die XC9500 CPLDs von Xilinx können z.B. direkt mit 5V arbeiten - was die Sache doch eine Ecke einfacher macht. Den XC9572 gibt es sogar bei Reichelt, dann sollte der doch auch in .at leicht zu kriegen sein. Bleibt die Frage, ob der für Dein Projekt ausreicht. Mit ein wenig mehr Auskunftsfreudigkeit Deinerseits gibt es hier bestimmt genug Unterstützung, Dein VHDL-"Programm" in diese Richtung zu trimmen und zu prüfen, ob es reicht. Die FPGAs hast Du ja schon bestellt, die bleiben Dir dann ja, um in Ruhe zu spielen. Hätte ich auch Lust drauf, so ein "FPGA from Scratch" Projekt. Erstmal die Zeit dafür haben... @ Falk: Geniales Projekt, Dein Low-Cost Programmer. Muss ich bei Gelegenheit mal probefahren. :)
Hmm jo danke mal für den fetten beitrag :D also wie gesagt ich studiere nicht. Mache dieses matura (bei euch heists abitur) Und...ihr werdet jetzt lachen (bzw es nicht glauben)...diese arbeit ist den besseren des jahrganges vorbehalten. ich bekam diese aufgabe praktisch zugeteilt (es gab noch andere aber hab mich für dieses projekt entschieden) Und ich bin noch immer froh das thema gewählt zu haben....weil es mich absolut fordert (überfordert?!? :D) und einfach etwas neues ist und ich einiges dazulernen musste, bzw alles, weil wir wie bereits erwähnt zuvor ausschließlich µc mit c programmierten. Projekt muss im mai fertig sein. Das Programm sowohl sender und empfängerseite sind funktionsmäßig schon relativ weit. Hab bzw bin gerade dabei einen footprint zu zeichnen für den fpga (für protel keinen passenden gefunden) ist aber nicht weiter wild die passenden proms (xs01..oder so) bestell ich diese woche...schon jemanden gefunden der die verkauft :D Wenn ich die gesamte hardware fertig hab in protel werd ich sie denk ich eh mal hier reinkopieren. Hab da nur noch ein paar probleme mit dem durchkontaktieren der printplatte bzw mit der grundsätzlichen hardware...sollte aber in den griff zu bekommen sein. Versorgungen werd ich jetzt doch 3 benutzen (prom braucht sowieso 3,3V) programiert wird (NUR) über jtag und nicht über die andere serielle. prom selbst kummuniziert natürlich über serielles interface mit dem fpga annbei ist eine sturkutplan meines programms (nur senderseite)...zum verständniss *hehe
Wie bereits erwähnt spiele ich gerade mit der hardware Die konfiguration steht schon halbigs denk ich (master seriel mit xs01prom) Hswap hab ich mit 10k auf masse geschalten...damit alle I/Os bestimmte Pegel während der konfiguration besitzen / bzw davor...wenn ich das richtig verstanden habe die 3 versorgungsspannungen realisiere ich über 3 schaltungen mit jeweils einem lm317 Soweit ich das richtig gelesen habe...kann ich an einem Eingang 5 V anlegen obwohl er nur 3,3V kann? 2 Probleme stellen sich nun erstens der Takt...cclk ist der interne clock für die konfig der nicht im design benützt werden kann Gclk wiederum bietet einen "schnellen" eingang für einen externen takt (der im design verwendet werden kann) ... jedoch reicht nicht ein quarz sondern man braucht eine oszillatorschaltung meisten oszillator benötigen ja eine spule...welche ungenau ist bzw. selbst zu wickeln / zu messen ist hätte mich daher für diese schaltung entschieden: http://www.elektronik-magazin.de/page/digitaler-quarzoszillator-14 Ist dies eine gute Lösung? oder gibt es bessere? 2 problem....umwandlung von jtag auf parallele. Ich will nur das jtag verwenden daher brauch ich die schaltung "xilinx parallel cable-III modified by Martinman..." nicht aber wie sieht nun die direkte umwandlung von jtag auf parallele aus. Sie ist ja grundsätzlich programmabhängig oder? (benutze impact)..hab nämlich verschieden schaltungen gefunden und weiß nun nicht welche auch stimmt. Gibts da eine standardschaltung die sich bewehrt hat? Mit vielen freundlichen grüßen :D
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.