Ayrık mantık tasarımı


11

Basit bir alarm cihazı oluşturmakla görevlendirildim. Sadece birkaç girişi ölçmek gerekiyor ve çıkışlar buna göre cevap verecek (çok basit bir şekilde!). Bana göre, birkaç ayrık mantık kapısının kullanılması işi halledecek gibi görünüyordu, ancak (benimle çalışan) bir meslektaşım bunun yerine programlanabilir mantık kullanmamız gerektiğine karar verdi. Davası kazandı, çünkü birincisi, benden daha kıdemli ve ikincisi, ana argümanı programlanabilir cihazların gelecek olması ve geleceğe dönük ürünler yapmak istiyoruz.

Benim sorum, birkaç ayrık mantık kapısı tarafından kolayca uygulanabilecek bir tasarımınız varsa, artık ayrık mantık ile tasarlamaya değer mi? Bunları programlanabilir olarak kullanmanın herhangi bir avantajı var mı? Yoksa yavaşça tamamen programlanabilir mantıkla aşamalı olarak kaldırılacak mı? Açık olmak gerekirse, 'Ben böyle olduğuna inanıyorum' ya da 'şahsen bunu düşünüyorum ama ...' cevaplarını istemiyorum. Programlanabilir ve farklı programlanabilirlik üzerine gerçek bir avantaj olup olmadığını bilmek istiyorum. bu günlerde tüketici elektroniği ürünlerinde tasarım yapmaya değer mi?


16
Bu 90'lı yıllardan itibaren bir soru gibi geliyor ... µC kazandı, bir tane içine atmak ve yapmak sadece bir düzine IC'yi nasıl bağlayacağınızı düşünmekten çok, mekan tüketimini değil.
PlazmaHH

9
Ayrık kapıların büyük bir avantajı vardır. Alet zinciri yok.
jonk

Alet zinciri yok mu? Ne demek istiyorsun @jonk
Meraklı

@ PlazmaHH Yani temelde gelecekte ayrık tasarım yapmanın bir avantajı olmadığını mı söylüyorsunuz?
Meraklı

11
@Jonk'un anlamı, bir mikrodenetleyici kullanıldığında, mikrodenetleyici için bir IDE (grafik veya metinsel kullanıcı arayüzü) ve derleyici / bağlayıcı / kullandığınız mikrodenetleyici için ayrılmış diğer araçlar kombinasyonu gibi bir program oluşturmak için yazılıma ihtiyacınız vardır. takım zinciri.
Michel Keijzers

Yanıtlar:


15

Ayrık mantık tasarımı tamamen aşamalı olarak kaldırılmaz. Ayrık bir mantık IC'sinin tercih edilebilir olduğu uygulamalar her zaman olacaktır. Belirtildiği gibi, hız büyük bir avantajdır, ancak birçok uygulamada hız farkı o kadar da önemli değildir.

Tasarım aşaması söz konusu olduğunda, devrenin farklı noktalarında sadece 2 veya 3 basit mantık işlevi gerçekleştirmesi gereken bir devre tasarlarsanız, sadece yazmak zorunda kalmadan tasarım süresinden tasarruf etmek için ayrı kapıları kullanmak daha iyi olacaktır. program da.

Daha karmaşık mantık işlevleri yapması gereken sistemler için, her zaman bir doğruluk tablosu üzerinde çalışmak, daha sonra küçük bir program yazabileceğiniz zaman hangi mantık kapılarının nereye gittiğini bulmak saçma olurdu. Genellikle, daha fazla girdi, daha fazla kapıya ihtiyaç duyulduğu ve ayrık tasarımın daha uzun sürdüğü anlamına gelir.

Ayrık mantığın gerçekten avantajı olduğu yer öğrenmedir. İlk olarak mantık tasarımını ve kapıların nasıl çalıştığını vb. Öğrendiğinizde, gerçek mantık kapıları ile başa çıkmak ve ayrık parçalarla farklı işlevler tasarlamak harika. Temelleri anlamak için her zaman iyi bir fikir. Bu nedenle, ayrık mantığın bu dünyada her zaman bir yeri olacaktır. Tüketici elektroniği gelince? Gelecek kesinlikle programlanabilir.


Basit cevap, iyi puan ve tüm soruları cevaplar! Teşekkürler!
Meraklı

Elektronik arka planı olan bir programcı olarak, doğruluk tablonuzu çalışmazsanız, doğruluk tablonuzu oluşturmak için zamana ihtiyaç duyacağınız için programınızda hata ayıklamak için fazla zaman harcayacağınızı belirtmek isterim. Doğruluk tablonuz programınız için güzel bir dokümantasyon olacaktır.
chthon

Evet, katılıyorum, doğruluk tabloları her zaman yararlıdır, bu senaryo ile biraz daha alakalı hale getirmek için cevabı düzenleyeceğim
MCG

