1. Trang chủ
  2. » Luận Văn - Báo Cá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

88 21 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 88
Dung lượng 2,45 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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

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 2

Cá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 3

TRƯỜ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 4

Em 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 5

Họ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 6

Họ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 7

Họ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 8

Họ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 9

Họ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 10

Họ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 11

Họ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 12

Họ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 13

Họ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 14

Họ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 15

Họ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 16

Họ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 17

Họ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 18

Họ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 19

Họ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 20

Họ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 21

Họ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 22

Họ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 23

Họ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 24

Họ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 25

Họ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 26

Họ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 27

Họ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 28

Họ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 29

Họ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 30

Họ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 31

Họ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 32

Họ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 33

Họ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 34

Họ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 35

Họ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 36

Họ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 37

Họ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 38

Họ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 39

Họ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 40

Họ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

Ngày đăng: 26/01/2021, 21:55

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] “Micron technical note: An Introduction to NAND Flash and How to Design It Into Your Next Product.”, Micron Sách, tạp chí
Tiêu đề: Micron technical note: An Introduction to NAND Flash and How to Design It Into Your Next Product
[2] “Micron technical note: tn2906_nand_flash_controller”, Micron Sách, tạp chí
Tiêu đề: Micron technical note: tn2906_nand_flash_controller
[3] “NANDFlashControllerDesign-Documentation”, Lattice Semiconductor [4] “NAND FLASH Programming User´s Guide” Lauterbach Sách, tạp chí
Tiêu đề: NANDFlashControllerDesign-Documentation”, Lattice Semiconductor [4] “NAND FLASH Programming User´s Guide
[8] “NAND Flash 101: An Introduction to NAND Flash and How to Design It Into Your Next Product” , Micron Sách, tạp chí
Tiêu đề: NAND Flash 101: An Introduction to NAND Flash and How to Design It Into Your Next Product
[9] “Open NAND Flash Interface Specification”, Hynix Semiconductor , Intel Corporation , Micron Technology, Inc. , Phison Electronics Corp. , Sony Corporation , STMicroelectronicsAvailable: http://www.onfi.org/specifications Sách, tạp chí
Tiêu đề: Open NAND Flash Interface Specification
[10] “Error Correction Code (ECC) in Micron®Single-Level Cell (SLC) NAND” , Micron Sách, tạp chí
Tiêu đề: Error Correction Code (ECC) in Micron®Single-Level Cell (SLC) NAND
[11] “TN-29-06: NAND Flash Controller on Spartan-3”, Micron [12] “ONFI Controller”, SLS CorporationAvailable: http://www.slscorp.com/ip-cores/memory/nand-flash/onfi-controller.html Sách, tạp chí
Tiêu đề: TN-29-06: NAND Flash Controller on Spartan-3”, Micron [12] “ONFI Controller

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w