Autor |
Beitrag |
nobbe
Junior-Mitglied
Beiträge: 14
|
|
nach oben |
|
|
nobbe
Junior-Mitglied
Beiträge: 14
|
Erstellt: 24.01.06, 20:57 Betreff: Re: Was ist hier falsch?
drucken
weiterempfehlen
|
|
|
während ich den post geschrieben habe ist mir ein licht aufgeangen.....
habs jetzt rausgefunden, warum das bei mir net getan hat, habe aus dem bit_vector jetzt mal ein std_logic_vector gemacht und scho tuts.... jetzt muss mir das nur noch jemand erklären.
[editiert: 24.01.06, 20:57 von nobbe]
|
|
nach oben |
|
|
xGCFx
Stammgast
Beiträge: 33 Ort: Dresden
|
Erstellt: 24.01.06, 22:08 Betreff: Re: Was ist hier falsch?
drucken
weiterempfehlen
|
|
|
Ich denke, die Funktion unsigned ist nur für std_(u)logic Werte definiert (zumindestens laut meinem Buch hier). Daran wird es wohl liegen.
Generell ist es vorteilhafter, sowieso diese Typen zu benutzen.
|
|
nach oben |
|
|
nobbe
Junior-Mitglied
Beiträge: 14
|
|
nach oben |
|
|
xGCFx
Stammgast
Beiträge: 33 Ort: Dresden
|
Erstellt: 24.01.06, 22:53 Betreff: Re: Was ist hier falsch?
drucken
weiterempfehlen
|
|
|
Ich denke, es liegt an der Division. Wie wäre es wenn du diese weg lässt, und es so schreibst:
if (frequenz_count*100) < (frequenz* pulsdauer) then
ist das nicht genau das selbe? Und es lässt sich anstandslos synthetsieren....
Oder du zählst frequenz_count immer um 100 hoch, nicht um 1. Dann kannst du dir doch auch die Multiplikation um 100 sparen, oder?
Achso: Ich hab vorhin ins Buch 'VHDL-Synthese' geschaut. Aber auch der 'Designers Guide to VHDL' is da immer gut zum Nachschlagen.
[editiert: 24.01.06, 23:05 von xGCFx]
|
|
nach oben |
|
|
nobbe
Junior-Mitglied
Beiträge: 14
|
Erstellt: 24.01.06, 23:50 Betreff: Re: Was ist hier falsch?
drucken
weiterempfehlen
|
|
|
ja ok, das ist eine idee... die tzut auch, habe ich total übersehen...sorry.
jetzt wollt ich grad noch nen großes aber sagen, aber mir ist gerade die lösung für mein nextes problem eingefallen...man macht das spaß wenn man endlich selber auf die lösungen kommt
danke für eure hilfe!
greez
|
|
nach oben |
|
|
nobbe
Junior-Mitglied
Beiträge: 14
|
Erstellt: 29.01.06, 15:49 Betreff: Re: [gelöst] Was ist hier falsch?
drucken
weiterempfehlen
|
|
|
ich habe da mal wieder das gleiche problem mit dem divid ... habe schon verschiedenes versucht, aber ich finde keine lösung.... vielleicht findet ihr ja eine
ich habe eine schleife, wo zu einer variavle "zaeh_ges" immer +1 addiert wird, danach soll in einem andere process ein pwm erzeugt werden, mit folgender bedingung "frequenz_count * 100 <(5000000 / zaeh_ges) * zaeh_up)"
habe jetzt auch schon so versucht:
"frequenz_count*100*zaeh_ges < 5000000 * zaeh_up" da das ja das letzte mal ja ausch schon geklappt hat(siehe oben)...aber irgendwe hat es sich in mir schon gestreubt, da es ja ein "<" ist und kein "=" Die 5000000 kommen daher, das ich ja die Milisekunden haben will und ich das Signal mit einer CLK von 5000000 abtaste. Also "Zeit = gezaehlte_impulse / Abtastrate"
momenat steht alles noch in einer architecture, habe mir aber schon überlegt ob es was bringen würde, wenn ich die einzelnen processe in eine eigene architecture legen würde.
Ich hoffe ihr versteht wo mein problem ist....
hier ist mal der gesammte code...bis auf teile, die in diesem fall nicht relevant sind (also nicht über das entity wundern)
greez nobbe
Dateianlagen:
main.vhd (7 kByte)
anzeigen - speichern
Datei wurde schon 330-mal heruntergeladen.
|
|
nach oben |
|
|
xGCFx
Stammgast
Beiträge: 33 Ort: Dresden
|
Erstellt: 30.01.06, 23:10 Betreff: Re: Was ist hier falsch?
drucken
weiterempfehlen
|
|
|
Wie wäre es wenn du nen Taktteiler erstellst, der den Takt auf 1kHz (T = 1ms) teilt? Mit dem könntest du die Zähler ansteuern. Und würdest dir die Division sparen.
Hab mir aber deinen Quelltext noch nicht angeschaut, da ich kurz angebunden bin. Generell sind Divisionen nicht einfach so synthetisierbar.
|
|
nach oben |
|
|
nobbe
Junior-Mitglied
Beiträge: 14
|
Erstellt: 31.01.06, 08:51 Betreff: Re: Was ist hier falsch?
drucken
weiterempfehlen
|
|
|
hört sich im ersten augenblick gut an, aber ..... hmm jetzt komm ich ins grübeln...muss mir das nochmals anschauen, ob das so geht...bin grad auf arbeit und habe grad ein anderes projekt...mal heute mittag anschauen, wenn ich mehr zeit habe.
wäre aber nett wenn du mal meinen code anschauen könntest.
greez
|
|
nach oben |
|
|
pzwack
Registrierter Benutzer
Beiträge: 4
|
Erstellt: 01.02.06, 20:07 Betreff: Re: Was ist hier falsch?
drucken
weiterempfehlen
|
|
|
Zitat: nobbe
während ich den post geschrieben habe ist mir ein licht aufgeangen.....
habs jetzt rausgefunden, warum das bei mir net getan hat, habe aus dem bit_vector jetzt mal ein std_logic_vector gemacht und scho tuts.... jetzt muss mir das nur noch jemand erklären. |
Nun ja: Als ob es in VHDL nicht genug Zahlentypen gibt, hat es ZWEI Sorten von Signed/Unsigned, je nachdem welches Modul du benutzt:
use ieee.numeric_std.all; --> type UNSIGNED is array (NATURAL range <>) of STD_LOGIC;
use ieee.numeric_bit.all; --> type UNSIGNED is array (NATURAL range <> ) of BIT;
Bleib bei STD_LOGIC, das ist der De-Facto-Standard für alle, und die mehrwertigen Zustände haben schon ein paar Mal den Abend beim Debuggen gerettet.
|
|
nach oben |
|
|
xGCFx
Stammgast
Beiträge: 33 Ort: Dresden
|
Erstellt: 03.02.06, 16:21 Betreff: Re: Was ist hier falsch?
drucken
weiterempfehlen
|
|
|
Ich kann mir den Code erst Ende nächster Woche näher anschauen, bin grad voll im Lernen für die Abschlussprüfungen. Mal sehen, was sich danach machen lässt. Hab da auch noch eigene Projekte, die ich dann (endlich) in Angriff nehmen kann.
|
|
nach oben |
|
|
|