www.mikrocontroller.net

Forum: FPGA, VHDL & Co. FPGA synthetisierung

Autor: Vhdler (Gast)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Vhdler (Gast)
Datum:

- 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  :(
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Vhdler (Gast)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Vhdler (Gast)
Datum:

gibt es irgendwelche "standard" eeproms die geeignet sind für sowas?
die man vl auch über farnell usw bekommt?
Autor: sechnullfuenf (Gast)
Datum:

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.
Autor: Vhdler (Gast)
Datum:

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
Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

http://www.atmel.com/dyn/resources/prod_documents/...
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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Martin Kohler (mkohler)
Datum:

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.
Autor: Vhdler (Gast)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Vhdler (Gast)
Datum:

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.
Autor: Vhdler (Gast)
Datum:

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
Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

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.
Autor: Vhdler (Gast)
Datum:

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
Autor: J. J. (j_j)
Datum:

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.
Autor: Vhdler (Gast)
Datum:

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
Autor: Martin Kohler (mkohler)
Datum:

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?
Autor: Vhdler (Gast)
Datum:

Aber ich muss alles gleichzeitig machen
senden, rechnen und empfangen

zudem sind 160 assembler befehle in wirklichkeit nicht recht viel
Autor: Martin Kohler (mkohler)
Datum:

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.
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Martin Kohler (mkohler)
Datum:

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 ;-)
Autor: Vhdler (Gast)
Datum:

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
Autor: Martin Kohler (mkohler)
Datum:

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?...

Mit USART hast du nämlich auch den Stress mit der Takt-Rückgewinnung
gleich mit erledigt.
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Vhdler (Gast)
Datum:

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 :(
Autor: Tom Nachdenk (tom-nachdenk)
Datum:

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.
Autor: Falk Brunner (falk)
Datum:

@ 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-Tutori...

>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
Autor: Vhdler (Gast)
Datum:

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 : /
Autor: Martin Kohler (mkohler)
Datum:

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).
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Vhdler (Gast)
Datum:

"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?
Autor: Falk Brunner (falk)
Datum:

@ 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/sc...

>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
Autor: Vhdler (Gast)
Datum:

wie ich grad sehe....alle µC's mit 2 USART werden mit AVR programmiert
:(
gibts keine mit µC?
Autor: Vhdler (Gast)
Datum:

*edit  gibt keine die in C programmiert werden
Autor: Jens (Gast)
Datum:

@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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Martin Kohler (mkohler)
Datum:

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 ;-) )
Autor: Vhdler (Gast)
Datum:

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
Autor: Martin Kohler (mkohler)
Datum:

Dein "VHDL-Programm" interessiert mich aber trotzdem.
Her damit! ;-)
Autor: Vhdler (Gast)
Datum:

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...
Autor: Vhdler (Gast)
Datum:

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
Autor: Martin Kohler (mkohler)
Datum:

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!
Autor: Vhdler (Gast)
Datum:

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
Autor: Martin Kohler (mkohler)
Datum:

> 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.
Autor: Vhdler (Gast)
Datum:

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?
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Vhdler (Gast)
Datum:

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?
Autor: Falk Brunner (falk)
Datum:

@ 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/applic...

>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
Autor: Jens (Gast)
Datum:

@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
Autor: Vhdler (Gast)
Datum:

@ 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?
Autor: Vhdler (Gast)
Datum:

frage...was ist der unterschied zwischen:

3 entitys
oder
1 entity das 3 verschiedene prozesse beinhaltet?
Autor: Rick Dangerus (Gast)
Datum:

Die reuseability.

Rick
Autor: Vhdler (Gast)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@ Vhdler (Gast)

>line 40: Signal start_condition cannot be synthesized, bad synchronous
>description.

Poste kompletten VHDL Code.

MFg
Falk
Autor: Vhdler (Gast)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@ Vhdler (Gast)

>Ich glaube ich habs..viele ... CLK'event

Ist ja prinzipiell nicht schlimm.

>Wäre ein guter Aufbau folgender:
process
begin
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
if rising_edge(clk) then    --steigende Flanke
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
Autor: VHDLer (Gast)
Datum:

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;
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: FPGA-Jeck (Gast)
Datum:

- 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
Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Autor: VHDLer (Gast)
Datum:

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?
Autor: Jan M. (mueschel)
Datum:

a) das muss wohl <= heissen, nicht =
b) stimmt die sensitivity list des Prozesses?
c) ist das komplett kombinatorisch oder wird da auch was synchronisiert?
Autor: VHDLer (Gast)
Datum:

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
Autor: Gast (Gast)
Datum:

Wenn es Variablen sind muss es nicht "=" sondern ":=" sein.
Autor: MarcelB (Gast)
Datum:

Euren Guru hätte ich gern :)
Autor: VHDLer (Gast)
Datum:

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.
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: VHDLer (Gast)
Datum:

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?
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: VHDLer (Gast)
Datum:

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 : /
Autor: VHDLer (Gast)
Datum:

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 ^^)
Autor: VHDLer (Gast)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@ 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/sc...

>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
Autor: Mike (Gast)
Datum:

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?
Autor: VHDLer (Gast)
Datum:

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_F...
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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: VHDLer (Gast)
Datum:

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?
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: VHDLer (Gast)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: VHDLer (Gast)
Datum:

g nene das nicht
Nur denke ich das jetzt sobald mal keine fragen kommen ^^
Autor: VHDLer (Gast)
Datum:

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)
Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Dig-Key
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: VHDLer (Gast)
Datum:

liefern nichts ins ausland...außer der wert ist >150€

Ich wohn in österreich : /
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: VHDLer (Gast)
Datum:

*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?!?
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: VHDLer (Gast)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: VHDLer (Gast)
Datum:

ö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
Autor: Stefan Salewski (Gast)
Datum:

Kopfschüttel!
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: VHDLer (Gast)
Datum:

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?
Autor: Falk Brunner (falk)
Datum:

@ 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#Entwi...

MFG
Falk
Autor: Mehmet Kendi (mkmk)
Datum:

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.
Autor: VHDLer (Gast)
Datum:

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
Autor: Mehmet Kendi (mkmk)
Datum:

@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.
Autor: VHDLer (Gast)
Datum:

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 :/
Autor: Mehmet Kendi (mkmk)
Datum:

@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.
Autor: VHDLer (Gast)
Datum:

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
Autor: Mehmet Kendi (mkmk)
Datum:

@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.
Autor: VHDLer (Gast)
Datum:

LEIDER nehme ich den fpga
CPLD zu klein....programm braucht zu viele zellen :(
Autor: Mehmet Kendi (mkmk)
Datum:

: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.
Autor: VHDLer (Gast)
Datum:

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?!?
Autor: Rick Dangerus (Gast)
Datum:

Oder Deinen Code optimieren...

Rick
Autor: Fabian Wetzel (Gast)
Datum:

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.
}
Autor: Dirk (Gast)
Datum:

Es geht auch ohne Else:

meinsignal <= '0';
if(a='1') then
meinsignal <= '1';
Autor: VHDLer (Gast)
Datum:

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 :(
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Kopfschüttel (Gast)
Datum:

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
Autor: VHDLer (Gast)
Datum:

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)
Autor: Jan M. (mueschel)
Datum:

>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!
Autor: VHDLer (Gast)
Datum:

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.
Autor: Martin P. (wallow)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@ Martin P. (wallow)

"Ich soll keine shared variables verwenden!"

So, das schreibst du jetzt 100 mal.

Siehe VHDL.

MFG
Falk
Autor: T.M. (Gast)
Datum:

;-)
Autor: Martin P. (wallow)
Datum:

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^^
Autor: T.M. (Gast)
Datum:

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...
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Martin P. (wallow)
Datum:
Angehängte Dateien:

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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Martin P. (wallow)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@ 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
Autor: Tipp (Gast)
Datum:

> 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
Autor: noob (Gast)
Datum:

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 
Autor: Martin P. (wallow)
Datum:

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
Autor: Bluehorn (Gast)
Datum:

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. :)
Autor: Martin P. (wallow)
Datum:
Angehängte Dateien:

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
Autor: Martin P. (wallow)
Datum:

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-qu...

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
Autor: Tommi Huber (drmota)
Datum:

Na hast du deine Prüfungen schon bestanden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net