Fragen zum Datentyp boolean

OP #1446485
hallo,

ich habe eine frage zum boolean datentyp in vhdl.
mir ist aufgefallen dass ich diesen datentyp in 2 oder evtl auch in 
mehreren prozessen ändern kann. (natürlich nicht gleichzeitig)

ich habe es mit einem std_logic typ versucht wobei der compiler ja schon 
schreit. beim boolean typ gibt es keine meldung.
lieg ich da richtig, dass ich bool'sche typen in mehreren prozessen 
ändern kann? also wie ne art semaphore?!

ich habe das auch durch ein bsp-programm ausprobiert und möchte da doch 
noch eure meinung hören.

verwende den MachXO von lattice und habe ispLEVER 7.2

hier mal das bsp-programm:
1
architecture arch_led of led is
2
  signal EN : boolean := false;
3
begin
4
  process  
5
  begin  
6
    if rising_edge(clk) then
7
      if EN = true then      
8
        EN<= false;
9
      end if;
10
    end if;
11
      wait for 1000 ms;
12
  end process;
13

14
  process
15
  begin
16
    if rising_edge(clk) then
17
     if EN = false then
18
      EN <= true;
19
     end if;  
20
    end if;
21
    wait for 1000 ms;
22
  end process;
23

24
  with EN select
25
    led <= '1' when true;
26
    led <= '0' when false; 
27
...

nach dem routing oder vllt noch davor meldet der compiler
       logical net 'clk' has no load
somit kann ich dann das signal auch nicht einem clk-pin des MachXO 
zuweisen. woran liegt das denn? daran dass ich keine sensitivity-list 
verwende??

mfg

andi
Moderator (Firma: Titel) Persönliche Seite #1446514
std_logic kann nur von einem (in Zahlen 1) Prozess getrieben werden. 
Deine Beschreibung wird in einem "multiple source" Fehler resultieren.

Mit boolean wirst du das bestenfalls noch simuliert bekommen. Bei der 
Erzeugung von Hardware wirst du dann aber den selben Fehler erhalten.

Viel schlimmer ist das:
1
  wait for 1000 ms;
Sowas wird der Synthesizer einfach ignorieren. Zeiten können nicht 
synthetisiert werden. Um eine Zeit zu reaslisieren, brauchst du einen 
Zähler.
Gast #1446515
dieses konstrukt ist doch durch das "wait for ..." eh nicht 
synthetisierbar. und ja, bei einer rising_edge abfrage muss das signal 
eigentlich auch in der sensitivity-list stehen.
Moderator (Firma: Titel) Persönliche Seite #1446520
> liegt das daran dass ich keine sensitivity-list verwende??
Das kann durchaus die Ursache für deinen fehlenden clock sein.

> dass ich keine sensitivity-list verwende??
Das bedeutet, dass zudem deine Simulation falsch sein wird.

Du hast ziemlich grundlegende Probleme mit dieser Beschreibung, der 
clock ist das Kleinste davon  :-o
(Firma: abaxor engineering) #1446701
Hallo,

bei deinem Beispiel fehlt zwar die Deklaration der Entity, trotzdem 
würde ich sagen, dass du kein Ausgangssignal treibst, zumindest hängt 
von EN kein Ausgangssignal ab. Darum ist keine Logik in deinem MACHX0, 
es wird alles weg optimiert. Somit wird das Clk-Signal nicht genutzt.

Tom
Gast #1446884
hi,

signals mit unresolved typen (zb. _ulogic) koennen nur einen treiber 
haben, d.h. die koennen nur aus einem process oder parallel logic 
getrieben werden. resolved types koennen aus beliebig vielen quellen 
getrieben werden, vhdl/simulator uebernehmen fuer dich die driver 
resolution (sodass 0+1->X, und Z+1->1,... wird)

boolean ist definiert in std standard und muesste unresolved sein.

'semaphore' ist etwas anderes, resolved/unresolved sind statische 
eigenschaften.

regards/mfg

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.