Autor |
Beitrag |
Bogomil
Registrierter Benutzer
Beiträge: 3
|
Erstellt: 16.09.06, 21:37 Betreff: Addition unsigned mit natural
drucken
Thema drucken weiterempfehlen
|
|
|
Servus,
ich bin erst seit gestern in die Materie eingestiegen und habe mich gefragt ob es möglich ist sowas zu schreiben wie:
ARCHITECTURE nur_bedieneinheit OF bedieneinheit IS SIGNAL Z : unsigned(7 downto 0); BEGIN Z <= "00101000"; -- das wären dann 10#40# . . . PROCESS(...) BEGIN IF ..... AND Z > "00101000" THEN Z <= Z - 1;
So also da soll dann in dem Process binär 1 von Z abgezogen werden. Also wenn jetzt der Process startet mit:
Z = 00101001 (binär)
soll
Z = 00101000 (binär) rauskommen!
Geht sowas,...wenn nicht wie geht sowas ?
Hilfe wäre echt super. ;-)
MfG Bogomil
|
|
nach oben |
|
|
xGCFx
Stammgast
Beiträge: 33 Ort: Dresden
|
Erstellt: 17.09.06, 13:04 Betreff: Re: Addition unsigned mit natural
drucken
weiterempfehlen
|
|
|
Ja, das geht. In etwa so:
ARCHITECTURE nur_bedieneinheit OF bedieneinheit IS SIGNAL Z : unsigned(7 downto 0); BEGIN Z <= to_unsigned(integer(40),8); . . PROCESS(...) BEGIN IF ..... AND integer(Z) > 40 THEN Z <= Z - 1;
Bei den Umwandlungsfunktionen geb ich keinbe Gwähr auf Korrektheit, aber wie du dir das denkst geht das schon.
|
|
nach oben |
|
|
Danke
Gast
|
Erstellt: 17.09.06, 18:55 Betreff: Re: Addition unsigned mit natural
drucken
weiterempfehlen
|
|
|
Jo,....
danke auch...find ich trotzdem irgendwie seltsam das ganze!
Will nur wissen ob ich das richtig verstanden hab!
Ein UNSIGNED ist ein Bitvektor der als Binärzahl interpretiert wird!?
Und weil mit UNSIGNED arithmetische Vergleiche möglich sind brauch ich sowas wie die Typkonvertierung in einen Integer gar nicht, oder ??? Oder doch ????? (Hab ich in irgendeiner Kurzanleitung gelesen,...glaub ich zumindest!)
So wie du das gemacht hast hab ich das noch gar nicht gemeint...Typkonvertierung hab ich mir auch erst heute so richtig angeschaut...
Was ich damit sagen will, Funktioniert das folgende:
ENTITY bedieneinheit IS PORT ( etakt, korrektur, vorwahl : IN STD_LOGIC; eingabe : OUT STD_LOGIC; einstellung : OUT UNSIGNED(7 downto 0) ); END bedieneinheit;
ARCHITECTURE bedieneinheit_v1 OF bedieneinheit IS SIGNAL Z : UNSIGNED(7 downto 0); BEGIN Z <= "00101000"; PROCESS(korrektur,vorwahl,etakt) BEGIN IF korrektur'EVENT AND korrektur = '1' AND vorwahl = '0' AND Z > "00101000" THEN Z <= Z - 1; ELSEIF vorwahl = '1' AND korrektur = '0' AND Z < "11010000" THEN IF (vorwahl'LAST_EVENT >= 1 sec) AND etakt'EVENT AND etakt = '1' THEN eingabe <= '1'; Z <= Z + 1; ELSEIF vorwahl'EVENT THEN Z <= Z + 1; END IF; ELSEIF vorwahl'EVENT AND vorwahl = '0' eingabe <= '0'; END IF; END PROCESS; einstellung <= Z; END ARCHITECTURE;
PS: Wie kann man das machen das alle sehen können das ich den Code eingerückt hab? Wenn das einer weiß werd ich das sofort editieren! ;-)
MfG danke für die Hilfe,
Bogomil
|
|
nach oben |
|
|
Bogomil
Registrierter Benutzer
Beiträge: 3
|
Erstellt: 17.09.06, 19:05 Betreff: Re: Addition unsigned mit natural
drucken
weiterempfehlen
|
|
|
Zitat: xGCFx
ARCHITECTURE nur_bedieneinheit OF bedieneinheit IS SIGNAL Z : unsigned(7 downto 0); BEGIN Z <= to_unsigned(integer(40),8); . . PROCESS(...) BEGIN IF ..... AND integer(Z) > 40 THEN Z <= Z - 1;
|
Ist doch deutlich schöner,...ich werd das auch so noch übernehmen...sollte irgendjemand meinen Code lesen wollen freut der sich bestimmt wenn er nicht erst alles in dezimalsystem umrechnen muss zumal das ja gängiger ist
Jetzt weiß ich auch warum meine Code nicht eingerückt ist ! Naja....VHDL nimmt das mit Groß und kleinschreibung ja auch nicht so genau!
Funzt trotzdem nicht: Naja wenn ihr auf Zitat geht könnt ihr den Code eingerückt sehen! ;-)
[editiert: 17.09.06, 19:08 von Bogomil]
|
|
nach oben |
|
|
|