thực sự là gì: Vi điều khiển (uC), Hệ thống trên Chip (SoC) và Bộ xử lý tín hiệu số (DSP)?


9

Câu hỏi thực tế là ở cuối. Nhưng đọc nó một mình có thể không cho bạn thấy tại sao tôi bối rối. Tôi đã viết bài đăng này bắt đầu với một số định nghĩa, giả định và suy đoán và sau đó đặt câu hỏi thực tế.

Tôi luôn nghĩ rằng tôi biết sự khác biệt nhưng khi tôi nhận được một câu hỏi như: "nếu tôi đặt bộ thu phát với uC, thì bây giờ có phải là SoC không?" Tôi lộn xộn và tôi không biết trả lời thế nào. Tôi nhớ lại một lần tôi đã nói rằng một uC thực chất là một SoC . Nhưng tôi có bằng chứng gì? Nhưng arduino không nằm trên một con chip! Tôi có thể rút bộ xử lý Atmeg ra khỏi "bo mạch" bất cứ lúc nào!

Khi tôi kiểm tra trực tuyến, tôi nhận được tất cả các loại câu trả lời xác nhận hoặc mâu thuẫn với những gì tôi vừa nói trực tiếp hoặc gián tiếp. Điều này luôn gây nhầm lẫn cho tôi và tôi không đổ lỗi cho ai khác ngoài những người tiếp thị sử dụng các thuật ngữ này một cách lỏng lẻo và đôi khi có thể thay thế cho nhau, và những người đi theo sự dẫn dắt của họ.

Vì vậy, tôi quyết định tìm kiếm ý nghĩa cơ bản của ba thuật ngữ này: uC, SoC và DSP. Bởi vì, ví dụ, khi tôi bị nhầm lẫn về điện áp trong các mạch, tôi luôn quay trở lại các nguyên tắc cơ bản của vật lý, mặt đất không thực sự bằng không, nó chỉ là "tham chiếu" và điện áp không phải là "tuyệt đối", chúng là "họ hàng". Điều này luôn chỉ cho tôi đi đúng hướng. Nhưng không có cơ sở để đi khi nói về uC. "micro" "bộ điều khiển" là một bộ điều khiển nhỏ đến mức nằm trong thang đo micro mét. Nhưng chúng ta không có thuật ngữ điều khiển nano, phải không? Vì vậy, cách suy nghĩ này sẽ không giúp đỡ.

Những gì tôi đang cố gắng trả lời như sau:

  • uC là một đơn vị xử lý với các thiết bị ngoại vi và bộ nhớ khác để sử dụng chung, phải không?
  • SoC là một "hệ thống" đầy đủ trên một "con chip". Vì vậy, bất cứ hệ thống nào bạn đặt trên một con chip, đều là SoC, phải không?
  • DSP là một đơn vị xử lý để sử dụng cụ thể, chủ yếu là các hoạt động toán học, phải không?

    Hiện nay

  • Điều đó có nghĩa là tất cả mọi thứ trong một uC tất cả chúng đều được yêu cầu phải nằm trong một chip? bởi vì nếu có, thì uC thực tế là một SoC. Có thể là một nhỏ, nhưng nó là. Thế còn arduino. Có lẽ uC "có thể" là một SoC nếu nó nằm trên một chip đơn lẻ, nhưng không phải (tôi sử dụng arduino rất nhiều làm ví dụ ở đây).

  • Vì vậy, arduino là một uC, nếu tôi lấy tất cả các thành phần của nó và đặt chúng vào một bảng khác và tôi thêm XBEE vào hỗn hợp chẳng hạn. Nó vẫn là một uC, phải không? Vậy khi nào chúng ta nói rằng bây giờ nó là một SoC? Chỉ khi những thứ tương tự được đặt trong một con chip chứ không phải được thu thập trong một bảng?

