KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ ---o0o--- TRẦN THỊ THẢO NGHIÊN CỨU VÀ THIẾT KẾ KỸ THUẬT TRUY XUẤT TỪNG PHẦN TRANG DỮ LIỆU TRONG BỘ ĐIỀU KHIỂN BỘ NHỚ NAND FLASH CONTROLLER.. TÊN ĐỀ
Trang 1KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
-o0o -
TRẦN THỊ THẢO
NGHIÊN CỨU VÀ THIẾT KẾ KỸ THUẬT TRUY XUẤT
TỪNG PHẦN TRANG DỮ LIỆU TRONG BỘ ĐIỀU KHIỂN
BỘ NHỚ NAND FLASH CONTROLLER
Chuyên ngành: Kỹ thuật điện tử
Mã số:
LUẬN VĂN THẠC SĨ
TP HỒ CHÍ MINH, tháng 6 năm 2015
Trang 2Cán bộ hướng dẫn khoa học: T.S Lê Chí Thông
Cán bộ chấm nhận xét 1: TS Nguyễn Minh Sơn (ĐH CNTT)
3 TS Trương Quang Vinh
4 TS Nguyễn Minh Sơn (ĐH CNTT)
5 TS Bùi Trọng Tú (ĐH KHTN)
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành
sau khi luận văn đã được sửa chữa (nếu có)
CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA…………
Trang 3TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
Độc lập – Tự do – Hạnh phúc -
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Ngày, tháng, năm sinh: 20/02/1989 Nơi sinh: Hà Tĩnh
Chuyên ngành: Kỹ thuật điện tử Mã số:
I TÊN ĐỀ TÀI: Nghiên cứu và thiết kế kỹ thuật truy xuất từng phần trang dữ liệu trong bộ điều khiển bộ nhớ NAND FLASH CONTROLLER
NHIỆM VỤ VÀ NỘI DUNG:
Nhiệm vụ của đề tài là nghiên cứu và thiết kế được bộ điều khiển bộ nhớ NAND Flash controller với các tính năng như sau:
Tương thích với bus AHB
Truy xuất dữ liệu theo kỹ thuật truy xuất từng phần trang dữ liệu
Hỗ trợ MLC và SLC
Hỗ trợ tất cả các kích thước page size
Hỗ trợ ECC để phát hiện và sửa lỗi dữ liệu
II NGÀY GIAO NHIỆM VỤ: 19/01/2015
III NGÀY HOÀN THÀNH NHIỆM VỤ: 14/06/2015
IV CÁN BỘ HƯỚNG DẪN: T.S Lê Chí Thông
Trang 4Em xin gởi lời cảm ơn chân thành và sự tri ân sâu sắc đối với các thầy cô của trường
Đại học Bách khoa Thành Phố Hồ Chí Minh, đặc biệt là giảng viên hướng dẫn Lê Chí
Thông người đã rất tận tình hướng dẫn em trong quá trình thực hiện luận văn tốt
nghiệp
Em xin chân thành cám ơn đồng nghiệp và trung tâm nghiên cứu và đào tạo thiết kế vi
mạch ICDREC đã tạo điều kiện cho em có thể hoàn thành luận văn tốt nghiệp
Trong quá trình nghiên cứu cũng như là trong quá trình viết báo cáo luận văn tốt
nghiệp, khó tránh khỏi sai sót, rất mong các Thầy, Cô bỏ qua Đồng thời do trình độ lý
luận cũng như kinh nghiệm còn hạn chế nên luận văn không thể tránh khỏi những
thiếu sót, rất mong nhận được ý kiến đóng góp Thầy, Cô để em hoàn thiện thêm
những nghiên cứu của mình
Em xin chân thành cảm ơn!
Tp Hồ Chí Minh, ngày 14 tháng 6 năm 2015
Học viên
Trần Thị Thảo qqqqqqqqqqqq
Trang 5Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
TÓM TẮT LUẬN VĂN
NAND Flash là một loại bộ nhớ với đặc tính không mất dữ liệu khi mất điện volatile memory) Đơn vị nhỏ nhất để đọc ghi dữ liệu là một trang (page) Với sự phát triển ngày càng nhanh về khả năng lưu trữ của bộ nhớ NAND Flash, dung lượng bộ nhớ tăng kéo theo kích thước một trang cũng tăng lên rất nhiều lần Điều này đặt ra những thử thách không nhỏ trong việc thiết kế bộ điều khiển NAND Flash Trong kiến trúc của một bộ điều khiển NAND Flash, các FIFO với kích thước tương ứng với kích thước của một trang trong bộ nhớ NAND Flash thường được dùng như một vùng đệm
(non-dữ liệu cho việc truy xuất bộ nhớ Để tiết kiệm tài nguyên sử dụng cho các FIFO đệm trong bộ điều khiển, có nhiều giải pháp khác nhau được đưa ra, trong đó kỹ thuật đọc ghi một phần trang (Partial-Page Programming/Reading) được sử dụng phổ biến và mang nhiều hiệu quả Luận văn dưới đây đi sâu trình bày một cách chi tiết nghiên cứu
và thực hiện kỹ thuật truy xuất từng phần trang dữ liệu bằng cách chia nhỏ một trang lớn của bộ nhớ NAND Flash thành các phần dữ liệu nhỏ hơn như 512-byte/256-word
Từ khóa: NAND flash, bộ điều khiển NAND flash, tối ưu bộ điều khiển, truy xuất một phần trang dữ liệu, partial-page reading, partial-page programing
ABSTRACT
NAND-flash is non-volatile type of memory, which means its stored data remains intact without supplied power The smallest possible memory unit in NAND-flash is called a page of memory Thanks to NAND-flash rapid escalation of storage capacity, its page size also increases manifold, which makes it harder to design an effective flash controller The FIFO possessing the same page size of one found in NAND-flash
is often utilized as memory buffer To make the most out of its limited resources used for FIFO in NAND-flash, there exist many solutions, one of which is Partial Programming/Reading technique which is widely used and very effective The following thesis attempts to clarify some details related to investigate, design and perform the NAND-flash memory segmentation algorithm dividing memory into chunks of 512 bytes/256 words
Keywords: NAND flash, the NAND flash controller, optimize the NAND flash controller, partial-page reading, partial-page programing
Trang 6Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
MỤC LỤC
Chương 1 GIỚI THIỆU 1
1.1 Tổng quan 1
1.2 Tình hình nghiên cứu trong và ngoài nước 2
1.3 Nhiệm vụ luận văn 3
Chương 2 CƠ SỞ LÝ THUYẾT 7
2.1 Tổng quan về bộ nhớ NAND Flash 7
2.2 Cấu trúc bộ nhớ NAND Flash 8
2.2.1 Tổ chức bộ nhớ NAND Flash 8
2.2.2 Cấu tạo bộ nhớ NAND Flash 10
2.3 Hoạt động của bộ nhớ NAND Flash 11
2.3.1 Hoạt động của các tín hiệu của bộ nhớ NAND Flash 11
2.3.2 Giản đồ hoạt động của các lệnh 16
2.3.3 Quản lý lỗi dữ liệu trong bộ nhớ NAND Flash controller 19
2.4 Giao diện bộ nhớ NAND Flash 25
2.5 Bộ điều khiển bộ nhớ NAND Flash 26
Chương 3 THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG 27
3.1 Tính năng của bộ điều khiển bộ nhớ NAND Flash 27
3.2 Sơ đồ khối của bộ điều khiển bộ nhớ NAND Flash 27
3.3 Chi tiết và hoạt động của các khối trong bộ điều khiển bộ nhớ NAND Flash 30 3.3.1 Giao diện với bus hệ thống AHB 30
3.3.2 Máy trạng thái FSM control 39
Trang 7Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
3.3.3 Tập thanh ghi 42
3.3.4 Thuật toán ghi bằng cách truy xuất từng phần trang dữ liệu 48
3.3.5 Thuật toán đọc bằng cách truy xuất từng phần trang dữ liệu 49
3.3.6 Khối control logic 51
3.3.7 Khối sắp xếp dữ liệu 57
3.3.8 Khối phân chia dữ liệu vào ra cho NAND Flash device 58
3.3.9 Khối tìm và sửa lỗi ECC 60
Chương 4 KIỂM TRA THIẾT KẾ 63
4.1 Yêu cầu kiểm tra 63
4.2 Môi trường kiểm tra 63
4.3 Chiến lược kiểm tra 64
4.3.1 Hệ thống kiểm tra 64
4.3.2 Xây dựng kịch bản kiểm tra 64
4.4 Kết quả kiểm tra 65
4.4.1 Kiểm tra hoạt động với các thiết bị nhớ NAND Flash MLC và SLC 65
4.4.2 Kiểm tra hoạt động với các thiết bị nhớ NAND Flash các kích thước page size khác nhau 65
4.4.3 Kiểm tra hoạt động lệnh reset 65
4.4.4 Kiểm tra hoạt động lệnh đọc dữ liệu 67
4.4.5 Kiểm tra hoạt động ghi dữ liệu 69
4.4.6 Kiểm tra hoạt động ECC để phát hiện và sửa lỗi dữ liệu 70
Chương 5 KẾT QUẢ THỰC HIỆN 71
5.1 Kết quả test 71
Trang 8Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
5.2 Tốc độ và tần số 71
5.2.1 Tốc độ tần số của controller 71
5.2.2 So sánh với các controller khác 72
Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 74
6.1 Kết luận 74
6.2 Hướng phát triển 74
Chương 7 TÀI LIỆU THAM KHẢO 75
Chương 8 PHỤ LỤC 76
Trang 9Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
DANH SÁCH HÌNH MINH HỌA
Hình 1-1: Giản đồ ghi dữ liệu của hãng Lattice Semiconductor 3
Hình 1-2: Giản đồ đọc dữ liệu của hãng Lattice Semiconductor 3
Hình 1-3: Sử dụng truy xuất một phần dữ liệu trên 1 trang của NAND flash 5
Hình 2-1: Cấu trúc cell nhớ NAND Flash 7
Hình 2-2: Cấu trúc bộ nhớ NAND Flash 9
Hình 2-3: Cấu tạo bộ nhớ NAND Flash memory 10
Hình 2-4: Giản đồ ghi lệnh 13
Hình 2-5: Giản đồ ghi địa chỉ 14
Hình 2-6: Giản đồ ghi dữ liệu 14
Hình 2-7: Giản đồ đọc dữ liệu 15
Hình 2-8: Giản đồ hoạt động đọc 16
Hình 2-9: Giản đồ hoạt động ghi 17
Hình 2-10: Giản đồ hoạt động xóa block 18
Hình 2-11: Giản đồ hoạt động RESET 18
Hình 2-12: Cho phép xóa 19
Hình 2-13: Không cho phép xóa 19
Hình 2-14: Chia nhỏ trang dữ liệu trong việc tính toán ECC 20
Hình 2-15: Cách sắp xếp 3 bytes ECC 20
Hình 2-16: Cách tạo bit chẵn lẻ 21
Hình 2-17: Giải thuật phát hiện lỗi ECC 23
Hình 2-18: Giao diện bộ nhớ NAND Flash 25
Hình 3-1: Sơ đồ khối bộ điều khiển bộ nhớ NAND Flash controller 27
Trang 10Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Hình 3-2: Cấu trúc của bộ điều khiển NAND flash 28
Hình 3-3: Hình mô tả chân khối AHB Wrapper 30
Hình 3-4: Sơ đồ bộ phận giao tiếp bus AMBA AHB 32
Hình 3-5: Khối AHB WDATA-ADDRESS-COMMAND RECEIVE 33
Hình3-6: Khối Packet Driver 33
Hình3-7: Máy trạng thái trong khối Packet Driver 34
Hình 3-8: Khối Ready Controller 36
Hình 3-9: Khối Write / Read Status Storage 36
Hình 3-10: Khối Packet Valid Generator 36
Hình 3-11: Khối Packet Container 37
Hình 3-12: Khối Read Data FIFO Controller 38
Hình 3-13: Hình mô tả chân khối FSM control 39
Hình 3-14: Thuật toán truy xuất dữ liệu ghi từng phần trang 48
Hình 3-15: Thuật toán truy xuất dữ liệu đọc từng phần trang 50
Hình 3-16: Sơ đồ khối control logic 51
Hình 3-17: Sơ đồ chân tín hiệu khối control logic 53
Hình 3-18: Sơ đồ chân của khối mux 57
Hình 3-19: Giản đồ gom dữ liệu của bộ mux 58
Hình 3-20: Sơ đồ chân khối iomux 58
Hình 3-21: Sơ đồ khối hỏa động của khối iomux 59
Hình 3-22: Mô tả chân tín hiệu khối ECC 60
Hình 3-23: Sơ đồ khối ECC 60
Hình 3-24: Thuật toán cho khối ECC top 61
Trang 11Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Hình 3-25: Giản đồ phát hiện ECC 62
Hình 3-26: Sơ đồ khối ECC 62
Hình 4-1: Hệ thống kiểm tra lõi NAND Flash controller 64
Hình 4-2: Giản đồ hoạt động lệnh RESET 66
Hình 4-3: Kết quả giản đồ kiểm tra lệnh RESET 67
Hình 4-9: Giản đồ hoạt động của lệnh READ PAGE 67
Hình 4-10: Giản đồ hoạt động ghi dữ liệu 69
Hình 4-11: Kết quả mô phỏng ECC 70
Hình 5-1: Thông số NAND Flash controller của hãng Lattice 72
Hình 5-2: Thông số NAND Flash controller của hãng controller SLS 73
Trang 12Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
DANH SÁCH BẢNG SỐ LIỆU
Bảng 2-1: Bảng so sánh cell nhớ SLC và MLC của bộ nhớ NAND Flash 8
Bảng 2-2: Các chân tín hiệu của bộ nhớ NAND Flash 11
Bảng 2-3: Bảng mô tả hoạt động các tín hiệu điều khiển 12
Bảng 3-1: Bảng mô tả chân khối AHB Wrapper 31
Bảng 3-2: Bảng sự thật của khối Enable Generator 37
Bảng 3-3: Bảng mô tả chân FSM control 39
Bảng 3-4: Tập thanh ghi của bộ điều khiển bộ nhớ NAND Flash 42
Bảng 3-5: Bảng mô tả thanh ghi trạng thái 44
Bảng 3-6: Danh sách chân khối control logic 54
Bảng 3-7: Danh sách chân tín hiệu khối Control Logic 56
Bảng 3-8: Danh sách chân khối mux data 57
Bảng 3-9: Danh sách chân khối iomux 59
Bảng 3-10: Danh sách chân khối ECC top 60
Bảng 5-1: Kết quả thực hiện trên phần cứng FPGA 71
Bảng 5-2: Bảng so sánh kết quả thực hiện FIFO với các cấu hình khác nhau 71
Trang 13Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
1.1 Tổng quan
NAND Flash là một loại bộ nhớ không mất dữ liệu khi mất điện (non-volatile) NAND Flash có mật độ lưu trữ cao, tuổi thọ cao Thiết bị sử dụng NAND Flash có một số ưu điểm rất lớn so với những chuẩn lưu trữ lưu động khác Chúng ta có thể tìm thấy bộ nhớ NAND Flash trong rất nhiều thiết bị trên thị trường như máy nghe nhạc MP3, máy quay kỹ thuật số, trong các thẻ nhớ, USB… Apple iPod và iPhone là hai sản phẩm thương mại thành công nhất có sử dụng NAND Flash[1] Chip NAND Flash nhỏ gọn, bền và có khả năng thực hiện tác vụ đọc/ghi rất nhanh Một thiết bị nhớ sử dụng công nghệ NAND thường sẽ chứa nhiều chip nhớ, tương tự với hình thức của các module nhớ như RAM hay trên card đồ họa, và mạch điều khiển kết nối giữa bộ nhớ và giao diện điều khiển của nó với những thiết bị khác[2] NAND Flash được chia làm 2 loại cơ bản: SLC (single-level cell hay 1-bit-per-cell NAND Flash memory) và MLC (multi-level cell hay 2-bit-per-cell NAND Flash memory) Tuy nhiên, vào năm
2010 xuất hiện thêm 1 loại nữa mang tên TLC (triple-level cell hay 3-bit-per-cell NAND Flash memory) sản xuất trên dây chuyền công nghệ 25nm, với các chip nhớ đầu tiên đến từ Intel, Micron và Hynix[3] Bộ nhớ NAND Flash SLC và MLC về cơ bản giống nhau trong thiết kế Các thiết bị MLC Flash có giá thành rẻ hơn và có mật
độ lưu trữ dữ liệu lớn hơn Trong khi đó các thiết bị SLC Flash có hiệu năng đọc ghi
ấn tượng hơn, độ tin cậy cao hơn cũng như dải nhiệt độ hoạt động tốt cao hơn các thiết
bị MLC Flash
Hiện nay, dung lượng bộ nhớ NAND Flash đã được mở rộng khả năng lưu trữ lên rất nhiều lần Từ 1GB lên đến 128GB với kích thước chỉ bằng đầu ngón tay.Gần đây, Intel tuyên bố sẽ phát triển chip nhớ NAND mỏng chỉ 2mm nhưng có thể chứa được 1
TB dữ liệu Mới đây nhất, Intel đã lên kế hoạch sản xuất card lưu trữ cho các hệ thống máy chủ doanh nghiệp với dung lượng trên 10 TB
Trang 14Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
1.2 Tình hình nghiên cứu trong và ngoài nước
Bình thường, khi thao tác với NAND Flash, người ta dùng lệnh đọc ghi toàn bộ 1 trang của NAND Flash Để thực hiện được việc truy cập, sử dụng bộ nhớ NAND Flash, bộ điều khiển bộ nhớ NAND Flash phải có một FIFO đệm dùng để chứa các dữ liệu đọc được từ một trang Theo đó, tùy vào kích thước của một trang mà độ rộng của FIFO đệm phải lớn hơn hoặc bằng dung lượng nhớ của 1 trang NAND Flash Có nghĩa là, FIFO đệm phải có độ lớn bằng hoặc lớn hơn kích thước trang của NAND Flash là 512B, 2kB, 4kB, 8kB, 16kB
Hiện nay, hầu hết cấu trúc các bộ điều khiển bộ nhớ NAND Flash sử dụng các buffer [4] để lưu trữ thông tin chuyển tiếp khi giao tiếp với bộ nhớ NAND Flash trong việc truy xuất đọc, ghi dữ liệu [5]
Chẳng hạn,với bộ điều khiển bộ nhớ của iWave Systems, cần hai buffer để hỗ trợ việc đọc, ghi dữ liệu : 2K-byte buffer cho ghi dữ liệu, 2K-byte buffer cho đọc dữ liệu
[6] Thêm nữa, mặc dù hỗ trợ buffer là 2K-byte, tuy nhiên độ lớn trang hỗ trợ cũng chỉ
là 2K byte, mà hiện nay, với tốc độ phát triển của bộ nhớ NAND Flash, độ rộng của một trang đã tăng từ 2K bytes lên đến 4, 8, 16 K bytes
Cũng tương tự như thế, Lattice Semiconductor cũng đưa ra giải thuật thực hiện cho việc đọc ghi dữ liệu như sau:
Trang 15Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Hình 1-1: Giản đồ ghi dữ liệu của hãng Lattice Semiconductor
Hình 1-2: Giản đồ đọc dữ liệu của hãng Lattice Semiconductor Nhìn vào giản đồ trên ta thấy, việc đọc ghi từng trang được thực hiện theo cách truy xuất toàn phần trang dữ liệu Một trang có độ rộng bao nhiêu thì sẽ truy xuất hết bấy nhiêu trong một lần đọc ghi Do vậy, bộ nhớ đệm cũng cần phải điều chỉnh để thỏa mãn việc đọc ghi toàn phần một trang dữ liệu nếu muốn hỗ trợ nhiều loại dung lượng trang dữ liệu khác nhau
Mỗi trang đọc ghi đều chỉ có một lần tạo ECC để đọc ghi xuống bộ nhớ
1.3 Nhiệm vụ luận văn
Bộ nhớ NAND Flash đang được nhiều hãng trên thế giới nghiên cứu phát triển, dung lượng hiện nay trên thị trường đã là 128GB và thậm chí là đang được nghiên cứu để tăng dung lượng lên đến 10TB để sử dụng trong các ứng dụng về lưu trữ
Mở rộng dung lượng, nhà sản xuất phải tích hợp vào đó giao tiếp cũng như kích thước trang mới Những thế hệ chip flash hiện tại sử dụng khuôn 64Gb có kích thước trang
Trang 16Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
là 8kB Khuôn 128Gb giúp cho con số này tăng lên tới 16kB nên bộ điều khiển và
drive firmware phải được chỉnh sửa nhằm thích ứng với kích thước mới
Bộ nhớ NAND Flash hoạt động đọc ghi sử dụng kỹ thuật truy xuất trang và xóa theo khối (block) Do vậy, để phù hợp với sự mở rộng không ngừng của bộ nhớ NAND Flash, kỹ thuật truy xuất toàn bộ trang dữ liệu khiến cho tài nguyên của bộ điều khiển
bộ nhớ NAND Flash tăng lên rất nhiều
Bên cạnh đó, để đảm bảo thông tin đọc ghi dữ liệu trên bộ nhớ NAND Flash được chính xác, thuật toán xác định và sửa lỗi ECC (Error Correction Code) đã được sử dụng để xác định số lỗi bit và vị trí lỗi bit Thuật toán này cho phép phát hiện được 2 giá trị lỗi bit và sửa được 1 giá trị lỗi
Kỹ thuật truy xuất từng phần trang dữ liệu được thực hiện bằng cách chia nhỏ một trang thành nhiều phần Mỗi phần có độ lớn 512-byte và được truy xuất như một phần
Trang 17Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Một trang NAND flash trống
Lần ghi thứ nhất: A vào vùng 1 và a vào vùng 5
Lần ghi thứ hai: B vào vùng 2 và b vào vùng 6
Hình 1-3: Sử dụng truy xuất một phần dữ liệu trên 1 trang của NAND flash
Trang 18Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Nhằm giảm tài nguyên sử dụng cho bộ điều khiển bộ nhớ NAND Flash và tăng độ tin cậy cho dữ liệu đọc ghi trên NAND Flash, thuật toán truy xuất từng phần trang dữ liệu được sử dụng để tối ưu hóa tài nguyên cho bộ điều khiển Với thuật toán truy xuất từng phần trang dữ liệu, bất kỳ độ rộng nào của trang dữ liệu đều được xử lý với cùng một tài nguyên phần cứng Bên cạnh đó, môi phần sẽ được tính ECC riêng biệt, do vậy việc phát hiện lỗi và sửa lỗi cũng tăng lên Luận văn này sẽ trình bày nghiên cứu
và thực hiện bộ điều khiển bộ nhớ NAND Flash sử dụng thuật toán truy xuất từng phần trang dữ liệu
Với các nội dung nghiên cứu là:
Nghiên cứu cấu tạo, kiến trúc bộ nhớ NAND Flash
Nghiên cứu kiến trúc bộ điều khiển bộ nhớ NAND Flash
Nghiên cứu các thuật toán truy xuất bộ nhớ NAND Flash, so sánh và lựa chọn thuật toán
Nghiên cứu kỹ thuật truy xuất bộ nhớ NAND Flash dựa trên kỹ thuật truy xuất từng phần trang dữ liệu
Nghiên cứu kỹ thuật phát hiện và sửa lỗi sử dụng trong bộ nhớ NAND Flash controller
Nhiệm vụ của đề tài là nghiên cứu và thiết kế được bộ điều khiển bộ nhớ NAND Flash controller với các tính năng như sau:
Tương thích với bus AHB
Truy xuất dữ liệu theo kỹ thuật truy xuất từng phần trang dữ liệu
Hỗ trợ MLC và SLC
Hỗ trợ tất cả các kích thước page size
Hỗ trợ ECC để phát hiện và sửa lỗi dữ liệu
Trang 19Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
2.1 Tổng quan về bộ nhớ NAND Flash
Bộ nhớ flash NAND là chip bộ nhớ ổn định cho phép lưu giữ các dữ liệu ngay cả khi tắt nguồn Bộ nhớ flash NAND được ứng dụng rộng rãi trong máy nghe nhạc MP3, thiết bị ghi hình kỹ thuật số (máy quay phim và máy ảnh) và các thẻ nhớ di động (USB) Nhược điểm duy nhất của NAND là tốc độ chậm Nếu như DRAM – chip bộ nhớ động, cho phép truy cập tốc độ cao thì NAND chỉ cho phép truy cập dữ liệu qua một địa chỉ nhất định
Bộ nhớ NAND Flash là 1 sự lựa chọn hàng đầu sử dụng trong các thiết bị điện tử di động tiêu dùng đa phương tiện NAND Flash cơ bản được chia làm 2 loại: SLC (single-level cell hay 1-bit-per-cell NAND Flash memory) và MLC (multi-level cell hay 2-bit-per-cell NAND Flash memory) Tuy nhiên, vào năm 2010 xuất hiện thêm 1 loại nữa mang tên TLC (triple-level cell hay 3-bit-per-cell NAND Flash memory) sản xuất trên dây chuyền công nghệ 25nm, với các chip nhớ đầu tiên đến từ Intel, Micron
và Hynix
Hình 2-1: Cấu trúc cell nhớ NAND Flash
Trang 20Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Bộ nhớ NAND Flash SLC và MLC về cơ bản giống nhau trong thiết kế Các thiết bị MLC Flash có giá thành rẻ hơn và có mật độ lưu trữ dữ liệu lớn hơn Trong khi đó các thiết bị SLC Flash có hiệu năng đọc ghi ấn tượng hơn, độ tin cậy cao hơn cũng như dải nhiệt độ hoạt động tốt cao hơn các thiết bị MLC Flash Dưới đây là bảng tổng hợp các ưu điểm cũng như khuyết điểm của SLC Flash và MLC Flash
Bảng 2-1: Bảng so sánh cell nhớ SLC và MLC của bộ nhớ NAND Flash
Với những yếu tố mạnh và yếu như trên, SLC Flash thích hợp ứng dụng hơn trong các
hệ thống nhúng (embedded system), trong khi MLC Flash lại được sử dụng nhiều hơn trong các thiết bị di động, vốn có giá thành dễ chịu hơn và dung lượng lưu trữ cao hơn
Bộ nhớ NAND Flash có tuổi thọ giới hạn và giảm dần các cell nhớ trở nên nhỏ hơn Tùy loại NAND Flash sẽ có số chu kỳ đọc ghi giới hạn
SLC cho phép ghi khoảng 100.000 chu kỳ, trong khi đó MLC chỉ cho phép ghi vào khoảng 5000 đến 10.000 chu kỳ [3]
2.2 Cấu trúc bộ nhớ NAND Flash
2.2.1 Tổ chức bộ nhớ NAND Flash
Bộ nhớ NAND Flash bao gồm một hoặc nhiều targets Một target được điều khiển bởi một tín hiệu CE# Một target được tổ chức bởi một hoặc nhiều logical units (LUNs)
Trang 21Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Mỗi LUNs lại được tổ chức thành nhiều khối (block) Mỗi khối gồm nhiều trang (page) Kích thước của trang tùy thuộc vào thiết bị của từng nhà sản xuất Hiện nay,
có nhiều loại kích thước trang như: 512B, 2kB, 4kB, 8kB, 16kB Hoạt động xóa của NAND Flash được thực hiện trên các khối Đơn vị nhỏ nhất của mỗi lần đọc ghi là 1 trang
Hình 2-2: Cấu trúc bộ nhớ NAND Flash Hoạt động của bộ nhớ NAND Flash dựa trên 1 page hoặc 1 block Một page thường bao gồm một phần dữ liệu và thêm vào đó là một vài bit được gọi là spare data hoặc là spare column
Trang 22Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
2.2.2 Cấu tạo bộ nhớ NAND Flash
Bên trong bộ nhớ NAND Flash, ngoài các cell nhớ, là các phần dùng để xử lý lệnh, địa chỉ và dữ liệu để ghi dữ liệu vào cell nhớ
- I/O control: Điều khiển dòng dữ liệu đọc ghi của bộ nhớ NAND Flash controller
- Control Logic: Điều khiển các tín hiệu điều khiển việc đọc ghi dữ liệu, lệnh và địa chỉ
- Address Register: Thanh ghi đệm địa chỉ
- Status Register: Thanh ghi đệm trạng thái
- Command Register: Thanh ghi đệm lệnh
- Cache Register: Đệm dữ liệu của page size đƣợc đọc ghi
- Row Decode: giải mã địa chỉ hàng
- Column Decode: giải mã địa chỉ cột
Hình 2-3: Cấu tạo bộ nhớ NAND Flash memory
Trang 23Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
2.3 Hoạt động của bộ nhớ NAND Flash
2.3.1 Hoạt động của các tín hiệu của bộ nhớ NAND Flash
2.3.1.1 Các tín hiệu điều khiển
Các tín hiệu CE#, WE#, RE#, CLE, ALE và WP# điều khiển các hoạt động ĐỌC và GHI
CE# được sử dụng để cho phép thiết bị hoạt động Khi CE# ở mức THẤP và thiết bị không ở trong trạng thái BUSY thì bộ nhớ NAND Flash sẽ được phép nhận thông tin
về lệnh, dữ liệu và địa chỉ
Khi thiết bị đang không thực hiện một hoạt động nào cả, CE# thường được lái về mức cao và thiết bị chuyển sang trạng thái standby Bộ nhớ sẽ chuyển sang trạng thái
Trang 24Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
standby nếu CE# tích cực mức cáo trong khi dữ liệu đã được truyền và thiết bị không báo bận Điều này giúp giảm năng lượng tiêu thụ cho bộ nhớ
Hoạt động “Don’t care” của CE# cho phép NAND Flash cứ trú trên bố nhớ đồng bộ
có bus tương tự như các Flash khác hoặc trên các thiết bị SRAM Các bộ nhớ khác có thể truy cập bus nhớ trong khi NAND Flash bận với hoạt động nội bên trong Khả năng này rất quan trọng trong các thiết kế yêu cầu nhiều bộ nhớ NAND Flash trên cùng bus giống nhau Một thiết bị có thể được ghi trong khi thiết bị khác đang đọc
Tín hiệu CLE ở mức cao chỉ ra rằng một LỆNH (COMMAND) đang được sử dụng Tương tự, khi tín hiệu ALE đang ở mức cao thì một địa chỉ đang được ghi vào bộ nhớ Bảng 2-3: Bảng mô tả hoạt động các tín hiệu điều khiển
Trang 25Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Các lệnh chỉ ghi ở chân ngõ vào của NAND Flash ở vị trí IO[7:0] Với các giao diện
mở rộng đến 16 chân thì các chân IO[15:8] cần được ghi với mức 0 khi gán một lệnh
Hình 2-4: Giản đồ ghi lệnh
2.3.1.3 Giản đồ ghi địa chỉ
Các địa chỉ được ghi xuống thanh ghi địa chỉ ở cạnh lên của chân WE# khi tất cả các điều kiện dưới đây thỏa mãn:
Chân CE# và CLE# ở mức thấp
Chân ALE ở mức cao
Các địa chỉ chỉ được truyền thông qua các ngõ vào là IO[7:0]
Thông thường, có 2 kiểu địa chỉ sẽ được ghi xuống trong vòng 4 hoặc 5 chu kỳ tùy thuộc từng loại device Trường hợp ngoại lệ là trong hoạt động BLOCK ERASE, chỉ 2 chu kỳ địa chỉ sẽ được truyền xuống bộ nhớ
Các lệnh RANDOM DATA INPUT và OUTPUT chỉ cần địa chỉ cột, do vậy chỉ yêu cầy 2 hoặc 3 chu kỳ ghi địa chỉ
Trang 26Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Hình 2-5: Giản đồ ghi địa chỉ
2.3.1.4 Giản đồ ghi dữ liệu
Dữ liệu vào sẽ đƣợc ghi xuống thanh ghi dữ liệu ở cạnh lên của chân WE# khi các điều kiện sau đƣợc thỏa mãn:
CE#, CLE vad ALE tích cực mức thấp
Thiết bị không bận
Dữ liệu đƣợc ghi trên các chân I/O[7:0]
Hình 2-6: Giản đồ ghi dữ liệu
Trang 27Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
2.3.1.5 Giản đồ đọc dữ liệu
Sau khi một lệnh READ đƣợc truyền xuống bộ nhớ, dữ liệu sẽ đƣợc truyền từ các mảng bên trogn bộ nhớ đến thanh ghi dữ liệu tại cạnh lên của chân WE# R/B# tích cực mức thấp cho tR và sau đó chuyển mức tích cực cao sau khi truyền xong Khi dữ liệu đã sẵn sang tại thanh ghi dữ liệu, dữ liệu sẽ đƣợc đọc ra ngoài tại mức thấp của tín hiệu RE#
Hình 2-7: Giản đồ đọc dữ liệu
2.3.1.6 Tín hiệu Ready/Busy#
Tín hiệu Ready/Busy cho ta biết thiết bị nhớ đang sẵn sàng (ready), hay đang bận xử
lý tác vụ (busy) Một thiết bị nhớ đang bận nếu nhƣ một hoặc nhiều LUNs đang bận
và ready khi tất cả các LUNs ready
Mỗi LUN chứa một thanh ghi trạng thái, do vậy nó có khả năng xác định trạng thái của từng LUNs bằng cách đọc dữ liệu từ thanh ghi trạng thái thay vì sử dụng tín hiệu R/B#
Dựa vào trạng thái của tín hiệu R/B#, thiết bị nhớ báo ra bên ngoài biết để xử lý lệnh, địa chỉ và dữ liệu vào ra cho phù hợp với từng trạng thái của thiết bị nhớ
Trang 28Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
2.3.2 Giản đồ hoạt động của các lệnh
2.3.2.1 Hoạt động đọc
Ở trạng thái khởi tạo, thiết bị nhớ có trạng thái mặc định là ở read mode Để truy cập vào trạng thái hoạt động đọc, ghi tuần tự các lệnh 00h – 30h vào thanh ghi lệnh và địa chỉ cột, địa chỉ hàng
Sau khi ghi lệnh 00h vào thanh ghi lệnh thì bắt đầu ghi địa chỉ Khoảng 5 chu kỳ ghi địa chỉ sẽ đƣợc ghi vào thanh ghi địa chỉ Sauk hi hoàn thành việc ghi địa chỉ, lệnh 30h sẽ đƣợc truyền vào thanh ghi lệnh Sau khoảng thời gian tR là thời gian để dữ liệu bên trong bộ nhớ NAND Flash đƣợc truyền vào thanh ghi dữ liệu, dữ liệu đƣợc đọc
ra tại cạnh lên của tín hiệu RE#, bắt đầu tự địa chỉ cột Dữ liệu sữ đƣợc đọc tuần tự cho đến khi hoàn thành đọc một trang
Trang 29Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
bộ đệm và bắt đầu ghi dữ liệu từ thanh ghi đệm trang xuống các cell nhớ Trong suốt thời gian này, tín hiệu R/B# sẽ tích cực thấp để báo thiết bị đang bận ghi dữ liệu trong khoảng thời gian ghi dữ liệu là tPROG
Trong suốt quá trình ghi dữ liệu, chỉ có lệnh đọc trạng thái (READ STATUS 70h) hoặc lệnh RESET (FFh) là hợp lệ Bit 6 của thanh ghi trạng thái sẽ phản ánh lại trạng thái của tín hiệu R/B# Khi thiết bị sẵn sàng, đọc giá trị của bit này để biết là hoạt động ghi thành công hay đã bị lỗi Thanh ghi lệnh sẽ ở trạng thái đọc trạng thái cho đến khi một lệnh hợp lệ khác được ghi xuống thiết bị
Hình 2-9: Giản đồ hoạt động ghi
2.3.2.3 Hoạt động xóa block
Hoạt động xóa xảy ra tại mức khối (block) Có hai bước trong tiến trình của lệnh xóa Lệnh ERASE SETUP (60h) sẽ được ghi xuống thanh ghi lệnh đầu tiên Sau đó là các địa chỉ hàng được ghi xuống thiết bị Tiếp theo lệnh ERASE CONFIRM (D0h) sẽ được ghi xuống thanh ghi lệnh Tại cạnh lên của tín hiệu WE#, tín hiệu R/B# sẽ tích cực mức thấp trong suốt thời gian xóa block tBERS
Lệnh đọc thanh ghi trạng thái có thể được sử dụng để kiểm tra trạng thái của hoạt động xóa Khi bit 6 = “1” thì có nghĩa là hoạt động xóa hoàn thành Bit 0 chỉ ra trạng thái thành công/ thất bại của hoạt động này Bit 0 = “0” thì việc xóa dữ liệu là thành công
Trang 30Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Hình 2-10: Giản đồ hoạt động xóa block
2.3.2.4 Hoạt động reset
Lệnh RESET được sử dụng đưa đưa thiết bị nhớ vào một trạng thái đã biết trước để hủy bỏ một lệnh trước đó
Nội dung của vị trí mà bộ nhớ đã được ghi hoặc phần bộ nhớ đã bị xóa sẽ không hợp
lệ them nữa Dữ liệu có thể được ghi hoặc xóa từng phần là không hợp lệ Thanh ghi lệnh được xóa và sẵn dàng nhận lệnh tiếp
Thanh ghi trạng thái bao gồm giá trị E0h khi tín hiệu WP# đang tích cực ở mức cao, nếu không nó sẽ được ghi giá trị là 60h Tín hiệu R/B# tích cực thấp trong suốt thời gian thực hiện lệnh RESET là tRST.
Hình 2-11: Giản đồ hoạt động RESET
Trang 31Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
2.3.2.5 Hoạt động write protect
Tính năng WRITE PROTECT bảo vệ thiết bị chống lại các hoạt động PROGRAM và ERASE vô ý Tất cả các hoạt động PROGRAM và ERASE đều bị vô hiệu hóa khi tín hiệu WP# ở mức thấp
Hình 2-12: Cho phép xóa
Hình 2-13: Không cho phép xóa
2.3.3 Quản lý lỗi dữ liệu trong bộ nhớ NAND Flash controller
Với công nghệ ngày càng phát triển, các cell nhớ của bộ nhớ NAND Flash controller ngoài SLC còn có thêm các loại cell MLC SLC là Single Level Cell, chỉ lưu được 1 bit trên 1 cell, MLC là Multiple Level Cell tức là có thể lưu được nhiều bit trên cùng 1 cell nhớ Tuy nhiên, với loại bộ nhớ MLC này, số chu kỳ đọc ghi cũng bị giảm đi nhanh chóng Thông thường, SLC cho phép vòng đời đọc ghi vào khoảng 100.000 chu
kỳ nhưng MLC thường chỉ trong khoảng 5000 đến 10000 chu kỳ đọc ghi [3]
Trang 32Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Do vậy, khi các dữ liệu được lưu vào bộ nhớ, nó cần có một cơ chế để phát hiện và sửa lỗi Thông thường, một chuỗi dữ liệu sẽ được mã hóa bằng cách cộng một số lượng trùng nhau lại với nhau Khi dữ liệu gốc được sử dụng lại, một bộ giải mã sẽ giải mã gói tin để kiểm tra xem có lỗi nào hay không
Theo nguyên lý mã hóa Hamming, với một gói dữ liệu là 256 bytes sẽ tạo ra 22 bit mã hóa ECC và có khả năng sửa được 1 bit Mã hóa Hamming ECC có thể được dùng trong các gói dữ liệu là 1 byte, 8 bytes, 16 bytes, …
Với gói dữ liệu trang của thiết bị nhớ NAND Flash là 528-byte/256-word, mã hóa Hamming ECC vó thể được sử dụng để tạo ra 24-bit ECC, phát hiện 2 lỗi sai và sửa được 1 lỗi sai
Với các kích thước trang khác của thiết bị nhớ NAND Flash, phép tính sẽ được tính toán với mỗi 512 bytes Các trang dữ liệu có kích thước lớn hơn 512 bytes sẽ được chia nhỏ ra thành các phần 512 bytes Mỗi phần trang này sẽ tạo ra chính xác 3 bytes ECC
Hình 2-14: Chia nhỏ trang dữ liệu trong việc tính toán ECC
Hình 2-15: Cách sắp xếp 3 bytes ECC
Trang 33Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
- Byte ECC đầu tiên gồm các bit chẵn lẻ dòng LP0 – LP7
- Byte ECC thứ hai gồm các bit chẵn lẻ dòng từ LP8 đến LP15
- Byte ECC thứ 3 gồm các bit chẵn lẻ cột từ CP0 – CP5, thêm vào LP16 và LP17 đƣợc tạo ra cho 512 bytes input
Hình 2-16: Cách tạo bit chẵn lẻ
Mã code giả lập cho phép mã hóa Hamming code nhƣ sau:
Trang 34Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Phát hiện và sửa lỗi ECC
ECC có thể phát hiện lỗi dựa trên cơ chế sau:
Không có lỗi: Kết quả của phép XOR bằng 0
Lỗi có thể sửa: Kết quả phép XOR là mã code 11 bits 1 Với 512 bytes đầu vào thì ECC tạo ra là 12 bits 1
Lỗi ECC: Kết quả của phép XOR chỉ có một bit 1 bằng 1 Điều này có nghĩa là lỗi trong vùng tạo ra ECC
Không thể sửa lỗi: Kết quả phép XOR không phải là các kết quả trên
Trang 35Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
Kết quả bit bị lỗi sẽ được trả về theo địa chỉ offset bit và địa chỉ offset byte tương ứng
Địa chỉ byte: = (LP17,LP15,LP13,LP11,LP9,LP7,LP5,LP3,LP1)
Địa chỉ bit: = (CP5, CP3,CP1)
Khi có nhiều hơn 2 lỗi thì dữ liệu không thể sửa được
Hình 2-17: Giải thuật phát hiện lỗi ECC
Giả lập mã tìm lỗi và giải lỗi ECC
% Detect and correct a 1 bit error for 256 byte block
int ecc_check (data, stored_ecc, new_ecc)
begin
% Basic Error Detection phase
ecc_xor[0] = new_ecc[0] ⊕ stored_ecc[0];
ecc_xor[1] = new_ecc[1] ⊕stored_ecc[1];
ecc_xor[2] = new_ecc[2] ⊕stored_ecc[2];
if ((ecc_xor[0] or ecc_xor[1] or ecc_xor[2]) == 0)
begin return 0; % No errors end
else
begin
Trang 36Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
% Counts the bit number bit_count = BitCount(ecc_xor);
if (bit_count == 11) begin
% Set the bit address bit_address = (ecc_xor[2] >> 3) and 0x01 or (ecc_xor[2] >> 4) and 0x02 or
(ecc_xor[2] >> 5) and 0x04;
byte_address = (ecc_xor[0] >> 1) and 0x01 or (ecc_xor[0] >> 2) and 0x02 or
(ecc_xor[0] >> 3) and 0x04 or (ecc_xor[0] >> 4) and 0x08 or (ecc_xor[1] << 3) and 0x10 or (ecc_xor[1] << 2) and 0x20 or (ecc_xor[1] << 1) and 0x40 or (ecc_xor[1] and 0x80);
% Correct bit error in the data data[byte_address]=data[byte_address]⊕(0x01<<bit_address);
return 1;
end else if (bit_count == 1)
begin
% Uncorrectable Error return -1;
end end
end
Trang 37Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
2.4 Giao diện bộ nhớ NAND Flash
Bộ điều khiển NAND flash
ALE
CE CLE
Hình 2-18: Giao diện bộ nhớ NAND Flash
Giải thích chức năng các tín hiệu của NAND Flash
o ALE: cho phép chốt địa chỉ: khi ALE ở mức cao thì thông tin địa chỉ sẽ đƣợc chuyển từ I/O[7:0] vào thanh ghi địa chỉ bên trong chip
o CE#: Cho phép chip
o CLE: Cho phép chốt lệnh: khi CLE ở mức cao, thông tin sẽ đƣợc chuyển từ I/O[7:0] vào thanh ghi lệnh bên trong chip ứng với xung kích cạnh lên của chân WE#
o RE#: cho phép đọc
o WE#: cho phép ghi
o WP#: có chức năng ngăn cản việc ghi và xóa Nghĩa là các chế độ ghi và xóa sẽ không đƣợc thực thi khi tín hiệu WP# ở mức thấp
o I/O [7:0]: bus giao tiếp dữ liệu, địa chỉ và thông tin cấu trúc Dữ liệu sẽ đƣợc lấy
ra trong quá trình đọc
o R/B#: tín hiệu này đƣợc dùng để báo hiệu thiết bị đã sẵn sàng hay vẫn còn đang bận
- Chú ý: #: Tích cực mức thấp
Trang 38Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
2.5 Bộ điều khiển bộ nhớ NAND Flash
Bộ điều khiển bộ nhớ NAND Flash controller hoạt động như một cầu nối giữa CPU
và thiết bị bộ nhớ NAND Flash
Khoảng 3% trong tổng số mảng trong bộ nhớ NAND Flash được dự trữ để làm “spare area” nhằm đối phó với các vấn đề về lỗi bit, lật bit và bad blocks Thông thường từ 3 đến 6 bytes trong spare area được dự trữ cho việc phát hiện lỗi và thuật toán sửa lỗi, trong khi phần còn lại của spare area được sử dụng để đánh dấu bad blocks Nếu không có NAND Controller, các thuật toán điều khiển các chức năng của NAND Flash có thể được thực hiện trên các CPU thông thường Nhưng NAND controller cho phép thực hiện các chức năng này trên phần cứng, do đó giảm tải cho CPU, đồng thời tăng vòng đời cho pin cũng như tăng hiệu suất cho các thiết bị, hệ thống Với công nghệ bộ nhớ MLC, NAND Flash yêu cầu nghiêm ngặt hơn cho thuật toán phát hiện lỗi
do tỉ lệ lỗi tăng trong khi sử dụng công nghệ này
Giao diện dữ liệu tuần tự tới NAND kết hợp dữ liệu vào và dữ liệu ra trên cùng một đường dữ liệu của chip Không giống như NOR hay DRAM, một địa chỉ được ghi một bit tại một thời điểm, sau đó dữ liệu được đọc hoặc ghi xuống trong cùng một kiểu NAND controller đóng gói giao diện với NAND Chip và điều khiển giao tiếp.Tích hợp NAND Flash controller đã trở nên phổ biến, các nhà cung cấp mobile processor
đã xây dựng NAND Flash controller trực tiếp trên các bộ xử lý của họ Do vậy mà chúng ta cần đạt được thiết kế nhỏ nhất và chi phí thấp nhất
Bộ điều khiển NAND Flash controller sẽ được tích hợp trong nhiều hệ thống, trong các bộ xử lý và nhiều mục tiêu khác nhau để có thể sử dụng các thiết bị nhớ NAND Flash controller một cách dễ dàng nhất Bộ điều khiển bộ nhớ NAND Flash controller
sẽ điều khiển các hoạt động đọc, ghi và các thuật toán phát hiện và sửa lỗi
Bộ điều khiển bộ nhớ NAND Flash controller có giao diện hoạt động với AHB để dễ dàng tích hợp các các hệ thống khác, trong các bộ vi xử lý Các giá trị độ rộng sẽ được cấu hình bằng parameter nhằm dễ dàng hơn trong việc nâng cấp, và trong các hệ thống
có độ rộng bus khác nhau
Trang 39Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
3.1 Tính năng của bộ điều khiển bộ nhớ NAND Flash
- Truy xuất dữ liệu theo kỹ thuật truy xuất từng phần trang dữ liệu
- Hỗ trợ giao diện AHB
- Hỗ trợ ECC để phát hiện và sửa lỗi dữ liệu
3.2 Sơ đồ khối của bộ điều khiển bộ nhớ NAND Flash
NAND FLASH CONTROLLER
NAND INTERFACE AHB
cle_out ale_out ce_out re_out we_out rb_in data_inout
Trang 40Học viên: Trần Thị Thảo GVHD: TS Lê Chí Thông
AHB Wrapper: Khối này dùng để giao tiếp giữa bus AHB và khối giao diện với NAND Flash
NAND Interface: Khối này nhận các dữ liệu từ bus AHB sau đó xử lý và ghi xuống bộ nhớ NAND Flash Dưới đây là sơ đồ khối của NAND Interface:
ECC or without ECC
NAND FLASH
CTRL
NAND FLASH signals
Hình 3-2: Cấu trúc của bộ điều khiển NAND flash
Quá trình ghi dữ liệu được thực hiện như sau :
o Dữ liệu cần ghi (dung lượng 1 trang) được REGISTER FILE ghi vào một FIFO đệm (FIFO SEND BUFFER) nằm trong bộ điều khiển (controller)
o Khối CONTROL LOGIC điều khiển việc đọc dữ liệu từ FIFO SEND BUFER rồi ghi lên NAND Flash thông qua các tín hiệu điều khiển
Quá trình đọc dữ liệu từ NAND flash
o CPU gởi lệnh đọc cho REGISTER FILE Sau đó REGISTER FILE điều khiển khối CONTROL LOGIC đọc dữ liệu từ NAND Flash và ghi vào FIFO đệm (RECEIVE BUFFER)
o Khi dữ liệu trong FIFO đủ một trang, REGISTER FILE báo hiệu cho CPU và CPU gởi lệnh đọc dữ liệu về
REGISTER FILE: Khối này dùng để điều khiển toàn bộ luồng dữ liệu của bộ điều khiển bộ nhớ NAND Flash controller FSM control nhận dữ liệu được ghi xuống từ AHB như lệnh, địa chỉ, dữ liệu Tùy thuộc vào dữ liệu mà FSM control sẽ xử lý và đưa ra các tín hiệu điều khiển các khối bên dưới