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
#252161
Hallo Zen, wie wäre es das mysig Signal zu invertieren und auf 0 zu vergleichen? GRuß Jörn
Prima Idee! Wie invertiert man eigentlich ein Signal? Ansonsten geht ja auch ein Vergleich mit (2**len)-1. Danke fuer den Tipp! Zen
Gast
#252163
vorschlag : constant ALL_ONES : std_logic_vector(mysig'RANGE) := (others=>'1'); ... if mysig = ALL_ONES then ...
Gast
#252164
Quartus macht aus dem
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
8x einen 2zu1 Multiplexer, die zwischen '0' und dem ensprechenden Bit von Data2 umschalten. Gruß Jörn
@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
@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 ?
Gast
#252167
Hallo, wenn du kein zusätzliches Signal willst: if mysig = CONV_STD_LOGIC_VECTOR(2**len-1,len) then gruss seek
@FPGA-User: "oder stört Dich die zus. Zeile VHDL ?" Nun, etwas schon, und ich wollte halt wissen ob das nicht auch ohne geht. Das bei der Synthese immer das Gleiche rauskommt ist klar, es ging nur darum den Code moeglichst simple zu halten, Zen
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.