Cho đến bây giờ tôi nghĩ rằng những câu hỏi trên bằng cách nào đó tự trả lời, nhưng tôi chỉ muốn xác nhận để tôi có thể tiếp tục. Khi tôi cố gắng nghĩ "về cơ bản", chip hoặc bảng "có thể" giống nhau, nó chỉ là dây kết nối các thành phần khác nhau. và tại thời điểm này, bạn định nghĩa một thành phần là gì? Nó là một bóng bán dẫn đơn hay một mạch như ADC? Nhưng tôi không muốn đến đó.

Câu hỏi tiếp theo là bài viết này thực sự là về cái gì:

  • Là một uC về cơ bản là một SoC? Một trường hợp đặc biệt của một SoC mà một trong những yêu cầu của nó là toàn bộ hệ thống được sử dụng cho mục đích chung.
  • uC là mục đích chung (theo internet) và DSP chủ yếu để xử lý các tín hiệu toán học được thu thập từ thế giới thực. Nhưng DSP vẫn là "bộ xử lý" và uC chứa "bộ xử lý". Tôi có thể đặt DSP với một bó hoặc các thiết bị ngoại vi không (giả sử ADC và DAC vì chúng thường được sử dụng với nó) và gọi hỗn hợp là uC? hoặc là một SoC (vì bây giờ hỗn hợp không phải là mục đích chung và do đó chúng ta không thể gọi nó là uC nhưng nó vẫn là SoC)

Nó không thực sự quan trọng với những gì bạn gọi nó, 'một bông hồng bởi bất kỳ tên nào khác sẽ có mùi ngọt ngào!' SoC là một thuật ngữ bán hàng, 'người khác bán cho bạn các bộ phận, nhưng chúng tôi bán cho bạn toàn bộ hệ thống' là những gì nó ngụ ý. uC thường giống như bộ nhớ uP + và thường là ADC. DSP được tối ưu hóa, bạn có tin tưởng nó không, DSP và luôn luôn có hệ số nhân phần cứng, nhưng thường ngày nay, bộ nhớ chương trình và đôi khi là ADC / DAC, gần như là SoC. Nhưng ở một mức độ lớn, hầu hết những người có thể được mô tả như những người khác. Đừng đổ mồ hôi, chắc chắn đừng đánh người khác.
Neil_UK

2
Tôi biết nó được sử dụng rộng rãi để sử dụng u và không có vấn đề thực sự khi sử dụng nó, nhưng bạn có bao giờ muốn tạo ra một bản vá, nhấn AltGr + Mhoặc ⌘ + Mnên thực hiện thủ thuật.
Khói ma thuật

1
"vi mô" là hành lý lịch sử; Bộ điều khiển "micro" đến từ máy tính "micro", được phân biệt với các máy tính "mini" có kích thước tủ lạnh và "" máy tính chiếm toàn bộ phòng.
dùng253751

Câu trả lời:


11

uC = chip xử lý độc lập: CPU, RAM, ROM, một số thiết bị ngoại vi.

DSP = chip xử lý (có thể là CPU riêng biệt, ngày nay chủ yếu là uC) được tối ưu hóa để xử lý tín hiệu. Thường có MAC nhanh (tích lũy nhân), toán học bão hòa và nhiều giao diện bộ nhớ. Để tận dụng tối đa nó, bạn thường cần nhận thức sâu sắc về đặc thù của nó, giống như loại truy cập bộ nhớ nào có thể được thực hiện cùng một lúc. (Do đó thường được sử dụng với các thư viện lắp ráp tinh chỉnh do nhà sản xuất cung cấp.) Thường không được sử dụng để có bộ nhớ lớn (bus địa chỉ 16 bit thường là đủ).

SOC = chip xử lý (chủ yếu là CPU, có thể có một số RAM để lưu vào bộ đệm) kết hợp các thiết bị ngoại vi được sử dụng bên ngoài chip xử lý chính. Điều này theo định nghĩa là một mục tiêu di động: các chức năng trong các SOC chuyên dụng ngày nay có thể được tìm thấy trong các chip chính thống. Các SOC hiện tại chủ yếu là để chạy HĐH cấp Linux và chứa hầu hết mọi thứ bạn cần trên một hệ thống như vậy, ngoại trừ RAM và ROM (mặc dù một số ROM thường được bao gồm, thường để đọc FLASH bên ngoài).

