Professional Documents
Culture Documents
+ Bộ vi xử lý tìm ứng dụng nơi tác vụ không được chỉ định như phát triển phần
mềm, trò chơi, chỉnh sửa ảnh, tạo tài liệu, v.v.
Trong những trường hợp như vậy, mối quan hệ giữa đầu vào và đầu ra không được
xác định.
• Họ cần lượng tài nguyên cao như RAM, ROM, v.v.
• Bộ vi xử lý không thể sử dụng độc lập.
Họ cần các thiết bị ngoại vi khác như RAM, ROM, cổng I/O, v.v. và do đó, một hệ
thống được thiết kế xung quanh một bộ vi xử lý là khá tốn kém.
• Bộ vi xử lý hoạt động trên 1GHz như họ thực hiện các nhiệm vụ phức tạp.
+ Kiến trúc RISC so với CISC
• Máy CISC (Complex Instruction Set Computing): Máy tính có
phức tạp kiến trúc lệnh
– các từ lệnh có độ dài thay đổi, nghĩa là, với số bit khác nhau, nhỏ kích thước mã
và nhiều hướng dẫn phức tạp có xung nhịp ở cấp độ máy.
– hoàn thành càng nhiều càng tốt với mỗi hướng dẫn, để tạo ra các chương trình
đơn giản -> hỗ trợ công việc của người lập trình trong khi tăng độ phức tạp của
phần cứng.
• Máy RISC (Reduced Instruction Set Computing): Máy tính có lệnh thu gọn kiến
trúc
– hướng dẫn đơn giản đơn giản hóa cấu trúc phần cứng, nhưng chương trình dài
hơn
– Thiết kế kỳ vọng rằng bất kỳ việc thực hiện lệnh đơn lẻ nào cũng được giảm
thiểu—ở mức gần một chu kỳ bộ nhớ dữ liệu đơn lẻ—khi so sánh với hệ thống
CISC.
• Người ta thường chấp nhận rằng bộ vi điều khiển RISC nhanh hơn, mặc dù điều
này có thể không nhất thiết đúng cho tất cả các hướng dẫn
• ARM: Máy RISC tiên tiến
+ Cấu trúc CPU • CPU: Central Processing Unit (Bộ xử lý trung tâm)
– ALU (Khối số học - logic)
– CU (Khối điều khiển)
– Registers (Tập các thanh ghi)
– BIL + Internal buses
• Software Components
– Instruction Set (Tập lệnh)
– Addressing Modes (các chế độ định địa chỉ)
+ Chức năng các khối bên trong CPU
• CU (Control Unit) - Khối điều khiển
– là một FSM (máy trạng thái) để điều khiển hoạt động của CPU
– thực hiện chu trình 3 bước Fetch-Decode-Execute (Nạp lệnh-Giải mã lệnh-Thực
hiện lệnh) (kiến trúc pipelined)
• ALU (Arithmetic Logic Unit) – Khối số học và logic
– thực hiện các phép toán số học và logic
– nhận dữ liệu đầu vào từ các thanh ghi và trả kết quả về (các) thanh ghi
• Registers – Tập hợp các thanh ghi
– Vai trò như bộ nhớ tạm thời để lưu trữ dữ liệu, địa chỉ các vùng nhớ, thông tin
điều khiển để CPU hoạt động. Thanh ghi là đơn vị bộ nhớ nhanh nhất (fastes) trong
hệ thống máy tính, và cũng có dung lượng (capacity) nhỏ nhất (so sánh với các loại
bộ nhớ khác như bộ nhớ chương trình / dữ liệu)
– 2 nhóm: các thanh ghi đa mục đích (GPRs), các thanh ghi chức năng đặc biệt
• Internal Bus – Kết nối các khối bên trong CPU
• BIL (Bus Interface Logic) – Điều khiển kết nối giữa system bus (address, data,
control) với internal bus
+ Các thanh ghi bên trong CPU
• IR (Instruction Register – Thanh ghi lệnh): chứa lệnh đang được thực hiện
• PC (Program Counter: Thanh ghi bộ đếm chương trình): chứa địa chỉ của lệnh
tiếp theo sẽ được CPU thực hiện. PC được tự động tăng lên chỉ đến địa chỉ lệnh
tiếp theo mỗi khi một lệnh được fetch và decode. Trong lệnh nhảy (JUMP) PC
được gán giá trị địa chỉ lệnh do lệnh nhảy quy định.
• SP (Stack Pointer – Con trỏ ngăn xếp): chứa địa chỉ để CPU quay về sau khi thực
hiện một chương trình con (hàm). SP thường chỉ đỉnh của STACK
• PSR (Program Status Register – Thanh ghi trạng thái chương trình): lưu trữ trạng
thái thực hiện chương trình thông qua các bit được định nghĩa bên trong thanh ghi
• Các thanh ghi đa mục đích: dùng lưu trữ dữ liệu, địa chỉ, biến…
• Các thanh ghi khác (tùy mỗi họ VXL)
+ Memory Organization (Tổ chức bộ nhớ)
• Các loại bộ nhớ
• Memory Banks
• Little-Endian vs Big-Endian
• Von Neumann vs Harvard Architectures
• Memory & CPU data exchange
• Memory Map
• ARM Cortex-M4 Memory Map
+ Little Endian and Big Endian
• Little-Endian ordering: Khi dữ liệu có trên 1 byte thì byte thấp nằm ở vị trí địa
chỉ thấp, byte cao nằm ở vị trí địa chỉ cao trong bộ nhớ.
• Big-Endian ordering: Ngược lại, byte thấp nằm ở vị trí địa chỉ cao và byte cao
nằm ở địa chỉ thấp.
+ IO Subsystem Organization
• Tổ chức vào ra (Input/Output) của hệ VXL bao gồm tất cả các thiết bị (ngoại vi)
kết nối với bus hệ thống (trừ CPU và bộ nhớ):
– Thiết bị vào, thiết bị ra, thiết bị vào/ra
– Các thanh ghi chức năng đặc biệt hoặc các phần cứng đặc biệt để quản lý hoạt
động vào/ra của hệ VXL
• Input transaction: CPU <- Device
– Switches, keyboard, barcode reader, position encoder, ADC, etc.
• Output transaction: CPU -> Device
– LED display, LCD display, buzzer, motor interface, DAC, etc.
• Input + Output device: CPU <-> Device
– Serial interface (UART), bi-directional parallel ports,
– mass storage devices (flash memory cards, hard disk interfaces)
+ Các thiết bị vào ra tiêu biểu
• Timer (Bộ định thời): Các timer có thể được lập trình cho khoảng thời gian định
trước. Ví dụ: để đo khoảng thời gian giữa hai sự kiện, tạo sự kiện tại các khoảng
thời gian xác định, hoặc tạo tín hiệu ở tần số xác định, ứng dụng cho bộ điều biến
độ rộng xung (PWM) và nhiều sự kiện khác
. • Watch-Dog-Timer (WDT - Đồng hồ bấm giờ): Đây là một loại timer đặc biệt,
được sử dụng như một thiết bị an toàn. WDT sẽ reset hệ thống (chương trình) nếu
không nhận được tín hiệu do chương trình tạo ra sau mỗi đơn vị thời gian X, một
tính năng hữu ích trong một số ứng dụng đề phòng trường hợp chương trình bị
treo. WDT cũng có thể được cấu hình để tự tạo tín hiệu ngắt trong khoảng thời
gian đều đặn.
• Communication Interfaces (Các giao diện truyền thông): bao gồm UART, SPI,
USB, I2C, etc.
• ADC (Bộ chuyển đổi tương tự - số)
• DAC (Bộ chuyển đổi số - tương tự)
• Mạch nạp và debug chương trình: được sử dụng trong quá trình phát triển hệ
thống, để tải chương trình vào MCU và hỗ trợ trong quá trình gỡ lỗi (debug).
Chúng bao gồm màn hình, trình gỡ lỗi nền và trình giả lập nhúng.
+ I/O Interface (Giao diện vào ra)
• Giao diện vào ra kết nối giữa thiết bị ngoại vi với bus hệ thống
• Bao gồm các thanh ghi để trao đổi dữ liệu (data), thông tin điều khiển (control)
và thông tin trạng thái (status) giữa CPU và thiết bị ngoại vi
• Có thể bao gồm các mạch giải mã địa chỉ để thực hiện việc điều khiển đến các
thiết bị ngoại vi cụ thể (tùy từng họ VXL/VĐK)
+ I/O-mapped I/O vs Memory-mapped I/O
• I/O-mapped I/O:
– Sử dụng các không gian địa chỉ tách biệt cho bộ nhớ (memory) và thiết bị ngoại
vi (I/O)
– cần phần cứng điều khiển điều khiển đặc biệt và các lệnh đặc biệt để CPU phân
biệt đang truy cập bộ nhớ (memory) hay ngoại vi (I/O)
– Ex: VXL Intel 80x86, Zilog Z80
• Memory-mapped I/O:
– Sử dụng chung một không gian địa chỉ cho cả bộ nhớ (memory) và thiết bị ngoại
vi (I/O) -> các thanh ghi của thiết bị ngoại vi được xem như một phần của bộ nhớ
– Được sử dụng trong thiết kế hệ thống nhúng hiện nay
Other Registers & Peripherals
• Hệ VXL có thể có những thanh ghi và/hoặc thiết bị khác không được nối ra bên
ngoài hoặc không được sử dụng như bộ nhớ để lưu trữ dữ liệu
• Bao gồm: các thanh ghi chức năng đặc biệt, các bộ định thời, etc.
• Liên quan đến hoạt động của hệ thống (CPU), quản lý năng lượng, etc.
Cấu trúc của một giao diện vào ra
• Control Register(s): Thanh ghi điều khiển
• Status Register(s): Thanh ghi trạng thái
• Data Registers(s): Thanh ghi dữ liệu
+Giao diện vào/ra song song & nối tiếp
• Trong hệ VXL, hầu hết các thiết bị ngoại vi kết nối với bus dữ liệu (data bus)
thông qua giao diện (kết nối) song song -> n-bit được truyền cùng lúc -> cần n dây
dẫn song song
• Riêng các I/O port có thể kết nối với các thiết bị ngoại vi bên ngoài hệ thống qua
các giao diện song song (parallel) hay nối tiếp (serial)
– Giao tiếp/Cổng song song (parallel I/O ports)
– Giao tiếp/Cổng nối tiếp (serial I/O ports)
• Giao tiếp nối tiếp: RS-232 (UART)
• Giao tiếp song song: ISA/EISA/PCI buses
• Ưu nhược điểm của các giao tiếp song song và nối tiếp
Giao tiếp song song:
Ưu điểm:
1. Tốc độ truyền dữ liệu cao: Giao tiếp song song cho phép truyền nhiều bit dữ
liệu cùng lúc, do đó tốc độ truyền dữ liệu nhanh hơn so với giao tiếp nối tiếp.
2. Độ tin cậy cao: Giao tiếp song song được thiết kế để truyền dữ liệu trên nhiều
đường truyền song song, do đó nó có khả năng khắc phục lỗi dữ liệu tốt hơn
so với giao tiếp nối tiếp.
3. Khả năng điều khiển: Giao tiếp song song cho phép thiết bị điều khiển các
thiết bị ngoại vi khác, ví dụ nhưmáy in, màn hình và bảng điều khiển, một cách
dễ dàng hơn.
Nhược điểm:
1. Đòi hỏi nhiều dây cáp: Giao tiếp song song đòi hỏi việc sử dụng nhiều dây cáp
để truyền dữ liệu trên nhiều đường truyền song song, do đó cần thiết kế mạch
điện phức tạp hơn.
2. Chi phí cao: Do yêu cầu nhiều dây cáp và mạch điện phức tạp hơn, giao tiếp
song song có chi phí cao hơn so với giao tiếp nối tiếp.
3. Độ dài cáp hạn chế: Giao tiếp song song có thể bị ảnh hưởng bởi độ dài của
cáp, do đó độ dài cáp phải được giới hạn để đảm bảo tín hiệu được đồng bộ
hóa.
Giao tiếp nối tiếp:
Ưu điểm:
1. Sử dụng ít cáp: Giao tiếp nối tiếp chỉ sử dụng một dây cáp để truyền dữ liệu,
do đó yêu cầu ít dây cáp hơn so với giao tiếp song song.
2. Chi phí thấp: Do yêu cầu ít dây cáp và mạch điện đơn giản hơn, giao tiếp nối
tiếp có chi phí thấp hơn so với giao tiếp song song.
3. Độ dài cáp dài: Giao tiếp nối tiếp có thể được sử dụng để truyền dữ liệu trên
các đường truyền có độ dài lớn hơn so với giao tiếp song song.
Nhược điểm:
1. Tốc độ truyền dữ liệu chậm: Giao tiếp nối tiếp chỉ truyền một bit dữ liệu tại
một thời điểm, do đó tốc độ truyền dữ liệu chậm hơn so với giao tiếp song
song.
2. Độ tin cậy thấp: Giao tiếp nối tiếp có thể dễ bị nhiễu và lỗi dữ liệu, do chỉ sử
dụng một dây cáp để truyền dữ liệu.
3. Khó điều khiển: Giao tiếp nối tiếp khó điều khiển các thiết bị ngoại vi khác, do
đó phải sử dụng các thiết bị điều khiển khác để điều khiển các thiết bị ngoại
vi.