hi leute, schreib grad unter xilinx 9.2 für nen sparta 3. ich hab zwei takte die ich über den clock abzählen lasse, daher hab ich dann zwei std_vectoren. jetzt will ich das taktverhältnis ausrechnen lassen, also die zwei std_logic_vec dividieren. jedoch klappt das nicht so recht. auch mit conv_integer klappts nicht. hat jemand ne idee diesbezüglich. oder vielleicht kehrwertbildung? aber wie stell ich das an, bring mir auch bei constantenteilung den error: ERROR:HDLParsers:808 / can not have such operands in this context. danke schon mal
Also zwei std_logic_vector zu dividieren geht ja schon mal gar nicht. Ein std_logic_vector ist nur ein Anordnung von Bits. Die müßte zum Rechnen z.B. in unsigned gewandelt werden. Siehe auch Rechnen in VHDL: Besser: Rechnen mit numeric std. Aber: Deine Division geht nur mit Divisoren die Potenz von 2 sind (2,4,8,16,...), weil die Synthesetools noch nicht so schlau sind. Also, entweder für die Divisorfrequenz was "krummes" nehmen z.B. 2^22 = 4194304 (siehe auch Baudratenquarz), oder die Division durch das Verfahren aus der Grundschule (Zählen, wie oft man subtrahieren kann) realisieren. Dabei leistet eine state-Maschine gute Dienste. Rick
Du solltest den Wizzard nutzen, um einen Divider zu instanziieren. Der kriegt 2 std_logics rein und gibt i.d.R. 2 ab: Das Ergebnis und den Rest. Du musst natürlich VOR Anlegen des Vektors die Skalierung einbauen. Beispiel 20 Bit / 20 Bit Teiler bei dem maximal 1 Bit Ergebniss rauskommen würde (da Wert < Teiler) : Wert (19 downto 0) <= "10110 ...... 001"; Teiler (19 downto 0) <= "010020.....11010"; Preci ( 9 downto 0) <= "0000000000"; (port map vom Divider= A <= Wert & Preci, B <= Teiler, R <= Rest, E <= Ergebnis; Der Ergebnisvektor belegt maximal die 10 Bit der mit "Preci" vorgegbenen Präzision und stellt die 100%-Zahl mit Faktor 1024 dar. Kannst auch vorher noch mit 200 multiplizieren, dann Teilen, 1 Addieren und dann wieder durch 2, dann hat Dein Ergebnisvektor exakt die Prozentzahl intus. Dann reichen 7 bit.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.