gerçekten nedir: Mikrodenetleyici (uC), Çipte Sistem (SoC) ve Dijital Sinyal İşlemci (DSP)?


9

Asıl soru sonunda. Ama bunu tek başına okumak sana neden kafam karıştığını göstermeyebilir. Bu yazıyı bazı tanımlar, varsayımlar ve spekülasyonlarla başlayıp asıl soruyu sordum.

Ben her zaman farkı bildiğimi düşünüyorum ama şöyle bir soru aldığımda : "bir alıcı-verici ile bir alıcı-verici koyarsam, bu şimdi bir SoC mı?" Her şeyi karıştırdım ve nasıl cevap vereceğimi bilmiyorum. Bir uC'nin aslında bir SoC olduğu söylendiğinde hatırlıyorum . Ama ne kanıtı var? Ama arduino tek bir çipte değil! Atmeg işlemcisini her zaman "karttan" çıkarabilirim!

Çevrimiçi olarak kontrol ettiğimde, söylediklerimi doğrudan veya dolaylı olarak onaylayan veya bunlarla çelişen her türlü yanıtı alıyorum. Bu benim için her zaman kafa karıştırıcı ve bu terimleri gevşek ve bazen birbirinin yerine kullanan insanları ve liderlerini takip eden insanları pazarlamaktan başka hiçbir şeyi suçlamıyorum.

Bu üç terimin temel anlamını aramaya karar verdim: uC, SoC ve DSP. Örneğin, devrelerdeki gerilimler hakkında kafan karıştığımda, her zaman fizik temellerine geri dönüyorum, zemin gerçekten sıfır değil, sadece bir "referans" ve gerilimler "mutlak" değil, onlar "akrabalar". Bu beni her zaman doğru yöne yönlendiriyor. Ancak, uC hakkında konuşurken gidilecek bir temel yoktur. "mikro" "kontrolör" mikrometre ölçeğinde çok küçük bir kontrolördür. Ama nano denetleyici terimimiz yok, değil mi? Yani bu düşünme şekli yardımcı olmaz.

Cevaplamaya çalıştığım şeyler şunlardır:

  • uC, diğer çevre birimleri ve hafızası ile birlikte genel kullanım için bir işlem birimidir, değil mi?
  • SoC, bir "çip" üzerindeki tam bir "sistem" dir. Peki, tek bir yongaya hangi sistemi koyarsanız koyun, SoC değil mi?
  • DSP özellikle matematiksel işlemler olmak üzere özel kullanım için bir işleme birimidir, değil mi?

    şimdi

  • Bu, bir uC'deki her şeyin bir çipte olması gerektiği anlamına mı geliyor? çünkü evet ise, o zaman uC aslında bir SoC'dir. Belki küçük bir tane, ama öyle. Arduino ne olacak? Muhtemelen uC "tek bir çip üzerinde ise bir SoC olabilir, ancak bunu yapmak zorunda değildir (burada örnek olarak arduino kullanıyorum).

  • Yani arduino bir uC, eğer tüm bileşenlerini alıp başka bir panoya koyarsam ve örneğin karışıma XBEE eklersem. Hala bir uC, değil mi? Öyleyse ne zaman şimdi bir SoC olduğunu söyleyebiliriz? Sadece aynı şeyler bir tahtada toplanmak yerine tek bir yongaya konduğunda?

Şimdiye kadar yukarıdaki soruların bir şekilde kendilerine cevap verdiğini düşünüyorum, ancak devam etmek için onaylamak istiyorum. "Temel olarak", yonga veya kart "olabileceğini" düşünmeye çalıştığımda, sadece farklı bileşenleri bağlayan teller. ve bu noktada, bir bileşeni ne tanımlarsınız? Tek bir transistör mü yoksa ADC gibi bir devre mi? Ama oraya gitmek istemiyorum.

Bir sonraki soru, bu yazının gerçekte ne hakkında olduğudur:

  • Bir uC temelde bir SoC mıdır? Gereksinimlerinden birinin tüm sistemin genel amaçlı kullanım olduğu bir SoC özel durumu.
  • uC (internete göre) genel bir amaçtır ve DSP esas olarak gerçek dünyadan toplanan sinyalleri matematiksel olarak işlemektir. Ancak DSP hala bir "işlemci" ve bir uC de bir "işlemci" içeriyor. Sadece bir demet veya çevre birimi olan bir DSP koyabilir miyim (diyelim ki ADC ve DAC bunlar genellikle onunla birlikte kullanıldığından) ve karışıma bir uC diyebilir miyim? ya da bir SoC (şimdi karışım genel amaçlı değil ve bu yüzden uC diyemeyiz ama yine de bir SoC)

