CHƯƠNG 1: TỔNG QUAN «Ẽ BỆ THỦNG NHÍINB PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R, Z80, Z8. Điều này trái ngược với các loại máỵ tính để bàn, thường bị hạn chế với một vài kiến trúc máy tính nhất định. Các hệ thống nhúng có kích thước nhỏ và được thiết kế để hoạt động trong môi trường công nghiệp thường lựa chọn PC/104 và PC/104++ làm nền tảng. Những hệ thống này thường sử dụng DOS, Linux, NetBSD hoặc các hệ điểu hành nhúng thời gian thực như QNX hay VxWorks.
Còn các hệ thống nhúng có kích thước rất lớn thường sử dụng một cấu hình thông dụng là hệ thống on chip (System on a chip - SoC), một bo mạch tích hợp cho một ứng dụng cụ thể (An Application-Specific Integrated Circuit - ASIC). Sau đó nhân CPU được mua và thêm vào như một phần của thiết kế chip. Một chiến lược tương tự là sử dụng FPGA (Field-Programmable Gate Array) và lập trình cho nó với những thành phần nguyên lý thiết kế bao gồm cả CPU. Vi xử lý trong hệ thống nhúng Vi xử lý trong hệ thống nhúng có hai đơn vị thiết yếu:.
Đơn vị điều khiển dòng chảy của chương trình (CU- Program Flow Control Unit). • Đơn vị thực hiện (EU-Execution Unit). CU bao gồm một đơn vị nhận các chỉ thị từ bộ nhớ. EU có các mạch thực hiện các chỉ thị liên quan đến hoạt dộng truyền dữ liệu và chuyển đổi dữ liệu từ dạng này sang dạng khác.
EU bao gồm đơn vị tính toán và luận lý (ALU-Arithmetic and Logical Unit) và cũng là các mạch thực hiện các chỉ thị cho một nhiệm vụ kiểm soát chương trình như ngắt (interrupt), hoặc nhảy tới một chỉ thị khác. Một vi xử lý chạy và thực biện các chỉ thị theo tuần tự trong cùng một dữ liệu được nạp từ bộ nhớ. Các loại vi xử lý Vi xử lý có thể thuộc các thể loại sau: • Vi xử lý tổng quát (General Purpose Processor - GPP) ClưdliB 1: TỔH6 QOAN «Ẽ BỆ TIIỔH6 HIÚN6 LẶP TBlHi HỆ THỐN6 HHÚN6 VỜI BASPBEBBY > Vi xử lý (Microprocessor). > Vi điều khiển (Microcontroller).
> Vi xử lý nhúng (Embedded Processor). > Xử lý tín hiệu số (Digital Signal Processor). > Vi xử lý phương tiện truyền thông (Media Processor) • Bộ xử lý hệ thống ứng dụng cụ thể (ASSP-Application Specific System Processor). • Bộ vi xử lý chỉ thị ứng dụng cụ thể (ASIP-Application Specific Instruction Processors).
Vi xử lý (Microproceesor) Vi xử lý là một chip VLSI đơn có CPU. Ngoài ra, nó cũng có thể có các đơn vị khác như: Đơn vị sô học xử lý dâu châm động và các đơn vị đựờng ống (pipelining) giúp xử lý các chỉ thị nhanh hơn. Các vi xử lý thế hệ trước có chu kỳ nạp và thực hiện được điều khiển bởi một đồng hồ có tần số thấp ~ 1 MHz. Trong khi các bộ vi xử lý hiện tại hoạt động ở tần số đồng hồ nhanh hơn ( 2 GHz).
Vi điều khiển Vi điều khiển (Microcontroller) là một chip VLSI đơn (còn gọi là Vi máy tính-Microcomputer) mặc dù có giới hạn vê năng lực tính toán, khả năng tăng cường đầu vào/dầu ra và số đơn vị chức năng trên chip. Vi diều khiển Chip (Microcontroller Chip) Vi điểu khiển được sử dụng đặc biệt trong các hệ thông nhúng với các ứng dụng điều khiển thời gian thực trên một chip với bộ nhớ chương trình và các thiết bị. Bộ vi xử lý và vi điều khiển Bây giờ chúng ta hãy tìm hiểu về sự khác biệt đáng chú ý nhất giữa vi xử lý và vi điều khiển. 20 Vi xử lý Vi xử lý trong tự nhiên thực hiện đa nhiệm (multitasking) chúng có thể thực hiện nhiều tác vụ cùng một lúc.
Ví dụ: Với máy tính, chúng ta có thể chơi nhạc trong khi đó cùng xử lý văn bản trong trình soạn thảo văn bản. • RAM, ROM, Các cổng I/O và Timers có thể được thêm vào bên ngoài và có thể thay đổi số lượng. Các nhà thiết kế có thể quyết định số lượng bộ nhớ hoặc cổng I/O cần thiết. • Việc hỗ trợ bộ nhớ và cổng I/O ngoài làm cho hệ thống dựa trên bộ vi xử lý sẽ phức tạp và tốn kém hơn.bên ngoài đòi hỏi nhiều không gian hơn và mức tiêu thụ điện năng của chúng cao hơn Vi điều khiển (Microcontroller) • Thực hiện tác vụ theo định hướng.
Ví dụ, một máy giặt chỉ được dùng để giặt quần áo. • RAM, ROM, các cổng I/O Ports và Timers không thể được thêm vào bên ngoài. Các thành phần này được nhúng vào một chip và được cố định theo số. • Việc cố định cho bộ nhớ hoặc cổng I/O làm cho vi điều khiển là linh kiện lý tưởng cho một nhiệm vụ giới hạn nhưng cụ thể.
• Vi điểu khiển kích thước nhỏ và rẻ hơn vi xử lý. • Một hệ thống làm việc với vi điều* khiển tiêu thụ ít năng lượng và chiếm ít không gian Kiến trúc Vi điều khiển 8051 (1985-1990) làm việc với bus dữ liệu 8- bit. Vì vậy, nó có thể hỗ trợ bộ nhớ dữ liệu bên ngoài lên đến 64 K và bộ nhớ chương trình bên n ,oài 64 K là tốt nhất. Nói chung, 8051 có thể giải quyết 128 K bộ nhớ bên ngoài.
Khi dữ liệu và mã nằm trong các khối bộ nhớ khác nhau thì kiến trúc này được gọi là kiến trúc Harvard. Trong trường hợp dữ liệu và mã nằm trong cùng khối nhớ, thì kiến trúc được gọi là kiến trúc Von Neumann. Ỉ1 CliươHG 1: T ẩ m qUftN «Ẽ BỆ TBỠN6 NHÜN6 LẬP TBÎm HỆ THÛWQ NHÚN6 VƠI RftSPBEHRY Kiến trúc Von Neumann Kiến trúc Von Neumann lần đầu tiên được đề xuất bởi nhà khoa học máy tính John Von Neumann. Trong kiến trúc này, một đường dẫn hoặc bus tồn tại cho cả chỉ thị và dữ liệu.
Kết quả là, CPU thực hiện một thao tác trong một thời điểm, hoặc là lấy một lệnh từ bộ nhớ, hoặc thực hiện hoạt động đọc/ghi dữ liệu. Vì vậy, một lệnh tìm nạp và thao tác trên dữ liệu không thể xảy ra đồng thời và chia sẻ trêrì một bus chung. Kiến trúc Von-Neumann hỗ trợ phần cứng đdn giản. Nó cho phép sử dụng một bộ nhớ đdn kiểu tuần tự.
Quá trình xử lý ngày nay có tốc độ vượt trội so với thời gian truy cập bộ nhớ và chúng ta sử dụng bộ nhớ (bộ nhớ cache) cục bộ rất nhanh nhưng chiếm dung lượng nhỏ trên vi xử lý. Kiến trúc Harvard Kiến trúc Harvard cung cấp các bộ lưu trữ và bus tín hiệu riêng biệt cho các chỉ thị (lệnh) và dữ liệu. Kiến trúc này lưu trữ dữ liệu hoàn toàn nằm trong CPU và không có quyền truy cập vào lệnh lưu trữ cũng như là dữ liệu. Máy tính có các vùng bộ nhớ riêng biệt cho các lệnh chương trình và dữ liệu bằng cách sử dụng bus dữ liệu nội bộ, cho phép truy cập đồng thời cả lệnh và dữ liệu.
Các chương trình cần thiết để nạp bởi người vận hành, vi xử lý không thể tự khởi động. Trong một kiến trúc Harvard, không cần phải chia sẻ cho nhau bộ nhớ. Những điểm sau đây để phân biệt kiến trúc Von Neumann từ Kiến trúc Harvard. Kiến trúc Von-Neumann • Bộ nhớ đơn được chia sẻ bởi cả mã và dữ liệu.
• Vi xử lý cần lấy mã và dữ liệu riêng trong một chu kỳ đồng hồ trong chu kỳ đồng hồ khác. Vì vậy nó đòi hỏi hai chu kỳ đổng hổ. • Tốc độ cao hơn, do đó ít tốn thời gian hơn. • Đơn giản trong thiết kế.
22 LẬP TBiHH HỆ THỐNG NHÚNG vứl RASPBERRY CHƯƠNG 1: TỔH9 QI1AN «Ë HỆ THỐNG WHÚH6 Kiến trúc Harvard • Tách riêng bộ nhớ cho mã và dữ liệu. • Một chu kỳ đồng hồ là đủ và bus riêng biệt được sử dụng để truy cập mã và dữ liệu. • Tốc độ chậm, do đó tốn nhiều thời gian hơn. • Phức tạp trong thiết kế.
CISC và RISC CISC là một máy tính có cấu trúc lệnh phức tạp. Đó là một máy tính có thể giải quyết một số lượng lớn các lệnh. Vào đầu những năm 1980, các nhà thiết kế máy tính khuyến cáo rằng các máy tính nên sử dụng ít lệnh hơn với cấu trúc đơn giản để chúng có thể được thực hiện nhanh hơn trong CPU mà không cần sử dụng bộ nhớ. Các máy tính như vậy được phân loại là máy tính RISC (Reduced Instruction Set Computer).
CISC vs RISC Các điểm sau đây phân biệt giữa CISC từ RISC: CISC > Trình biên dịch có thiết kế đơn giản, xử lý các tập lệnh lớn hơn. Lập trình dễ. > Nhiều chế độ (mode) địa chỉ gây ra các định dạng lệnh phức tạp. > Các lệnh có chiều dài là biến.
> Chu kỳ đồng hồ trên mỗi giây (tần số) cao hơn. > Nhấn mạnh vào phần cứng. > Bộ điều khiển (CU) thực hiện tập lệnh lớn bằng cách sử dụng đơn vị vi-chương trinh (micro-program unit). > Các lệnh đọc và giải mã từ bộ nhớ từ đơn vị giải mã (decoder unit) thực hiện chậm hơn,.
> Pipelining là không thể. CIƯƯNt 1: TẩH6 qUAH VẺ IỆ TIÙN6 HHÚHS LẬP TBÌHB BỆ THỐHS (IHdHG VƠI BASPBEWBY RISC > Các lệnh nhỏ hơn. Lập trình khó. > Thiết kế trình biên dịch phức tạp.
> Rất ít chế độ (mode) địa chỉ, định dạng lệnh cố định. > Lệnh có chiều dài thay đổi. > Tần số xung đồng hồ thấp. > Nhấn mậnh vào phần mềm.
> Mỗi lệnh sẽ được thực hiện bởi phần cứng. > Thực hiện nhanh hơn, vì mỗi lệnh sẽ được thực hiện bằng phần cứng. > Cấu trúc Pipelining cho lệnh là có thể, xem xét chu kỳ đồng hồ duy nhất. • Thiết bị đẩu ra: Thu thập các chỉ thị từ bộ vi điều khiển và thực hiện tương ứng.
Công cụ phát triển Tương tự như các sản phẩm phần mềm khác, phần mềm hệ thống nhúng cũng được phát triển nhờ việc sử dụng các trình biên dịch (compilers), chương trình dịch hợp ngữ (assembler) hoặc các công cụ gỡ rối (debuggers). Tuy nhiên, các nhà thiết kế hệ thống nhúng có thể sử dụng một số công cụ chuyên dụng như: • Bộ gỡ rối mạch hoặc các chương trình mô phỏng (emulator). • Tiện ích để thêm các giá trị checksum hoặc CRC vào chương trình, giúp hệ thống nhúng có thể kiểm tra tính hợp lệ của chương trình đó. • Đối với các hệ thống xử lý tín hiệu số người phát triển hệ thông có thê sư dụng phần mềm Workbench như MathCad hoạc Mathematica de mo phỏng các phép toán • Các trình biên dịch và trình liên kết (linker) chuyên dụng được sử dụng để tối ưu hóa một thiết bị phần cứng.