1
Ayrık mantık kullanarak uyguladığım son tasarım, 5V mantık ve nispeten basit bir program gereksinimi kullanarak "mümkün olduğunca düşük" bir zamanlama gereksinimine sahipti. Güzel bir parlak FPGA'lara bir ton para harcayabilir veya sadece "eski okul" yolunu yapabilirim. Askeri spec cips pikosaniye tam gerilim salıncak geçirir, hamamböceği ile birlikte nükleer kıyamet hayatta ve aynı zamanda neredeyse hiçbir maliyeti. Her zaman ayrık mantık için bir yer olacaktır.
Landak

14

Hiç profesyonel bir elektronik mühendisi değilim (aslında sadece yeni başlayanlar), ancak birkaç sentim özel ayrık mantık IC'lerinin sadece zamanlama önemliyse veya programlanabilir mantık kullanmama şartıysa kullanılması gerektiğidir.

Mikrodenetleyici ile çok daha karmaşık bir mantık uygulayabilirsiniz ve daha esnektir. Ayrıca donanımı değiştirmek zorunda kalmadan yeniden programlanabilir.

Ayrıca, yazılımın takip edemeyeceği çok hızlı zamanlamalar gerektiğinde, özel mantık IC'leri kullanılabilir. Ancak bir alarm sistemi için bu gereksiz görünmektedir (nanosaniye tepki süresine gerek yoktur).

Avantajları / dezavantajları yorumum aşağıdadır:

                          Discrete logic (ICs)      Programmable logic/
                                                    (Microcontrollers)
 Nanosecond speed                  x                         -
 Just a few 'operators' needed     x                         -
 No tool chain needed              x                         -
 Cost Efficiency *                 -                         x
 PCB / proto size                  -                         x
 Flexibility for changing          -                         x
 Production cost                   -                         x
 Possibility to extend features    -                         x

* Assuming more than a few (different) logic functions needed

1
Peki hız sizin görüşünüze göre en büyük avantaj mı? Cevap için +1, özellikle masanızı seviyorum!
Meraklı

1
Evet, donanım yazılımdan daha hızlıdır, bu yüzden gerçekten hıza ihtiyacınız varsa, donanım IC'lerine ihtiyacınız vardır, aksi takdirde 'yazılım' (mikrodenetleyici) çözümleri tercih ederim. Btw, günümüzde daha karmaşık hıza duyarlı çözümler için FPGA'lar kullanmaktadır.
Michel Keijzers

1
Bir FPGA kullanmayı planlamıyordum, baş mühendis şimdi donanıma karar verdi! Sadece herhangi bir avantajın nerede olduğunu görmek için meraktan soruyordum. Bu arada, başka cevap gelmezse cevabınızı zamanında kabul edeceğim. Sadece erken kabul etmeden önce başkalarına cevap verme şansı vermek istiyorum!
Meraklı

5
Bence baş mühendisiniz doğru kararları verdi. Bir alarm sistemi tipik olarak genişletilecek (çoklu kaynaklardan daha fazla girdi almak ve üzerinde hareket etmek), hatta bunların kombinasyonlarını yapmak ve daha sonra otomatik bir SMS göndermek, bir bip sesi / alarm sinyali sinyal vermek, belki de bazı kayıtlar gibi işlevsellik eklemek sensörler vs.
Michel Keijzers

2
@MichelKeijzers modern FPGA'lar geleneksel ayrık mantık IC'leriyle başarabileceğiniz her şeyden önemli ölçüde daha hızlıdır.
Tustique

10

Ticari bir ürün yaratacaksanız, "programlanabilir" veya daha kıdemli bir meslektaşım önerdiği için bir tasarım seçmemelisiniz. Bunun yerine , her bir tasarımla ilişkili riskleri ve maliyetleri tahmin etmeli ve en düşük maliyet ve kabul edilebilir risk düzeyine sahip olanı seçmelisiniz. Başlangıç ​​için:

  • bireysel bileşenlerin fiyatı maliyete katkıda bulunur
  • Gerekli PCB boyutu ve karmaşıklığı maliyete katkıda bulunur
  • gerekli tasarım çabası ve araçları maliyete katkıda bulunur
  • Gerekli test ve belgelendirme maliyete katkıda bulunur

  • esneklik eksikliği (örn. yeni bir PCB gerektiren ayrık mantıktaki değişiklikler) bir risktir
  • ekibinizde belirli bir teknoloji ile deneyim eksikliği bir risktir
  • proje gereksinimlerini karşılayamama (örn. hedef güç tüketimi) bir risktir

Özel projeniz için ayrık mantık IC'leri tedarik etmek daha ucuzsa, ekibiniz bu tür tasarım konusunda deneyime sahiptir ve esnekliğin eksikliğinin kritik olmadığını düşünürseniz, ayrık mantığı kullanmamanız için hiçbir neden yoktur.


Çok doğru. Öyleyse ayrık mantık için bir gelecek var mı?
Meraklı

4
@Curious Hala burada ve orada temel mantık fonksiyonlarını uygulamak için tek tek BJT ve MOSFET'lerin kullanıldığını görüyorum. Ayrık mantık, bazı basit görevler için yararlı bir soyutlamadır, bu yüzden tamamen ortadan kalkmayacağına inanıyorum.
Dmitry Grigoryev

7

