Forum: FPGA, VHDL & Co. FPGA synthetisierung


von Vhdler (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Vhdler (Gast)


Lesenswert?

- 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  :(

von Falk B. (falk)


Lesenswert?

@ 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

von Vhdler (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Vhdler (Gast)


Lesenswert?

gibt es irgendwelche "standard" eeproms die geeignet sind für sowas?
die man vl auch über farnell usw bekommt?

von sechnullfuenf (Gast)


Lesenswert?

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.

von Vhdler (Gast)


Lesenswert?

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

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Martin K. (mkohler)


Lesenswert?

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.

von Vhdler (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Vhdler (Gast)


Lesenswert?

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.

von Vhdler (Gast)


Lesenswert?

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

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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.

von Vhdler (Gast)


Lesenswert?

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

von J. J. (j_j)


Lesenswert?

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.

von Vhdler (Gast)


Lesenswert?

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

von Martin K. (mkohler)


Lesenswert?

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?

von Vhdler (Gast)


Lesenswert?

Aber ich muss alles gleichzeitig machen
senden, rechnen und empfangen

zudem sind 160 assembler befehle in wirklichkeit nicht recht viel

von Martin K. (mkohler)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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

von Falk B. (falk)


Lesenswert?

@ 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

von Martin K. (mkohler)


Lesenswert?

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 ;-)

von Vhdler (Gast)


Lesenswert?

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

von Martin K. (mkohler)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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

von Vhdler (Gast)


Lesenswert?

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 :(

von Tom N. (tom-nachdenk)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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

von Vhdler (Gast)


Lesenswert?

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 : /

von Martin K. (mkohler)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Vhdler (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Vhdler (Gast)


Lesenswert?

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

von Vhdler (Gast)


Lesenswert?

*edit  gibt keine die in C programmiert werden

von Jens (Gast)


Lesenswert?

@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

von Falk B. (falk)


Lesenswert?

@ 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

von Falk B. (falk)


Lesenswert?

@ 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

von Martin K. (mkohler)


Lesenswert?

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 ;-) )

von Vhdler (Gast)


Lesenswert?

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

von Martin K. (mkohler)


Lesenswert?

Dein "VHDL-Programm" interessiert mich aber trotzdem.
Her damit! ;-)

von Vhdler (Gast)


Lesenswert?

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

von Vhdler (Gast)


Lesenswert?

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

von Martin K. (mkohler)


Lesenswert?

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!

von Vhdler (Gast)


Lesenswert?

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

von Martin K. (mkohler)


Lesenswert?

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

von Vhdler (Gast)


Lesenswert?

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?

von Falk B. (falk)


Lesenswert?

@ 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

von Vhdler (Gast)


Lesenswert?

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?

von Falk B. (falk)


Lesenswert?

@ 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

von Jens (Gast)


Lesenswert?

@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

von Vhdler (Gast)


Lesenswert?

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

von Vhdler (Gast)


Lesenswert?

frage...was ist der unterschied zwischen:

3 entitys
oder
1 entity das 3 verschiedene prozesse beinhaltet?

von Rick Dangerus (Gast)


Lesenswert?

Die reuseability.

Rick

von Vhdler (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ Vhdler (Gast)

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

Poste kompletten VHDL Code.

MFg
Falk

von Vhdler (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

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;

von Falk B. (falk)


Lesenswert?

@ 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

von FPGA-Jeck (Gast)


Lesenswert?

- 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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?


von VHDLer (Gast)


Lesenswert?

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?

von Jan M. (mueschel)


Lesenswert?

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

von VHDLer (Gast)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

Wenn es Variablen sind muss es nicht "=" sondern ":=" sein.

von MarcelB (Gast)


Lesenswert?

Euren Guru hätte ich gern :)

von VHDLer (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

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?

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

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 : /

von VHDLer (Gast)


Lesenswert?

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 ^^)

von VHDLer (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Mike (Gast)


Lesenswert?

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?

von VHDLer (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

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?

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

g nene das nicht
Nur denke ich das jetzt sobald mal keine fragen kommen ^^

von VHDLer (Gast)


Lesenswert?

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)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Dig-Key

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

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

Ich wohn in österreich : /

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

*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?!?

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

ö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

von Stefan Salewski (Gast)


Lesenswert?

Kopfschüttel!

von Falk B. (falk)


Lesenswert?

@ 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

von VHDLer (Gast)


Lesenswert?

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?

von Falk B. (falk)


Lesenswert?

@ 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

von Mehmet K. (mkmk)


Lesenswert?

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.

von VHDLer (Gast)


Lesenswert?

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

von Mehmet K. (mkmk)


Lesenswert?

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

von VHDLer (Gast)


Lesenswert?

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 :/

von Mehmet K. (mkmk)


Lesenswert?

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

von VHDLer (Gast)


Lesenswert?

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

von Mehmet K. (mkmk)


Lesenswert?

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

von VHDLer (Gast)


Lesenswert?

LEIDER nehme ich den fpga
CPLD zu klein....programm braucht zu viele zellen :(

von Mehmet K. (mkmk)


Lesenswert?

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

von VHDLer (Gast)


Lesenswert?

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

von Rick Dangerus (Gast)


Lesenswert?

Oder Deinen Code optimieren...

Rick

von Fabian Wetzel (Gast)


Lesenswert?

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

von Dirk (Gast)


Lesenswert?

Es geht auch ohne Else:

meinsignal <= '0';
if(a='1') then
meinsignal <= '1';

von VHDLer (Gast)


Lesenswert?

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 :(

von Falk B. (falk)


Lesenswert?

@ 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

von Kopfschüttel (Gast)


Lesenswert?

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

von VHDLer (Gast)


Lesenswert?

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)

von Jan M. (mueschel)


Lesenswert?

>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!

von VHDLer (Gast)


Lesenswert?

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.

von Martin P. (wallow)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ Martin P. (wallow)

"Ich soll keine shared variables verwenden!"

So, das schreibst du jetzt 100 mal.

Siehe VHDL.

MFG
Falk

von T.M. (Gast)


Lesenswert?

;-)

von Martin P. (wallow)


Lesenswert?

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^^

von T.M. (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Martin P. (wallow)


Angehängte Dateien:

Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Martin P. (wallow)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Tipp (Gast)


Lesenswert?

> 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

von noob (Gast)


Lesenswert?

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 

von Martin P. (wallow)


Lesenswert?

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

von Bluehorn (Gast)


Lesenswert?

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. :)

von Martin P. (wallow)


Angehängte Dateien:

Lesenswert?

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

von Martin P. (wallow)


Lesenswert?

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

von Tommi H. (drmota)


Lesenswert?

Na hast du deine Prüfungen schon bestanden.

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
Noch kein Account? Hier anmelden.