Ne dediğin gerçekten önemli değil, 'başka bir isme sahip bir gül tatlı gibi kokacak!' SoC bir satış terimidir, 'diğer insanlar size parçaları satar, ancak size tüm sistemi satıyoruz' anlamına gelir. uC genellikle bir uP + bellek ve çoğu zaman ADC gibidir. Bir DSP için optimize edilmiştir, buna inanır mısın, DSP ve her zaman bir donanım çarpanı vardır, ancak genellikle bu günlerde, program belleği ve bazen ADC'ler / DAC'ler, neredeyse bir SoC. Ancak büyük ölçüde, bunların çoğu diğerleri olarak tanımlanabilir. Terlemeyin, kesinlikle insanları vurmayın.
Neil_UK

2
Ben u kullanmak yaygın olarak biliyorum ve bunu kullanarak gerçek bir sorun yoktur, ama hiç bir µ oluşturmak, basarak AltGr + Mveya ⌘ + Mhile yapmak gerekir.
Sihirli Duman

1
"mikro" tarihsel bagajdır; "mikro" denetleyici, buzdolabı boyutlu "mini" bilgisayarlardan ve "" tüm bilgisayarlardan alınan "" bilgisayarlardan ayrılan "mikro" bilgisayardan gelir.
user253751

Yanıtlar:


11

uC = bağımsız bir işlem çipi: CPU, RAM, ROM, bazı çevre birimleri.

DSP = sinyal işleme için optimize edilmiş işlemci çipi (günümüzde çoğunlukla uC olan ayrı bir CPU olabilir). Genellikle hızlı MAC (çarpma-birikme), doyurucu matematik ve çoklu bellek arabirimleri vardır. Bundan en iyi şekilde yararlanmak için, aynı anda ne tür bir bellek erişiminin yapılabileceği gibi, genellikle onun özelliklerinin derinlemesine farkında olmanız gerekir. (Bu nedenle, genellikle üretici tarafından sağlanan ince ayarlı montaj kitaplıklarıyla kullanılır.) Genellikle büyük anılarla kullanılmak üzere belirlenmez (16 bit adres veriyolu genellikle yeterlidir).

SOC = ana işlemci yongasının dışında olan çevre birimlerini içeren işlemci çipi (çoğunlukla önbellek için biraz RAM içeren bir CPU). Bu tanım gereği hareketli bir hedeftir: günümüzün özelleştirilmiş SOC'larındaki işlevler yarın ana akım çiplerinde bulunabilir. Mevcut SOC'ler çoğunlukla Linux düzeyinde bir işletim sistemi çalıştırmak içindir ve RAM ve ROM dışında (genellikle bazı ROM'lar dahil olmasına rağmen, genellikle harici bir FLASH okumak için) böyle bir sistemde ihtiyacınız olan çoğu şeyi içerir.

Günümüzde SOC'lerde yaygın olan (ancak uC'lere giden yolu bulan) çevre birimlerine örnekler: Ethernet bağlantı noktaları, Ethernet anahtarlama yapısı, USB dahil. host & OTG, grafik motor (lar), mpeg kod çözme, kripto motoru, RAM ve FLASH arayüzleri.

Bir Arduino, tahta düzeyinde bir üründür, bu nedenle tanım gereği bir uC, DSP veya SOC değildir, ancak bir tane içerebilir. Temel Uno bir uC içerir.

Bir uC bir SOC değildir (bordeline vakalar olsa da): uC bağımsızdır ve (mevcut teknoloji seviyesinde) Linux düzeyinde işletim sistemleri çalıştırmak anlamına gelmez. Bir SOC bağımsız değildir (RAM ve ROM gerekir).

Sınırlar% 100 kalınlıkta değildir ve zaman içinde değişmektedir. En güncel CPU'ların De CPU'ları ve bellek arayüzleri dün DSP'leri bile kendi sahalarında bile kolayca aşar. Ancak günümüzde DSP'ler sinyal işleme yaparken daha genel purpsoe CPU'lardan daha hızlı ve / veya daha ucuz veya daha az güç tüketiyor. En son teknoloji ve talebi kullanarak en çekici çip yapmak üreticiler arasında bir yarış. Şu anda bu yukarıdaki 3 tatlı noktaya (artı genel amaçlı mikro işlemcilere) yol açmıştı, ancak bu zamanla değişecek (DSP'ler 10 yıl öncesine göre daha az popüler, IMO çünkü ses seviyesi çıkışı artık bir genel amaçlı CPU).

Bu günlerde daha yaygın olan belirli bir çip türü, bazı kablosuz arayüzlü uC (veya SOC). WiFi örnekleri için ESP8266 ve ESP32'yi ve LoraWan için RN2483'ü kontrol edin.


2

uC ve DSP'ler oldukça basit bir tanımlamaya sahiptir.

Bir uC, belleğe (uçucu ve uçucu olmayan) dahili olarak entegre edilmiş bir işleme çekirdeğidir. Bu, genellikle içinde bir miktar geçici belleğe sahip olan, ancak uçucu olmayan bir mikroişlemciye kıyasla.