Diğer cevapların unuttuğu bir husus da güvenlik. Ayrık mantık devreleri, çok daha karmaşık mikrodenetleyici tasarımlarından çok daha güvenilirdir. Bir hidrojen prototip otomobilinin inşasına yardım ettim, tüm güvenlik devreleri ayrık mantık kullanılarak tasarlandı. Güvenlik ve güvenilirlik, bir alarm sistemi tasarlamayı düşünmek isteyebileceğiniz bir özelliktir.


3
Bu genellikle doğru değildir. Bir işlemci üzerinde korkunç derecede güvensiz bir ayrık sistem ve inanılmaz derecede güvenli ve sağlam bir sistem inşa edilebilir. Ekibinizin bir işlemci kullanma becerisi yoktu, ancak bu onu doğal olarak güvensiz yapmıyor. Ayrı bir sistemde pratik olmayacak bir işlemcide büyük çoğaltma yapabilirsiniz.
awjlogan

1
@awjlogan Bunların her ikisini de yapabilirsiniz, ancak ayrık mantık acil durum durdurmanız hiçbir zaman etkinleştirilemez çünkü beklenmedik bir durum bunun başka bir bölümünü sonsuz döngüye gönderir. Güvenlik açısından kritik sistemler mümkün olduğunca basit olmalıdır .
user253751

1
@immibis İşlemcinin doğasında olmayan kötü tasarım ve teknik özellikler. Bir sistemde, ayrık, FPGA veya başka bir şeyde her zaman bir hata olasılığı vardır. Arızalı kasalar olabildiğince basit olmalı, bu da ayrık olmaları gerektiği anlamına gelmiyor.
awjlogan

5
@immibis Ayrık mantık, yalnızca lehimleme hataları nedeniyle belirli bir tasarım boyutunu geçen MCU'lardan daha az güvenilir hale gelir. Ayrık mantık tetikleyiciler içeriyorsa, yazılımda yaptığınız gibi yasak sistem durumlarıyla tamamen aynı soruna sahip olursunuz.
Dmitry Grigoryev

4
Ayrık parçalar bir arıza durumunda daha öngörülebilir hareket edebilir ...
rackandboneman

4

İtiraf etmeliyim ki, ne zaman karmaşık bir kombinatoryal mantık ve bazı zamanlayıcılar yapmak zorunda kalsam, hiç ayrık mantıkla uğraşmıyorum ama her zaman bir ATtiny için minimal bir derleyici programını kodluyorum (daha iyi isterseniz bir PIC kullanın).

Kombinatoryal mantık maksimum 20 satır montajcıdır (birkaç arama tablosu). Her yazılım zamanlayıcısı 10 satır daha ekler. Donanım zamanlayıcıları daha da az. İhtiyacınız olursa, bir A / D dönüştürücü, Karşılaştırıcı, PWM jenerasyonuna sahip olmanın avantajını da elde edersiniz.

Tek dezavantajı, bu kısmı flaş etmek zorunda olmanızdı. Bazen bu bir gösteri durdurucudur, ancak nadiren durum söz konusudur. Büyük avantaj, tahtada çok daha az alana ihtiyacınız olması, yönlendirme çok daha basittir ve gerekirse mantık işlevlerini kolayca değiştirebilirsiniz.


Ayrı mantık IC'leri için kalan kullanım durumu, işlerin 1µs'den daha hızlı çalışması gerektiğidir.


Biraz konu dışı, ancak ATTiny x17 / x16 parçaları iki adet 3 girişli LUT'a sahiptir. Gerçekten çok kullanışlı!
awjlogan

4

Son üründe - bir tüketici cihazından bahsediyorsak, muhtemelen ayrık mantığa pek fazla avantaj yoktur. İstisnalar, olumsuz koşullara karşı çok sağlam olması gereken veya tamamen karakterize edilmesi çok kolay olan (gizli hataların gerçek karmaşıklığı ve potansiyeli, bellenim tabanlı bir şeyle çok daha yüksektir) veya çoktan yeniden oluşturmak istediğiniz bir şey olacaktır. onlarca yıl boyunca benzer parçalar (teknoloji harfleri değişse bile 74xx ayak izi çok yavaş değişiyor :)).

Gerçekte takdir yetkileriyle daha iyi yapabileceğiniz bir şey, zamanlama, eşzamansız mantıktır (bir şeyin tamamlanması hemen başka bir şeyi tetikler). Bu tür tasarımların meşruiyeti kutsal bir savaş konusudur. Endişelenme, eşzamanlı insanlar seni dövmek isteyecekler, ama sadece saatlerini götürmelisin, saçma sapan sonsuza kadar bekleyecekler.

Tasarım metodolojisi söz konusu olduğunda, tasarımcının tercih edilen stiline bağlı olduğunu söyleyebilirim - kelimenin tam anlamıyla canlı olarak yeniden tutabileceğiniz bir CPLD cihazı ("bir şey tıklanıncaya kadar bu tellere iğneleyelim"), ve bir ana bilgisayardan güç altında (bir kabloya bir pime dokunduğunuzda simüle edilmiş kıvılcımlarla, tercihen ambiyans için) kesinlikle ayrık mantığı tercih eden insanlar tarafından sevilir :)

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.