Con người luôn ngạc nhiên về khả năng lưu trữ, nhận dạng và xử lý thông tin của bộ não con người. Từ lâu, các nhà khoa học đã tìm hiểu, nghiên cứu và sáng tạo các giải pháp cho các bài toán kỹ thuật theo phương pháp xử lý của bộ não. Mạng nơron nhân tạo đã ra đời từ đó. Hiện nay, mạng nơron được ứng dụng trong nhiều lĩnh vực như nhận dạng, xử lý thông tin, dự báo và điều khiển. Đồ án của nhóm nghiên cứu khía cạnh ứng dụng trong điều khiển của mạng nơron. Không giống các lĩnh vực ứng dụng khác là việc tính toán mạng nơron được thực hiện bằng máy tính, khi áp dụng vào điều khiển, mọi tính toán của mạng nơron đều được thực hiện bằng vi điều khiển có tốc độ thấp hơn tốc độ máy tính rất nhiều nên yêu cầu thiết kế cấu trúc mạng gọn nhẹ để phù hợp với vi điều khiển và tối ưu thời gian điều khiển được đặt lên hàng đầu. Khi ứng dụng trong điều khiển cấu trúc mạng nơron sẽ bao gồm luôn cả đối tượng điều khiển nên không thể sử dụng các luật học thông thường như luật học lan truyền ngược mà cần tìm 1 luật học khác phù hợp hơn. Sau một thời gian dài tìm kiếm, nhóm đã tìm ra được thuật toán Brandt-Lin làm giải pháp cho việc huấn luyện mạng nơron. Thuật toán Brandt-Lin là sản phẩm do 2 nhà khoa học Robert D. Brandt và Feng Lin đưa ra. Trong đồ án này, ngoài việc thực hiện tốt các mô phỏng, nhóm đã tiến hành điều khiển thực tế được động cơ 1 chiều có công suất nhỏ và với các yêu cầu điều khiển không cao.
Do hạn chế về dụng cụ thí nghiệm nên bộ điều khiển dựa trên mạng nơron của nhóm mới chỉ ứng dụng điều khiển 1 đối tượng ở điều kiện đơn giản nên chưa thể khẳng định sẽ điều khiển thành công với các loại đối tượng khác. Đồ án của nhóm chắc hẳn còn nhiều sai sót mà bản thân các thành viên trong nhóm chưa phát hiện ra. Do vậy nhóm rất hy vọng nhận được sự chỉ bảo của thầy cô, bạn bè và người đọc.
Chúng em, những thành viên trong nhóm làm đồ án xin gửi lời cảm ơn đến phó giáo sư, tiến sĩ Phan Xuân Minh đã tận tình hướng dẫn chúng em hoàn thành đồ án này. Ngay từ ban đầu cô đã đặt ra mục tiêu rõ ràng và cao giúp cả nhóm thấy rõ những việc mình cần hoàn thành. Cô cung cấp cho nhóm những lời khuyên mang tính định hướng đúng đắn khi nhóm gặp khó khăn trong quá trình nghiên cứu. Nhóm cám ơn những người bạn đã hỗ trợ, cung cấp những tài liệu về mạng nơron quý giá và giúp đỡ về mặt thiết kế, nhờ đó mà đồ án này được hoàn thành đúng hạn.
94 trang |
Chia sẻ: ngtr9097 | Lượt xem: 2578 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Đồ án Sử dụng mạng nơron để ứng dụng vào trong điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LỜI NÓI ĐẦU 3
LỜI NÓI ĐẦU 3
CHƯƠNG 1: LÝ THUYẾT MẠNG NƠRON 5
1.1 Nơron tự nhiên 5
1.2 Nơron nhân tạo 7
1.3 Mạng truyền thẳng và huấn luyện mạng theo thuật toán Brandt-Lin 9
1.3.1 Mạng truyền thẳng 9
1.3.2 Thuật toán Brandt-Lin 11
CHƯƠNG 2: GIỚI THIỆU ATMEGA 128 15
2.1 Đặc điểm của Atmega 128 15
2.2 Mô tả các chân 17
2.3 Kiến trúc tổng quan của Atmega128 20
2.3.1 Bộ nhớ của Atmega128 20
2.3.2 Tệp thanh ghi : 22
2.3.3 Port (cổng) vào ra 23
2.3.4 Giao tiếp với SRAM ngoài 27
2.3.5 Cấu trúc ngắt của Atmega 128 28
2.3.6 Bộ biến đổi A/D bên trong 31
2.3.7 Bộ truyền/nhận UART 32
2. 3.8 Bộ định thời 34
CHƯƠNG 3: MÔ PHỎNG HỆ THỐNG ĐIỀU KHIỂN ĐƯỢC THIẾT KẾ DỰA TRÊN MẠNG NƠRON 37
3.1 Thiết kế bộ điều khiển PID-Neural có chỉnh định thích nghi trọng số của mạng 37
3.1.1 Thuật toán chỉnh định trọng số 37
3.1.2 Kết quả mô phỏng 39
3.2 Thiết kế bộ điều khiển sử dụng sai lệch làm đầu vào 54
3.2.1 Thuật toán chỉnh định trọng số 54
3.2.2 Kết quả mô phỏng 59
CHƯƠNG 4 : ỨNG DỤNG ĐIỀU KHIỂN ĐỐI TƯỢNG THỰC 66
4.1 Động cơ điện một chiều 66
4.1.1. Cấu tạo của động cơ một chiều 66
4.1.2. Encoder gắn trên động cơ một chiều 68
4.1.3. Động cơ sử dụng để thử nghiệm 69
4.2. Thiết kế bộ điều khiển trên nền vi điều khiển Atmega 128 70
4.2.1. Khối điều khiển trung tâm 71
4.2.2. Giao tiếp với LCD 72
4.2.3. Phương thức truyền nhận dữ liệu qua RS232 trên PC 73
4.2.3.1 Cấu trúc vật lý của cổng RS232 73
4.2.3.2 Quá trình truyền và nhận dữ liệu của cổng COM của PC 75
4.2.3.3 Các loại truyền thông nối tiếp 79
4.2.4. Khối driver điều khiển động cơ 80
4.2.4.1. Giới thiệu về IC cầu H MC33886 80
4.2.4.2. Sơ đồ nguyên lý của driver điều khiển động cơ 83
4.2.5. Giao tiếp với bàn phím 84
4.3 Thiết kế giao diện bảng điều khiển 85
4.3 Thiết kế hệ thống điều khiển trên nền bộ điều khiển PID-Neural 88
4.3.1 Mô hình điều khiển 88
4.3.2 Chỉnh định các trọng số và tính toán đầu ra 91
4.5 Đánh giá kết quả thực nghiệm 92
Chương 5: KẾT LUẬN 93
Tài liệu tham khảo 94
LỜI NÓI ĐẦU
Con người luôn ngạc nhiên về khả năng lưu trữ, nhận dạng và xử lý thông tin của bộ não con người. Từ lâu, các nhà khoa học đã tìm hiểu, nghiên cứu và sáng tạo các giải pháp cho các bài toán kỹ thuật theo phương pháp xử lý của bộ não. Mạng nơron nhân tạo đã ra đời từ đó. Hiện nay, mạng nơron được ứng dụng trong nhiều lĩnh vực như nhận dạng, xử lý thông tin, dự báo và điều khiển. Đồ án của nhóm nghiên cứu khía cạnh ứng dụng trong điều khiển của mạng nơron. Không giống các lĩnh vực ứng dụng khác là việc tính toán mạng nơron được thực hiện bằng máy tính, khi áp dụng vào điều khiển, mọi tính toán của mạng nơron đều được thực hiện bằng vi điều khiển có tốc độ thấp hơn tốc độ máy tính rất nhiều nên yêu cầu thiết kế cấu trúc mạng gọn nhẹ để phù hợp với vi điều khiển và tối ưu thời gian điều khiển được đặt lên hàng đầu. Khi ứng dụng trong điều khiển cấu trúc mạng nơron sẽ bao gồm luôn cả đối tượng điều khiển nên không thể sử dụng các luật học thông thường như luật học lan truyền ngược mà cần tìm 1 luật học khác phù hợp hơn. Sau một thời gian dài tìm kiếm, nhóm đã tìm ra được thuật toán Brandt-Lin làm giải pháp cho việc huấn luyện mạng nơron. Thuật toán Brandt-Lin là sản phẩm do 2 nhà khoa học Robert D. Brandt và Feng Lin đưa ra. Trong đồ án này, ngoài việc thực hiện tốt các mô phỏng, nhóm đã tiến hành điều khiển thực tế được động cơ 1 chiều có công suất nhỏ và với các yêu cầu điều khiển không cao.
Do hạn chế về dụng cụ thí nghiệm nên bộ điều khiển dựa trên mạng nơron của nhóm mới chỉ ứng dụng điều khiển 1 đối tượng ở điều kiện đơn giản nên chưa thể khẳng định sẽ điều khiển thành công với các loại đối tượng khác. Đồ án của nhóm chắc hẳn còn nhiều sai sót mà bản thân các thành viên trong nhóm chưa phát hiện ra. Do vậy nhóm rất hy vọng nhận được sự chỉ bảo của thầy cô, bạn bè và người đọc.
Chúng em, những thành viên trong nhóm làm đồ án xin gửi lời cảm ơn đến phó giáo sư, tiến sĩ Phan Xuân Minh đã tận tình hướng dẫn chúng em hoàn thành đồ án này. Ngay từ ban đầu cô đã đặt ra mục tiêu rõ ràng và cao giúp cả nhóm thấy rõ những việc mình cần hoàn thành. Cô cung cấp cho nhóm những lời khuyên mang tính định hướng đúng đắn khi nhóm gặp khó khăn trong quá trình nghiên cứu. Nhóm cám ơn những người bạn đã hỗ trợ, cung cấp những tài liệu về mạng nơron quý giá và giúp đỡ về mặt thiết kế, nhờ đó mà đồ án này được hoàn thành đúng hạn.
Hà Nội, ngày 30 tháng 5 năm 2007
Nhóm thực hiện đồ án
Nguyễn Ngọc Hải Cao Thế Phong
Võ Đoàn Quế Anh
CHƯƠNG 1: LÝ THUYẾT MẠNG NƠRON
1.1 Nơron tự nhiên
Thành phần cấu thành cơ bản của hệ thần kinh trung ương là nơron. Tế bào sinh học này nhận và xử lý thông tin và sau đó giao tiếp với các phần khác của cơ thể con người. Hình 1.1 trình bày một mô hình đơn giản các nơron sinh học và hình 1.2 mô tả một nơron sinh học. Thân tế bào thần kinh được gọi là soma và được bao quanh bởi một lớp mạng huyết tương mỏng.
Hình 1.1: Sơ đồ 5 nơron liên kết với nhau
Hình 1.2: Sơ đồ một nơron sinh học
Mỗi tế bào thần kinh nhận nhiều đầu vào thông qua các dendrite và sau khi xử lý sẽ tạo một đầu ra dọc theo axon. Điểm nối giữa một axon và một dendrite được gọi là synapse. Thông tin do một tế bào thần kinh tạo ra được truyền dọc theo axon của nó. Một axon kết thúc ở mối nối khớp của một nơron khác.
Về mặt xử lý thông tin, một nơron với nhiều dendrite như nhiều đầu vào và một axon đại diện một đầu ra có thể được xem như một hệ MISO. Các hàm xử lý thông tin trong hệ MISO này được chia thành 4 loại. Hình 1.3 mô tả một nơron đơn giản.
Hình 1.3: Mô hình một nơron đơn giản có nhiều đầu vào và một đầu ra
Dendrites: Chúng bao gồm một cây nhiều nhánh, đóng vai trò như các đầu vào của nơron. Trung bình có dendrite trên một nơron.
Synapse: Đây là vùng chứa đựng các kinh nghiệm trong quá khứ. Nó cung cấp bộ nhớ dài hạn cho các kinh nghiệm được thu thập trong quá khứ. Vùng này nhận thông tin từ các giác quan hay từ các nơron khác và cung cấp đầu ra thông qua axon.
Soma: Thân tế bào thần kinh được gọi soma. Nó nhận thông tin từ synapse và sau đó xử lý thông tin. Hầu như tất các các chức năng logic của nơron được thực hiện ở soma.
Axon: Đầu ra của nơron được gọi là axon.
1.2 Nơron nhân tạo
Hình 1.4: Nơ-ron nhân tạo
Cấu trúc một nơron nhân tạo (xem hình 1.4) bao gồm các thành phần sau:
Đầu vào : Các đầu vào nhân với các trọng số . Một đầu vào có giá trị bằng 1 được gọi là 1 bias và được ký hiệu là .
Hàm số đầu vào f tính tập hợp các tín hiệu đầu vào cho nơron , trong đó x và w lần lượt là các vectơ đầu vào và trọng số. Thông thường chọn f là hàm tổng .
Hàm kích thích s tính toán mức độ kích thích của nơron a=s(u).
Hàm đáp ứng tính toán giá trị tín hiệu đầu ra của nơron o=g(a). Tín hiệu đầu ra của tín hiệu thông thường bằng mức độ kích thích của nơron o=a.
Tùy theo sự khác nhau của từng tham số ở trên mà sinh ra các kiểu nơron khác nhau. Các giá trị đầu vào và đầu ra của 1 nơron có thể số nhị phân {0,1}, số lai {-,1}, giá trị liên tục trong đoạn [0,1], hoặc các số rời rạc trong 1 khoảng được định nghĩa trước.
Hình 1.5: Các hàm kích thích hay được sử dụng nhất: (a) Hàm chặn cứng; (b-1), (b-2) Các hàm chặn tuyến tính ; (c) Các hàm sigma: hàm logsig (c-1), hàm logsig 2 cực (c-2); (d) hàm gaussian (hàm hình quả chuông)
Hình trên mô tả các loại hàm kích thích hay được sử dụng nhất.
Hàm chặn cứng (hình 1.5[a]). Nếu giá trị đầu vào của mạng lớn hơn 1 giá trị chặn nào đó thì nơron trở nên tích cực (giá trị kích thích bằng 1), ngược lại nó sẽ không tích cực (giá trị kích thích bằng 0).
Hàm chặn tuyến tính. Giá trị kích thích sẽ tăng tuyến tính cùng với sự tăng của tín hiệu đầu vào và khi đến một ngưỡng nào đó đầu ra sẽ bão hòa. Các kiểu hàm chặn tuyến tính khác nhau phụ thuộc vào phạm vi của giá trị đầu ra nơron (hình 1.5[b-1], 1.5[b-2]).
Hàm sigma. Hàm sigma là hàm truyền phi tuyến hình chữ S được đặc trưng bởi các yếu tố sau.
Bị chặn, các giá trị của nó bị hạn chế giữa 2 ngưỡng, ví dụ như [0 1], [-1 1].
Đơn điệu tăng, nghĩa là các giá trị của g(u) không bao giờ giảm khi u tăng.
Liên tục và tăng, do đó có thể đạo hàm ở mọi điểm trong miền của hàm xác định của hàm. Các kiểu hàm sigma khác nhau được sử dụng trong thực tế là: hàm logsig (hình 1.5[c-1]) trong đó c là hằng số. Một hình thức khác của hàm logsig là hàm logsig 2 cực: (hình 1.5[c-1]) và hàm tansig: .
Hàm gaussian (hàm hình quả chuông, hình 1.5[d]).
1.3 Mạng truyền thẳng và huấn luyện mạng theo thuật toán Brandt-Lin
1.3.1 Mạng truyền thẳng
Mạng nơron nhân tạo là tập hợp các nơron nhân tạo được liên kết với nhau theo một quy luật nhất định nhằm phục vụ nhu cầu của người thiết kế mạng. Có 2 loại mạng nơron thường được sử dụng là mạng truyền thẳng và mạng hồi tiếp. Hình 1.6 mô tả mạng truyền thẳng và mạng hồi tiếp. Dù cấu trúc của mạng nơron thuộc loại nào thì mạng nơron đều có cấu tạo chung là được cấu thành từ các lớp. Lớp đầu tiên được gọi là lớp đầu vào (input layer), lớp cuối cùng được gọi là lớp đầu ra (output layer), các lớp giữa được gọi là các lớp ẩn (hidden layer).
Hình 1.6 : (a) Mạng truyền thẳng ; (b) Mạng hồi tiếp
Khi ứng dụng đối với một hệ động học, yêu cầu tính toán nhanh luôn được lên hàng đầu. Mạng hồi tiếp tốn nhiều thời gian để tính toán nên trong nội dung đồ án này, chúng em sử dụng mạng truyền thẳng.
Sau đây sẽ xem xét một mạng nơron truyền thẳng và tính toán đầu ra của mạng.
Ví dụ xét mạng nơron 2 lớp sau:
Hình 1.7: Mạng nơron 2 lớp
Gọi là trọng số của nơron thứ i, có đầu vào là j, thuộc lớp thứ k.
là đầu vào thứ i, i=1,2,3
là đầu ra của nơron thứ i thuộc lớp ẩn, i=1,2,3.
o là đầu ra của lớp đầu ra.
, lần lượt là hàm truyền của lớp ẩn, lớp đầu ra.
Tính đầu ra của các lớp:
Lớp ẩn:
Lớp đầu ra:
1.3.2 Thuật toán Brandt-Lin
Tư tưởng của thuật toán Brandt-Lin chia nhỏ một hệ thống phức tạp thành N hệ thống con gọi là các nút. Mỗi nút có 1 tín hiệu đầu ra khả tích và nhiều tín hiệu đầu vào khả tích . Đầu vào và đầu ra của các nút được nối với nhau thông qua các trọng số. . Đặc tính động học của mỗi trạm được mô tả bằng một hàm nhân quả
trong đó và là không gian đầu vào và đầu ra. Như vậy, đầu ra của nút thứ n được xác định bằng phương trình sau
Hình 2.1: Phân tích 1 hệ thống theo thuật toán Brandt-Lin
Định lý. Đối với một hệ thống có tính động học cho bởi
(1)
nếu các trọng số liên kết được thích nghi theo (2)
thì chỉ số chất lượng sẽ giảm dần theo thời gian. Nói tóm lại là phương trình sau luôn thỏa mãn:
(3)
trong đó là hệ số thích nghi.
Trong đó là trọng số liên kết của nút thứ j thuộc lớp l xuất phát từ nút thứ i.
là đầu ra của nút thứ thứ j thuộc lớp l.
là đầu vào của nút thứ j thuộc lớp l xuất phát từ nút thứ i.
q là số lượng nhánh ra xuất phát từ nút thứ j của lớp l
Chứng minh.
Hình 2.2: Một phần của mạng nơron
CHƯƠNG 2: GIỚI THIỆU ATMEGA 128
2.1 Đặc điểm của Atmega 128
Khả năng thực thi cao, công suất tiêu thụ thấp, bộ vi xử lý 8 bit
Bộ vi xử lý với cấu trúc RISC :
Có thể tính toán 16 triệu lệnh trên 1s ở tần số 16MHz
Tạo ra đầy đủ các trạng thái
32 thanh ghi với mục đích làm việc và điều khiển thiết bị ngoại vi
Bộ nhớ chương trình không đổi và bộ nhớ dữ liệu :
Bộ nhớ dữ liệu chương trình là 128K Bytes với chu kì tẩy xóa cho bộ nhớ là 10 000 lần
Bộ nhớ EEPROM là 4 K bytes với chu kỳ tẩy xóa là 100 000 lần
Có 4 K Bytes bộ nhớ SRAM nội
Có thể lựa chọn mở rộng không gian bộ nhớ ngoài lên 64 K Bytes
Có chế độ khóa để bảo mật chương trình
Giao tiếp SPI trong lập trình trong hệ thống
Giao tiếp JTAG (theo chuẩn IEEE 1149.1) :
Có khả năng quét danh giới theo chuẩn JTAG
Mở rộng khả năng Debug trên chíp
Bộ nhớ chương trình, EEPROM, các cầu chì, khóa các bit thông qua giao tiếp JTAG
Các ngoại vi :
Hai bộ Timer/Counter 8 bit hoạt động riêng rẽ và có chế độ so sánh
Hai bộ Timer/Counter mở rộng 16 bit hoạt động riêng rẽ, chế độ so sánh và chế độ lưu trữ
Bộ đếm thời gian thực với tần số dao động riêng
Hai kênh PWM 8 bit
Sáu kênh PWM với khả năng thay đổi được từ 2 đến 16 bit
Khối so sánh đầu ra
Tám kênh ADC 10 bit
Hai khối giao tiếp USART có thể lập trình
Giao tiếp nối tiếp SPI master/slave
Watchdog và Timer có thể lập trình nhờ xung nhịp trên chip. Tự động reset khi treo máy
Khối so sánh tương tự trên chip
Các đặc trưng đặc biệt của vi điều khiển :
Có nguồn ngắt bên trong và mở rộng
Có khả năng lựa chọn xung clock bằng phần mềm
Có sáu chế độ nghỉ : Idle, ADC noise Reduction, Power–save, Power–down, Standby, Standby mở rộng
Có khả năng định cỡ xung dao động thời gian thực bên trong
Các cổng vào ra :
Gồm 53 chân có thể lập trình
Chip có 64 chân
Giải điện áp làm việc từ 4.5 V – 5.5 V
Dải tốc độ từ 0 – 16 MHz
Atmega128 là bộ vi điều khiển CMOS 8 bit tiêu thụ điện năng thấp dựa trên kiến trúc RISC. Công nghệ này cho phép các lệnh thực thi chỉ trong một chu kì nhịp xung, vì thế tốc độ xử lý dữ liệu có thể đạt đến 1 triệu lệnh trên giây ở tần số 1 Mhz. Vi điều khiển này cho phép người thiết kế có thể tối ưu hoá mức độ tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lí. Phần cốt lõi của AVR kết hợp tập lệnh phong phú về số lượng với 32 thanh ghi làm việc đa năng. Toàn bộ 32 thanh ghi đều được nối trực tiếp với ALU (Arithmetic Logic Unit), cho phép truy cập 2 thanh ghi độc lập bằng một chu kì xung nhịp. Kiến trúc đạt được có tốc độ xử lý nhanh gấp 10 lần vi điều khiển dạng CISC thông thường. Atmega128 cung cấp những đặc tính sau: 128 K bytes bộ nhớ chương trình, 4K bytes bộ nhớ EEPROM, 4K bytes SRAM, 52 chân với mục đích vào ra thông thường, 32 thanh ghi làm việc với mục đích thông thường, bộ đếm thời gian thực (RTC), 4 bộ Timer/Counter với chế độ so sánh và PWM, 2 USARTs, 8 kênh ADC 10 bit với khả năng lựa chọn đầu vào và lập trình được hệ số khuếch đại, Watchdog timer có khả năng lập trình nhờ bộ tạo dao động bên trong, giao tiếp SPI, bộ giao tiếp kiểm tra lỗi theo chuẩn IEEE 1149.1, chỉ dùng để debug hệ thống và chương trình trên chip và khả năng lựa chọn 6 chế độ tiết kiệm năng lượng. chế độ Idle ngừng hoạt động của CPU trong khi cho phép SRAM, Timer/Counter, cổng SPI, hệ thống ngắt tiếp tục gọi hàm, chế độ power-down tiết kiệm lượng thanh ghi nhưng ổn định cho xung giao động, ko hoạt động các hàm khác cho đến khi có ngắt tiếp theo hoặc reset phần cứng. Ở chế độ power-save, Timer không đồng thời tiếp tục hoạt động, mà cho phép người sử dụng dùng một Timer cơ sở trong khi các thiết bị đang ở chế độ nghỉ. Chế độ giảm nhiễu cho ADC ngừng CPU và các module vào ra ngoại trừ timer và ADC, để giảm nhiễu xuống thấp nhất trong quá trình biến đổi ADC. Ở chế độ standby thạch anh dao động đang chạy trong khi các thiết bị khác ở chế độ nghỉ. Ở chế độ standby mở rộng bộ dao động chính và timer không đồng bộ tiếp tục chạy.
2.2 Mô tả các chân
VCC : chân nguồn +5V
GND: chân đất
Port A
Port B
Port C
Port D
Port E
Port F
Port G
Reset : dùng để reset lại hệ thống
XTAL1 và XTAL2 : là hai chân để tạo dao động ngoài khi nối với thạch anh
AVCC là chân nguồn cho cổng F và dùng để biến đổi ADC. Khi kết nối với VCC thì quá trình biến đổi ADC là chính xác hơn
AREF là chân điện áp so sánh phục vụ cho quá trình biến đổi ADC
PEN là chân enable cho chế độ giao tiếp SPI
Hình 2.1 : Sơ đồ chân của Atmega128
Hình 2.2: Sơ đồ khối bên trong của Atmega 128
2.3 Kiến trúc tổng quan của Atmega128
Hình 2.3 : Biểu đồ khối cấu trúc của AVR
2.3.1 Bộ nhớ của Atmega128
Atmega 128 chứa 128 Kbytes chương trình và có chu kỳ tẩy xóa là 10 000 lần. Bộ đếm của Atmega 128 là 16 bit. Có thể nạp chườn trình cho chip qua cổng SPI, JTAG hoặc cổng song song
Atmega 128 sử dụng kiến trúc Harvard với bộ nhớ dữ liệu và bộ nhớ chương trình tách biệt nhau. Hình 3.4 minh họa phác thảo kiến trúc bên trong của bộ điều khiển Atmega 128. Bus dữ liệu dùng cho bộ nhớ dữ liệu là một bus 8 bit, cho phép nối hầu hết các bộ phận ngoại vi với tệp thanh ghi. Bus dữ liệu dùng cho bộ nhớ chương trình có độ rộng 16 bit và chỉ nối với thanh ghi lệnh.
Bộ nhớ chương trình là loại bộ nhớ Flash. Bộ nhớ chương trình được truy nhập theo từng chu kỳ đồng hồ, và một lệnh được nạp vào thanh ghi lệnh. Thanh ghi lệnh nối với tệp thanh ghi bằng cách lựa chọn xem thanh ghi nào sẽ được ALU sử dụng để thực thi lệnh. Lối ra của thanh ghi lệnh được giải mã bằng bộ giải mã lệnh để quyết định chọn tín hiệu điều khiển nào sẽ được kích hoạt để hoàn tành lệnh hiện tại.
Bộ nhớ SRAM bên trong được sử dụng cho ngăn xếp cũng như để lưu trữ các biến. Trong thời gian có ngắt và gọi đoạn chương trình, giá trị hiện tại của bộ đếm chương trình được lưu tữ trong ngăn xếp. Vị trí của ngăn xếp được chỉ thị bởi con trỏ ngăn xếp.
Hình 2.4 : Định dạng bộ nhớ của Atmega128
Atmega 128 cung cấp hai cấu hình khac nhau cho bộ nhớ SRAM, có thế sử dụng 4096 Bytes bộ nhớ ram trong hoặc 64 k Bytes bộ nhớ ram ngoài
Hình 2.5 : Không gian địa chỉ bộ nhớ SRAM
Bộ nhớ dữ liệu EEPROM của Atmega 128 là 4k Bytes, với chu kỳ tẩy xóa là 100 000 nghìn lần. sự truy nhập giữa EEPROM và MCU được mô tả như sau, nó được chỉ rõ trong các thanh ghi địa chỉ, thanh ghi dữ liệu và thanh ghi điều
của EEPROM.
2.3.2 Tệp thanh ghi :
Atmega 128 có 32 thanh ghi đa chức năng. Một số trong các thanh ghi này còn có các chức năng riêng, bổ sung . Các thanh ghi này được được đặt tên từ R0 đến R31.tất cả các lệnh thao tác trên thanh ghi đều có thể truy nhập trực tiếp và truy nhập trong chu trình đơn đến tất cả các thanh ghi. Nhưng một ngoại lệ là các lệnh SBCI, SUIB, CPI, ANDI và ORI cũng như WI, các lệnh nay chỉ tác động đến các thanh ghi R16 đến R31.
Các thanh ghi từ R26 đến R31 có các chức năng bổ xung thanh ghi R0 được sử dụng trong các lệnh lạp bộ nhớ chương trình LPM, trong khi các thanh ghi R26 đến R31 được sử dụng làm các thanh ghi con trỏ như được minh họa trên hình 2.6
Hình 2.6: Tệp thah ghi của Atmega 128
2.3.3 Port (cổng) vào ra
Atmega 128 có tất cả là 7 Port từ PortA đến PortG. Tất cả các Port của AVR đều có trở treo bên trong và được lựa chọn cho mỗi bit và có thể được đọc-chỉnh sửa-ghi khi sử dụng như một Port xuất nhập thông thường. Điều này có nghĩa là đường dữ liệu của các chân sẽ được thay đổi hướng không định trước nếu như không đặt lệnh cho nó. Mỗi bộ đệm đầu ra đều có những tính chất đối xứng cho việc nhập và xuất dữ liệu. Tất cả các chân đều có điện trở kéo lên độc lập không thay đổi. Tất cả đều được bảo vệ bằng diode đối với cả nguồn và đất
Hình 2.7: Sơ đồ bên trong mỗi chân
Port A : dùng để mở rộng bộ nhớ Ram ngoài bảng sau mô ta chức năng của các chân ở Port A
Pin
Chức năng
PA7
AD7 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 7)
PA6
AD6 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 6)
PA5
AD5 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 5)
PA4
AD4 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 4)
PA3
AD3 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 3)
PA2
AD2 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 2)
PA1
AD1 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 1)
PA0
AD0(mở rộng bộ nhớ ngoài với bit dữ liệu là bit 0)
Port B : chức năng các chân của port B được trình bày dưới bảng
Pin
Chức năng của các chân
PB7
OC2/OC1C (đầu ra so sánh và đầu ra của PWM cho timer/counter2 hoặc đầu ra so sánh và PWM C của timer/counter1
PB6
OCB1 (đầu ra so sánh và PWM B của timer/counter1)
PB5
OC1A (đầu ra so sánh và PWM A của timer/counter1)
PB4
OCO ( đầu ra so sánh và PWM của timer/counter0
PB3
MISO (bus giao tiếp SPI vào master hoặc ra slave)
PB2
MOSI ( bus giao tiếp SPI vào slave hoặc ra master)
PB1
SCK (quy định tốc độ đông hồ khi giao tiếp)
PB0
(chọn SPI là slave hay master)
Port C : ngoài chức năng vào ra thông thường, Port C còn có thêm chức năng mở rộng bộ nhớ ngoài chân