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
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
vorschlag : constant ALL_ONES : std_logic_vector(mysig'RANGE) := (others=>'1'); ... if mysig = ALL_ONES then ...
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
@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
@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 ?
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
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.