Cấu trúc ARM viết tắt từ tên gốc là Advanced RISC Machine là một loại cấu trúc vi xử lý 32 bit và 64 bit kiểu RISC được sử dụng rộng rãi trong các thiết kế nhúng.. Chúng có đặc điểm tiết
Trang 1Chương 10 VI ĐIỀU KHIỂN ARM
NỘI DUNG:
– Giới thiệu chung về họ vi điều khiển ARM
– Cấu trúc bên trong
– Mô phỏng trên phần mềm
– Thí dụ trên board SAM7S256-Amtel
22/01/2017
Trang 2Cấu trúc ARM (viết tắt từ tên gốc là Advanced RISC Machine) là một loại cấu trúc vi xử lý 32 bit và 64 bit kiểu RISC được sử dụng rộng rãi trong các thiết kế nhúng Chúng có đặc điểm tiết kiệm năng lượng, vì vậy các bộ CPU ARM chiếm ưu thế trong các sản phẩm điện tử di động.
Các đặc tính của ARM bao gồm:
Trang 3ĐẶC ĐiỂM HỌ VI ĐiỀU KHIỂN ARM
• Là vi điều khiển tiên tiến xử lý 32 bít
• Được sử dụng rộng rãi trên các điện thoại
Trang 4ĐẶC ĐiỂM HỌ VI ĐiỀU KHIỂN ARM
• Cơ chế pipeline:
Trang 5CẤU TRÚC BÊN TRONG
• Gồm 15 thanh ghi
32 bít:
22/01/2017
Trang 6CẤU TRÚC BÊN TRONG
• Hỗ trợ xử lý 2 kiểu tập lệnh
• Tập lệnh ARM 32 bít
• Tập lệnh Thumb 16 bít
Trang 7CẤU TRÚC BÊN TRONG
• Ưu điểm của tập lệnh thunb
– Tập lệnh THUMB cho giá trị kết quả thấp hơn tập lệnh ARM nhưng mà các kết quả này
chiếm một tỷ lệ lớn hơn
– Tập lệnh THUMB tiết kiệm được không gian nhớ 30% và chạy nhanh hơn 40% so với tập lệnh ARM.
– Tập lệnh THUMB không có điều kiện thực thi trừ các lệnh rẽ nhánh
22/01/2017
Trang 8CẤU TRÚC BÊN TRONG
• Khi sử dụng tập lệnh thumb các thanh ghi cao
từ R8-R12 bị giới hạn truy cập:
Trang 9CẤU TRÚC BÊN TRONG
• Cách viết chương trình C với tập lệnh ARM và tập
unsigned long i,delay;
for (i = 0x00010000;i < 0x01000000 ;i = i<<1){
for (delay = 0;delay<0x000100000;delay++){} //tạo vòng lặp
IOSET1 = i; //chuyển đến led tiếp theo
22/01/2017
Trang 10CẤU TRÚC BÊN TRONG
• Cách viết chương trình C với tập lệnh
Trang 12MEMORY ACELARATER MODULE
(MAM)
• Là bộ nhớ nằm giữa bộ nhớ Flash và CPU ARM, có tốc độ thực thi cao:
Trang 13MEMORY ACELARATER MODULE
(MAM)
• MAM được tạo ra như là một cache đầy
đủ cho phép CPU dễ dàng truy cập trực tiếp vào FLASH:
22/01/2017
Trang 14MEMORY ACELARATER MODULE
(MAM)
• #include "LPC21xx.h"
• void ChangeGPIOPinState(unsigned int state);
• int main(void){
• unsigned int delay,val;
• unsigned int FLASHer = 0x00010000; // Khai báo cục bộ
• IODIR0 = 0x00FF0000; // Thiết lập các chân ra
• ChangeGPIOPinState(FLASHer); //Đổi trạng thái các chân ra ở cổng
• FLASHer = FLASHer <<1; //Dịch đến đèn led tiếp
• if(FLASHer&0x01000000) {
• FLASHer = 0x00010000; //Lặp lại đèn đầu tiên
•
Trang 15PLL- Phase Locked Loop
• Tạo ra một tần số dao động ngoài từ
độ thực thi để duy trì nguồn năng lượng
khi ở trạng thái rảnh rỗi
22/01/2017
Trang 16PLL- Phase Locked Loop
Trang 17PLL- Phase Locked Loop
Trang 18PLL- Phase Locked Loop
• Khi cập nhật giá trị thanh ghi PLLCON và PLLCFG thì phải ghi liên tiếp hai giá trị
0x000000AA và 0x00000055 cho thanh
ghi PLLFEED trong các chu kỳ liên tiếp
• Để cài đặt PLL phải ghi các giá trị cho P
và M tới thanh ghi PLLCFG, sau đó set D0 của thanh ghi PLLCON để cho phép PLL
Trang 19PLL- Phase Locked Loop
• Thanh ghi PLLCFG:
22/01/2017
Trang 20PLL- Phase Locked Loop
• Thuật toán khởi động PLL
Trang 21Bộ chia tần (VLSI Peripheral Bus
Trang 22while (!(PLLSTAT & 0x00000400)); // kiểm tra bít Lock
PLLCON = 0x00000003; // Kết nối tới PLL
Trang 23KHỐI ĐA CHỨC NĂNG
22/01/2017
Trang 24THÍ DỤ CẤU HÌNH PINSEL CHO
Trang 26KIT AT91SAM7S256
Trang 27KIT AT91SAM7S256
22/01/2017