2013-04-19 22 views
10

Üçüncül operatörün düzgünlüğünü ve cümlecikleri seviyorum.VHDL'de üçlü operatör var mı?

Bu kullanıcı vhdl'de var mı? Aramam tam tersiydi. Ayrıca ne zaman bir deyim olduğunu kontrol ettim, ama bir operatör değil, ve ben de bu süreçte kullanmak istiyorum ...

cevap

9

Hayır. VHDL-2008 için tartışıldı, ancak içeri girmedi. Birkaç seçeneğiniz var. araçlarınız VHDL-2008 desteklerse, koşullu atamaları artık (daha önce sadece eşzamanlı idi) sıralı ifadeleri olarak desteklenir, şöyle bir şey yazabilirsiniz:

process(clock) 
begin 
    if rising_edge(clock) then 
    q <= '0' when reset else d; -- ie. much like q <= reset? '0':d; 
    end if; 
end process; 

Eğer 2008 yok varsa sadece bir fonksiyon yazmak, (q <= sel(reset, '0', d)). Yine de ilgilendiğin her tür için yazmalısın.

+0

/else cümleleri ne zaman birden çok eklenir? Ben (x ne zaman x else y) + (z else w ne zaman koşmak) çalışmak için görünmüyor. –

10

C/C++ 'dan bildiğiniz gibi değil ama kullanabilirsiniz:

destination <= signal1 when condition else signal2;