Ví dụ về các thiết bị ngoại vi phổ biến trong các SOC ngày nay (nhưng đang tìm đường vào uC's!): Cổng Ethernet, cấu trúc chuyển mạch Ethernet, USB kèm theo. máy chủ & OTG, công cụ đồ họa, giải mã mpeg, công cụ mã hóa, giao diện RAM & FLASH.

Arduino là một sản phẩm cấp bảng, do đó, theo định nghĩa nó không phải là uC, DSP hay SOC, mặc dù nó có thể chứa một sản phẩm. Uno cơ bản chứa một uC.

Một uC không phải là SOC (mặc dù có thể có các trường hợp bordeline): một uC là độc lập và (ở cấp độ công nghệ hiện tại) không có nghĩa là chạy các hệ điều hành cấp Linux. SOC không độc lập (cần RAM và ROM).

Các ranh giới không phải là 100% và đang thay đổi theo thời gian. Giao diện bộ nhớ và CPU của hầu hết các CPU hiện tại dễ dàng vượt qua DSP ngày hôm nay, ngay cả trên sân của chúng. Nhưng DSP ngày nay nhanh hơn, và / hoặc rẻ hơn hoặc ít ngốn điện hơn so với các CPU thông thường hơn khi xử lý tín hiệu. Đó là một cuộc đua giữa các nhà sản xuất để tạo ra con chip hấp dẫn nhất bằng cách sử dụng công nghệ và nhu cầu mới nhất. Hiện tại, điều này đã dẫn đến 3 điểm ngọt ngào trên (cộng với bộ vi xử lý đa năng), nhưng điều này sẽ thay đổi theo thời gian (DSP ít phổ biến hơn 10 năm trước, IMO vì thông lượng âm thanh giờ đây dễ dàng đạt được CPU đa năng).

Một loại chip cụ thể đang trở nên phổ biến hơn hiện nay là uC (hoặc SOC) với một số giao diện không dây. Kiểm tra ESP8266 và ESP32 để biết các ví dụ WiFi và RN2483 cho LoraWan.


2

uC và DSP có định nghĩa khá thẳng về phía trước.

Một uC là một lõi xử lý có bộ nhớ (dễ bay hơi và không bay hơi) được tích hợp bên trong. Điều này so với một bộ vi xử lý thường sẽ có một số bộ nhớ dễ bay hơi bên trong nhưng không có biến động.

DSP là một phát súng của uC. DSP thường có khả năng lấy mẫu tương tự thực sự tốt hơn so với uC thông thường. DSP cũng có khả năng toán học tốt hơn uC và đi kèm với rất nhiều thư viện như FFT hoặc autocorrelation để sử dụng các khả năng toán học đó.

SoC là một thuật ngữ tiếp thị nhiều hơn. SoC là một thuật ngữ mà họ cố gắng sử dụng khi một uC đã có đủ chức năng để tạo ra một giải pháp chip đơn hoặc gần. Thuật ngữ SoC có xu hướng được tìm thấy khi uC có tích hợp trình điều khiển đồ họa và trình điều khiển đồ họa trên tàu. Hãy nghĩ về các chip ARM trong điện thoại di động. Họ kết hợp đồ họa.


Vì vậy, bạn đang nói rằng một DSP cũng có chứa một ADC chẳng hạn?
himura

@himura uC có ADC nhưng DSP có ADC thực sự tốt. Ví dụ, Arduino có khả năng tốc độ lấy mẫu lên tới khoảng 10kHz tại 10 bit. DSPIC33 là DSP có khả năng lấy mẫu 1.1 MHz ở mức 10 bit. Đó là hai mệnh lệnh cường độ nhanh hơn.
vini_i

Tôi nghĩ DSP chỉ là đơn vị xử lý mà không có bất kỳ khả năng ADC nào. Nhưng nó có vẻ giống như một hệ thống hoàn chỉnh bây giờ. Cảm ơn
himura

1
Tôi nghĩ rằng câu trả lời này là sai. Có rất nhiều chip DSP không có bộ chuyển đổi. Sự khác biệt chính giữa DSP và CPU có mục đích chung là kiến ​​trúc bộ nhớ. DSP có nhiều bộ nhớ có thể được truy cập song song. Xem en.wikipedia.org/wiki/Harvard_arch architecture
Hilmar

@Hilmar bạn có thể vui lòng cung cấp một số tài liệu tham khảo về DSP mà không cần bộ chuyển đổi không? Tôi thích điểm này
himura

0

Những gì chúng ta gọi là SOC thường có lõi xử lý mạnh hơn nhiều so với uC. Thông thường bạn có thể tìm thấy lõi ARM ở đó. Hầu như tất cả các bộ xử lý ARM "lớn", như dòng Cortex A, được sản xuất ngày nay thực sự là SOC. Để chạy hệ điều hành lớn như Linux, bạn cần rất nhiều RAM để SOC có bộ điều khiển RAM ngoài hỗ trợ chip SDRAM hiện đại. Một lượng nhỏ RAM tĩnh tích hợp chỉ được sử dụng ở giai đoạn khởi động để chạy bộ tải khởi động và khởi tạo các thiết bị ngoại vi và bộ điều khiển SDRAM.

uC thường là các giải pháp tất cả trong một hoàn chỉnh với RAM tĩnh tích hợp (số lượng khá nhỏ). RAM nhỏ và thiếu MMU ngăn không cho sử dụng các hệ điều hành lớn trên chúng. Ngày nay, hầu hết các uC đều có lõi 8 bit hoặc 32 bit. UC 16 bit chỉ được sử dụng trong các ứng dụng cũ. Thời đại của uSc 32 bit bắt đầu với lõi ARM M series. Các lõi này được thiết kế đặc biệt cho uC và có rất ít điểm chung với các ARM lớn ngoại trừ bộ hướng dẫn (ARM M sử dụng các lệnh THUMB, một tập hợp con của tập lệnh ARM).

Thuật ngữ DSP là về kiến ​​trúc cốt lõi. DSP có nhiều hơn một ALU và có các tập lệnh được gọi là VLIW (từ lệnh rất dài). Lệnh VLIW bao gồm một số hướng dẫn phụ (khoảng 4) được nhắm mục tiêu đến các hệ thống con CPU khác nhau. Ví dụ, một lệnh dài như vậy có thể chứa một lệnh để tìm nạp dữ liệu từ bộ nhớ, một lệnh nhân cho số nhân chuyên biệt-ALU và một lệnh số học cho ALU mục đích chung.

Bạn có thể sử dụng DSP làm mục đích chung uC nhưng mục đích chính là xử lý dữ liệu kỹ thuật số (không chỉ tín hiệu, mà cả video). Bộ lọc kỹ thuật số, thuật toán nén / giải nén phương tiện có lợi ích từ kiến ​​trúc song song DSP.

Các lõi CPU hiện đại thường có một "phần mở rộng DSP" sắp xếp theo dạng lệnh vectơ (bạn có thể thực hiện cùng một phép toán số học trên một số, khoảng 8, toán tử). Đó là một cái gì đó khác với hướng dẫn VLIW DSP.


"Hầu như tất cả các bộ xử lý ARM được sản xuất ngày nay thực sự là SOC"? Bạn có xem xét các chip Cortex-M0 như LPC810 SOC không ??
Wouter van Ooijen

Tôi đã đề cập riêng đến dòng Cortex M trong khi nói về uCs. Cortex M là uCs rõ ràng.
e_asphyx
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.