2014-10-28 15 views
7

VHDL'deki sonlu durum makinelerinin (FSM'ler) nasıl kodlanacağı konusunda bazı tartışmalar var gibi görünüyor. İnsanlar 1-işlem, 2-süreç ya da 3-işlem FSM'lerini herkesin tam olarak ne anlama geldiğini ve her sürecin ne yaptığını bildiği gibi konuşur. Ancak, kesin bir tanım bulamadım ve var olan örnekler çelişkili görünüyor.VHDL'de FSM için 1-, 2- veya 3-işlem anlamı nedir?

Bu nesnel bir soru: Her FSM stili (1 işlem, 2 işlem, 3 işlem) için kod açısından fark nedir? Kişisel tercihin bir bileşeni olduğunu anlıyorum, ama kesinlikle nesnel olarak soruyu cevaplamak ve her yaklaşımın avantajlarını listelemek mümkün.

sayesinde

+2

Xilinx'ten XST PDF, 1,2 ve 3 işlem FSM'lerinin örneklerini gösterir (iki işlemin yalnızca iki değişkeninden yalnızca bir tanesi yeterlidir). Kısmen bir Mealy-Moore sorunu ve büyük bir kısmı kişisel tercih ya da ezberci öğrenme. Analitik eğimli olanlar, duyarlılık listelerinde bulunan elemanların etkilerine dikkat edebilir. – user1155120

+0

@DavidKoontz 2-işlem FSM'sinin 2. versiyonu ne olurdu? Devlet sicili için bir süreç ve her şey için başka bir süreç? – rick

+0

XST pdf hoş bir referans, teşekkür ederim. @DavidKoontz –

cevap

1

Bunun zor olduğunu eğer ayrıca yanıtlamaya çalışın, çünkü o seviyor ve nasıl her insanın kod donanım çalışmak zorunda durumun işlevinde (frekans, dış yollar, ...). bir durum makinesinde de

bazı elemanları vardır:

  • giriş
  • çıkış
  • mevcut durumu

Sonraki durum güncel durumundan bağlıdır sonraki durum ve girişler. Kombinator döngülere sahip olmamanız için, bir saat sinyali durumunda bir sonraki durumu örneklemeniz gerekir, böylece mevcut durum haline gelir. Yani, devlet için flip-flop oluşturmak için bir VHDL işlemine ihtiyacınız var. Bu süreçte, bir sonraki durumu hesaplamak için gereken tüm mantığı koyabilirsiniz. Eğer çıktılarınız sadece devlete bağlıysa, başkalarına ihtiyaç duymazsınız.

Mantık çok kolay olmadığında aynı işlemi birleştirme mantığına dahil etmeyi sevmiyorum (bunu sevdim ama zorunlu değil!), Normalde FSM'yi iki süreçte bölüyorum: ilk çok kolay Bir sonraki durumu örnekleyen işlem, mevcut çıktıya ve tüm çıktıları ve bir sonraki durumu girdi ve mevcut durumun fonksiyonu olarak hesapladığım bir kombinatory sürecidir.

Aynı durumlarda, çıkışların örneklenmesi gerekir: örneğin, frekans sorunu olduğunda, dahili yolların harici olanlardan mı yoksa çıkışların büyük bir yüke sahip olması gerekir. Bu durumda, bir sonraki durumu örneklediğiniz veya bir veya daha fazla özel işlem oluşturduğunuz ilk süreçte gerekli tüm parmak arası terlikleri ekleyebilirsiniz.

Ayrıca işlem sayısı gibi birçok değişikliğe de sahip olabilirsiniz: Bir kodda çalıştım, her sinyal özel bir işlemde hesaplanır, böylece elde edilen durum makinesi 20/30 işlemine sahip olur.