VHDL değişkeni sentez araçlarıyla nasıl sentezlenir


9

Bir VHDL değişkeninin sentez aracıyla sentezlenmesinin iki yolunu biliyorum:

  • Kombinasyonel mantık olarak sentezlenen değişken
  • İstemeden bir Mandal olarak sentezlenen değişken (bir sinyale veya başka bir değişkene başlatılmamış bir değişken atandığında)

Bir VHDL değişkeninin sentezlenmesinin diğer yolları nelerdir? (Örnek: FF olarak yorumlanabilir mi?)

Yanıtlar:


8

Üç olasılığı ayırt ederim:

  1. Bir VHDL değişkeninin donanım temsili yoktur. Aşağıdaki örneği varsayalım

    signal a,b,c : integer;  
    ...  
    process ( clk ) is  
    variable var : integer := 0;  
    begin  
    if ( rising_edge(clk) ) then  
    var := a + b;  
    c <= var;  
    end if;  
    end process;

    Değişken varaslında kombinatoryal mantık olarak sentezlenmemiştir (soruda kastedilen budur). Daha ziyade a + bdonanıma sentezlenen ödevin sağ tarafı . Kesin olarak söylemek gerekirse, bir değişken asla birleşik mantığa sentezlenmez.

  2. Bir değişken sadece aynı saat döngüsünde değerlendirilen -> hiçbir donanım sentezlenmedi (bu tekrar 1'dir) veya bir sonraki saat döngüsünde değerlendirilen -> bir flipflop sentezlenir.

  3. Bu korkunç mandallardan biri, değişkenin ne yeni bir değer (bazı sinyallere bağlı olarak) ne de varsayılan bir değer atandığı koşullu dalların bulunduğu durumlarda ortaya çıkar. Genellikle bu dava istenmeyen olur :-)


"Korkunç mandal" ancak saatli bir sürecin dışında olabilir ve çoğu insan (benim durumumda) bu gün saatsiz süreçleri kullanmıyor. Bu yüzden mandal korkusu artık bir sorun değil (IMHO) - kombinatorik mantığınızı flip floplarınıza ayrı bir süreçte yazmak zorunda kaldığınız eski günlerden kaynaklanıyor
Martin Thompson

4

Değeri kaydetmeden önce bir değişkende kullanırsanız, işlemin son saklanışında saklanan değeri alırsınız (saatli bir işlemde, önceki saat döngüsünün değeri). Bu bir kayıt veya FF olarak sentezlenir.

Tabii ki, değişkeni bir sıfırlama cümlecikinde başlatmadıysanız, ilk saat döngüsünde çöp alırsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.