Verilog zu VHDL umwandeln

Gast #7005322
Lesenswert?

Moin Leude,

ich hab aktuell keine Möglichkeit hier zu Simulieren und hab nur ne 
kurze schnelle Frage wie folgender Code in VHDL aussehen würde:
1
test[1] <= &(varOne ~^ patt);
Ich hab das nun zu das geändert
1
if ((varOne xnor patt) = X"FF") then
2
     test(1) <= '1';
3
else
4
     test(1) <= '0';
5
end if;
Es ist in einem sequentiellen Block, varOne und patt sind beides 
std_ulogic_vector(7 downto 0);

Hab hier ein relativ großen Code vor mir liegen den ich übersetzen muss 
und bin grad auf Fehlersuche und das ist so der einzige Teil wo ich mir 
grad unsicher bin.

Gruß
Miauz
Moderator (Firma: Titel) Persönliche Seite #7005522
Lesenswert?

Miauz schrieb:
> bin grad auf Fehlersuche
Nach welchem Fehler denn?

> if ((varOne xnor patt) = X"FF") then
So viele Klammern. Ganz offensichtlich ein Programmierer, der FPGA 
machen muss  ;-)

> Es ist in einem sequentiellen Block
Dir ist das für Programmierer etwas "eigenartige" Verhalten von Signalen 
in einem Prozess bekannt und bewusst?

> &
VHDL 2008 hat unäre Versionen von AND, OR, NOR, NAND, XOR und XNOR. 
Damit kannst du einen Vektor ganz einfach reduzieren:
1
slbit <= AND slvect;

> if ((varOne xnor patt) = X"FF") then
Ich würde das nebenläufig machen, da ist doch keine Not für einen 
Prozess:
1
test(1) <= AND(varOne xnor patt);

Miauz schrieb:
> ne kurze schnelle Frage wie folgender Code in VHDL aussehen würde
Und jetzt kommt der eigentliche Witz: was macht denn der Code? Wann gibt 
er '1' zurück und wann '0'?
Ich habe so den Verdacht, dass das ein simpler Vergleich auf Gleichheit 
ist. Denn nach dem verXNORen der beiden Vektoren ist im resultierenden 
Vektor überall dort eine '1' , wo die beiden Vektoren gleich sind. Und 
wenn man das dann diesen Vektor bitweise verUNDet, dann kommt nur dann 
eine '1' raus, wenn alles gleich ist. Und damit reicht und ein simples 
und für jeden verständlicher Vergleich:
1
test(1) <= '1' when varOne = patt else '0';

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren