if mit others

#252160
Lesenswert?

Hallo!
Ich hab da ein Problem, naehmlich wie sich folgendes realisieren
laesst:

constant len: integer := 8;
...
signal mysig: std_logic_vector(len-1 downto 0);
...
if(mysig=(others=>'1')) then   -- Hier liegt das Problem!
  ...
end if;

Kann man das loesen, ohne ein weiteres "1"-Signal zu machen?
Vielen Dank!
Zen
Gast #252164
Lesenswert?

Quartus macht aus dem
1
process(mysig,data2)
2
begin
3
  dataout<=(others=>'0');
4

5
  if (unsigned(not mysig)=0) then
6
   dataout<=data2;
7
  end if;
8

9
end process;

8x einen 2zu1 Multiplexer, die zwischen '0' und dem ensprechenden Bit
von Data2 umschalten.

Gruß Jörn
#252165
Lesenswert?

@Zen ;) "Wie invertiert man eigentlich ein Signal?"
Ok, da hab ich was geschrieben ohne erst zu ueberlegen...

@FPGA-USER "constant ALL_ONES"
Ja, so habe ich es auch zuerst geloest, suchte aber eigentlich eine
Loesung ohne zusaetzliches Signal.

@Jörn "unsigned(not mysig)=0"
Genau das suchte ich!

Danke fuer die Flut von Antworten!
Zen
Gast #252166
Lesenswert?

@Zen
wenn der Compiler nicht ganz blöd ist, wird er aus ALL_ONES
eine Konstante machen, d.h. genau dasselbe wie

if (mysig=(others=>'1'))

wenn das funktionieren würde. Also kein zusätzliches Signal
oder stört Dich die zus. Zeile VHDL ?

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