Chương 1 trình bầy những khái quát cơ bản của vi điều khiển ARM, qua đó ta nắm được quá trình phát triển và hình thành vi điều khiển ARM, mô hình kiến trúc của vi điều khiển ARM và cấu trúc tập lệnh với rất nhiều ưu điểm như: tập lệnh 32 bit, cấu trúc load-store, cách tổ chức và thực thi tập lệnh của ARM dưới dạng kiến trúc đường ống và tập lệnh trực giao, hầu hết tất cả các lệnh đều cho phép thực thi có điều kiện và thực thi trong một chu kỳ đơn. Với các đặc tính kỹ thuật đặc trưng này thì vi điều khiển ARM là một trong những vi điều khiển có tốc độ xử lý, hiệu suất thực thi cao và khả năng tiêu thụ năng lượng ít nhất vào thời điểm hiện nay. --------------------------------- LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com - 17 - CHƢƠNG 2 GIAO TIẾP VỚI VI ĐIỀU KHIỂN ARM 2.1 Mô hình giao tiếp trong vi điều khiển ARM Vi điều khiển ARM là một hệ thống có chứa lõi vi xử lý ARM với các giao tiếp hỗ trợ bên trong [6]. Vi điều khiển ARM được thực thi trên hệ thống kiến trúc các bus truyền dữ liệu đa chức năng của vi điều khiển.
Bao gồm bộ xử lý ARM kết nối qua hệ thống bus truyền dữ liệu hiệu suất cao để đồng bộ nhanh với SRAM, các bus giao tiếp ngoài, và cầu nối tới các bus truyền ngoại vi công suất thấp, được mô tả trong hình 2. Thiết bị ngoại vi bên ngoài được xây dựng từ các thiết bị riêng và tùy theo ứng dụng người dùng.1: Mô hình giao tiếp trong vi điều khiển ARM. Các khối chức năng trong vi điều khiển ARM bao gồm: - Bộ xử lý ARM; - Bộ điều khiển ngắt; - Bộ phân xử bus truyền hiệu suất cao (AHB - Advanced High-performance Bus); - Bộ điều khiển bộ nhớ; - SRAM; - EPROM hoặc Flash; LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com - 18 - - DRAM; - Cầu nối AHB – APB (Advanced Peripheral Bus: Bus truyền ngoại vi tối ưu) - Cầu nối ngoài AHB; - Bộ đếm/định thời; - Khối SPI (Serial Peripheral Interface): Khối giao tiếp các thiết bị ngoại vi nối tiếp; - Khối Serial UART (Serial Universal Asynchronous Receiver/Transmitter): Khối giao tiếp nối tiếp truyền/thu không đồng bộ đa năng.2 Các giao tiếp cơ bản trong vi điều khiển ARM 2.1 Giao tiếp với bộ nhớ Giao tiếp với bộ nhớ trong vi điều khiển ARM [7] có tính năng truy xuất dữ liệu rất nhanh. Trong vi điều khiển ARM, bộ nhớ nội bộ có thể có các dạng bộ nhớ như: SSRAM, SRAM, DRAM, EPROM/Flash.
Bản đồ bộ nhớ chính được mô tả trong hình 2.2: Sự phân tách hai trạng thái trên bản đồ bộ nhớ. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com - 19 - Bản đồ bộ nhớ có hai trạng thái: - Trạng thái Reset. - Trạng thái thông thường: sau khi đã được ánh xạ các thanh ghi định địa chỉ vào. Trong cấu hình thông thường (đã được định địa chỉ), ký hiệu vùng RAM là từ địa chỉ 0x0 đến 0x04000000.
Trong cấu hình Reset, ROM được ánh xạ vào không gian được ký hiệu với khả năng truy cập RAM ở địa chỉ cao hơn. Khi truy cập vào không gian bộ nhớ 0x10000000, bộ xử lý sẽ hủy bỏ các trường hợp ngoại lệ (sai địa chỉ). Vùng RAM Vùng RAM được chia thành bốn khối chính được mô tả trong hình 2. Từ phần 16MB dành riêng cho DRAM, SRAM, SSRAM.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com - 20 - Khối 16MB (khởi điểm ở 0x0) là vùng ROM, có các điểm ký hiệu tới cấu hình cơ sở của ROM, hoặc có các vùng xếp chồng lên RAM (trong cấu hình thông thường). Bảng địa chỉ trên vùng RAM trong cấu hình thông thường và Reset được mô tả trong bảng 2.1: Các địa chỉ trên vùng RAM. Cấu hình thông thƣờng Cấu hình Reset Địa chỉ Địa chỉ tƣơng ứng Địa chỉ Địa chỉ tƣơng ứng 0x00000000 0x01000000 0x00000000 0x04000000 0x00002000 0x02002000 0x00080000 0x03080000 Trong liên kết định địa chỉ, theo mặc định khi ở cấu hình Reset, EPROM và Flash ở dưới đáy của địa chỉ bản đồ nhớ. Nếu thanh ghi định địa chỉ được ghi vào, tín hiệu định địa chỉ sẽ là mức cao và bộ giải mã chuyển sang bản đồ bộ nhớ thông thường, khi đó RAM sẽ ở dưới cùng.
Nếu khi hoạt động mà hệ thống không có EPROM hay Flash, hoặc nếu muốn khởi động từ RAM, phải gỡ liên kết định địa chỉ. Tín hiệu định địa chỉ sẽ luôn ở mức cao, và việc khởi động với SSRAM sẽ ở dưới đáy của địa chỉ bản đồ nhớ. Các bộ nhớ trong vùng RAM có chức năng: - SSRAM Đồng bộ SRAM (SSRAM) được dùng để cung cấp bộ nhớ chu kỳ đơn. Thiết bị SSRAM tổ chức dưới dạng 32KB x 32 bit.
Vùng này được sử dụng cho các trình giới hạn thời gian, như là các bộ điều khiển ngắt. SSRAM thường ở địa chỉ 0, cấu hình của bộ nhớ này là không bắt buộc. - SRAM SRAM được dùng để thể hiện các giản đồ bộ nhớ khác nhau. SRAM cho phép điều khiển bốn mức vật lý 128KB x 8 bit để chia thành hai dãy logic của mỗi một mức 256KB.
Mỗi một dãy logic này có thể được định cấu hình 8, 16, hoặc 32 bit bộ nhớ mở rộng. SRAM mô phỏng bộ nhớ hệ thống này bằng cách chèn chính xác số trạng thái chờ. - DRAM DRAM cung cấp: Hỗ trợ chế độ tuần tự truy cập; Hỗ trợ các bước chuyển byte, halfword và word; Bộ điều khiển làm tươi DRAM; Tự động định lại cấu hình kích thước khối. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com - 21 - Vùng ROM Có một vùng được dành riêng cho ROM.
Vùng ROM giống như cả hai cấu hình thông thường và cấu hình Reset của bản đồ bộ nhớ, vùng ROM được mô tả như trong hình 2. 128 MB 0x08000000 ROM 64 MB 0x04000000 Hình 2. Khi Reset vi điều khiển ARM, ROM được xác định ở vị trí 0x0 và khi chuyển sang trạng thái thông thường thì RAM sẽ ở vị trí dưới cùng của bản đồ địa chỉ. EPROM/Flash EPROM/Flash có hai dạng, một cho 8 bit bộ nhớ mở rộng và một cho 16 bit bộ nhớ mở rộng.
Các bộ nhớ này có thể được truy cập cùng theo chuẩn EPROM hoặc theo chuẩn 5V Flash.2 Giao tiếp với bộ điều khiển ngắt Bộ điều khiển ngắt trong ARM [8] cung cấp giao tiếp phần mềm độc lập cho hệ thống ngắt. Các bit ngắt được định nghĩa cho yêu cầu chức năng cơ bản trong thiết kế hệ thống. Trong hệ thống ARM có hai mức ngắt: - FIQ (Fast Interrupt Request) dành cho ngắt nhanh. - IRQ (Interrupt Request) dành cho các ngắt chung.
FIQ được sử dụng ở tại bất kỳ thời điểm nào. Nó cung cấp ngắt với thời gian trễ thấp, giống như là một nguồn độc lập đảm bảo chương trình phục vụ ngắt có thể thực thi trực tiếp mà không cần sự quyết định của nguồn ngắt chính. Điều đó làm giảm bớt thời gian trễ ngắt như là các thanh ghi đặc biệt, các thanh ghi này dành cho các ngắt FIQ và dùng để tối đa hiệu suất. Các bộ điều khiển ngắt được chia ra để sử dụng cho FIQ và IRQ, chỉ khác ở vị trí một bit riêng được định rõ cho bộ điều khiển FIQ, các bit còn lại trong bộ điều khiển ngắt này dành cho nguồn ngắt độc lập trong 32 bit của bộ điều khiển IRQ và được mô tả trong hình 2.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.5: Các bộ điều khiển ngắt FIQ và IRQ. Bộ điều khiển ngắt sử dụng vị trí bit cho mỗi nguồn ngắt khác nhau và mỗi vị trí được định rõ bởi phần mềm chương trình ngắt, các kênh truyền thông và các bộ định thời. Bit 0 không được xác định trong bộ điều khiển IRQ, mặc dù vậy nó vẫn có thể được sử dụng chung tương tự nguồn ngắt như trong bộ điều khiển FIQ. Tất cả nguồn ngắt được đưa vào sẽ hoạt động ở mức cao, bất kỳ yêu cầu đảo hay chốt tác động đến phải được cung cấp tại nguồn ngắt chung.
Quyền ưu tiên trong sơ đồ phần cứng không được cung cấp, cũng không có bất kỳ dạng quyền ưu tiên véc tơ ngắt, tất cả các chức năng này có thể được cung cấp trong phần mềm. Thanh ghi ngắt chương trình cũng cung cấp tới ngắt chung dưới sự điều khiển của phần mềm. Đây là dạng sử dụng để giảm cấp từ ngắt FIQ thành ngắt IRQ. Bộ điều khiển ngắt cung cấp các trạng thái nguồn ngắt, trạng thái yêu cầu ngắt và thanh ghi cho phép ngắt.
Thanh ghi cho phép ngắt được dùng để quyết định một nguồn ngắt hoạt động nếu sinh ra một yêu cầu ngắt để hệ thống xử lý. Trạng thái nguồn ngắt chỉ xác định nếu nguồn ngắt tương thích ưu tiên hoạt động. Nguồn ngắt sẽ hoạt động ở mức cao, do đó một mức logic cao trong thanh ghi trạng thái nguồn chỉ báo nguồn ngắt hoạt động. Trạng thái yêu cầu ngắt được xác định nếu nguồn ngắt sinh ra một yêu cầu ngắt tới bộ xử lý.
Thanh ghi cho phép ngắt có cơ chế kép cho việc thiết lập và xóa các bit cho phép. Các bit thiết lập hay xóa này là độc lập và không liên quan gì đến các bit khác trong thanh ghi cho phép. Khi ghi vào vị trí thiết lập cho phép ngắt, mỗi một bit dữ liệu sẽ được thiết lập ở mức cao tương ứng với bit trong thanh ghi cho phép và tất cả các bit khác trong thanh LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com - 23 - ghi cho phép không bị ảnh hưởng. Khi ghi vào vị trí xóa trên thanh ghi cho phép nghĩa là dùng bit xóa đảo lại, không dùng các bit khác.
Một kênh của bộ điều khiển ngắt được mô tả trong hình 2.6: Sơ đồ một kênh của bộ điều khiển ngắt. Bộ điều khiển ngắt FIQ được dành riêng bit 0. Bộ điều khiển IRQ có số lượng lớn hơn, kích thước của bộ điều khiển này phụ thuộc vào hệ thống xử lý. Các thanh ghi điều khiển ngắt: Các thanh ghi sau được quy định cho cả hai bộ điều khiển ngắt FIQ và IRQ - Thanh ghi cho phép Trạng thái chỉ đọc.
Thanh ghi cho phép được dùng để chắc chắn nguồn ngắt đầu vào và xác định nguồn ngắt đầu vào được tác động sẽ tạo ra một yêu cầu ngắt đến bộ xử lý. Thanh ghi này là chỉ đọc và các giá trị của nó chỉ có thể thay đổi bởi các vị trí thiết lập hoặc xóa. Nếu các bit trong bộ điều khiển ngắt chưa được kích hoạt (thiết lập hoặc xóa) thì có nghĩa là các bit trong thanh ghi cho phép đó sẽ đọc nhưng với trạng thái không xác định.