DSP, bir uC'nin kapalı çekimi. DSP'ler genellikle tipik bir UC'den çok iyi analog örnekleme yeteneklerine sahiptir. DSP'ler ayrıca uC'den daha iyi matematik yeteneklerine sahiptir ve bu matematik yeteneklerini kullanmak için FFT veya otokorelasyon gibi birçok kütüphaneyle birlikte gelir.

SoC daha çok bir pazarlama masturbasyon terimidir. SoC, bir uC, tek veya neredeyse tek bir yonga çözümü yapmak için yeterli işlevselliğe sahip olduğunda kullanmaya çalıştıkları bir terimdir. SoC terimi, uC entegre grafik işleme ve grafik sürücülerini entegre ettiğinde bulunma eğilimindedir. Cep telefonlarındaki ARM çiplerini düşünün. Grafikleri birleştiriyorlar.


DSP'nin örneğin bir ADC içerdiğini mi söylüyorsunuz?
himura

@himura uC'nin ADC'leri var ama DSP'lerin gerçekten iyi ADC'leri var. Örneğin Arduino, 10 bit'te yaklaşık 10 kHz örnekleme hızına sahiptir. DSP olan dsPIC33, 10 bitte 1.1MHz örnekleme hızına sahiptir. Bu iki büyüklük sırası daha hızlı.
vini_i

DSP'nin herhangi bir ADC yeteneği olmayan yalnızca işlem birimi olduğunu düşündüm. Ama şimdi tam bir sistem gibi görünüyor. Teşekkürler
himura

1
Bence bu cevap yanlış. Dönüştürücüsü olmayan çok sayıda DSP çipi var. DSP ve genel amaçlı CPU arasındaki temel fark bellek mimarisidir. DSP'lerin paralel olarak erişilebilen birden fazla belleği vardır. Bkz. En.wikipedia.org/wiki/Harvard_architecture
Hilmar

@Hilmar, dönüştürücüsüz DSP'lerin bazı referanslarını verebilir misiniz? Bu noktayı beğendim
himura

0

SOC dediğimiz şey genellikle uC'den çok daha güçlü bir işlemci çekirdeğine sahiptir. Genellikle orada ARM çekirdeği bulabilirsiniz. Bugün üretilen Cortex A serisi gibi hemen hemen tüm "büyük" ARM işlemciler aslında SOC'lerdir. Linux gibi büyük işletim sistemlerini çalıştırmak için çok fazla RAM'e ihtiyacınız var, böylece SOC'ler modern SDRAM yongalarını destekleyen harici RAM denetleyicisine sahipler. Önyükleme yükleyicisini çalıştırmak ve çevre birimlerini ve SDRAM denetleyicisini başlatmak için yalnızca önyükleme aşamasında kullanılan az miktarda yerleşik statik RAM.

UC'ler genellikle yerleşik statik RAM (oldukça az miktarda) ile eksiksiz hepsi bir arada çözümlerdir. Küçük RAM ve MMU eksikliği, üzerlerinde büyük işletim sistemleri kullanılmasını önler. Bugün uC'lerin çoğunun 8 bit veya 32 bit çekirdeği vardır. Yalnızca eski uygulamalarda kullanılan 16 bit uC'ler. 32 bit uSc dönemi ARM M serisi çekirdeklerle başladı. Bu çekirdekler özellikle UC'ler için tasarlanmıştır ve talimatlar dışında büyük ARM'lerle çok az ortak noktası vardır (ARM M, ARM talimat setinin bir alt kümesi olan THUMB talimatlarını kullanır).

DSP terimi çekirdek mimariyle ilgilidir. DSP'ler birden fazla ALU'ya sahiptir ve VLIW (çok uzun komut kelimesi) komut kümeleri olarak adlandırılmıştır. VLIW komutu, farklı CPU alt sistemlerini hedefleyen bir dizi alt talimattan (yaklaşık 4) oluşur. Örneğin, bu kadar uzun bir komut, verileri bellekten önceden almak için bir talimat, özel çarpan-ALU'ya bir çarpma talimatı ve genel amaçlı ALU'ya aritmetik bir talimat içerebilir.

DSP'yi genel amaçlı uC olarak kullanabilirsiniz, ancak asıl amacı dijital veri işlemedir (sadece sinyaller değil, video da). Dijital filtreler, medya sıkıştırma / açma algoritmaları DSP paralel mimarisinden faydalanır.

Modern CPU çekirdeklerinde genellikle vektör talimatları şeklinde bir tür işletim sistemi "DSP uzantıları" bulunur (aynı aritmetik işlemi yaklaşık 8 farklı düzende gerçekleştirebilirsiniz). DSP'nin VLIW talimatlarından farklı bir şey.


“Bugün üretilen neredeyse tüm ARM işlemcileri aslında SOC'lerdir” gerçekten mi? LPC810 SOC gibi Cortex-M0 cipslerini düşünüyor musunuz?
Wouter van Ooijen

UC'ler hakkında konuşurken Cortex M serisinden ayrı olarak bahsetmiştim. Korteks M barizdir.
e_asphyx
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.