Chương 1: Tổng quan. Chương này trình bày lý do chọn đề tài, đề ra mục tiêu, trình bày giới hạn, bố cục của đồ án. Chương 2: Cơ sở lý thuyết. Tổng quan về ECC trong bộ nhớ, giới thiệu về mã Hamming, ngôn ngữ mô tả phần cứng VHDL và phần mềm ISE Design Suite 14.
Chương 3: Thiết kế hệ thống. Trình bày sơ đồ khối hệ thống và chức năng từng khối. Chương 4: Thiết kế chi tiết. Trình bày thiết kế chi tiết từng khối.
Chương 5: Kết quả và đánh giá. Mô phỏng dạng sóng của từng khối, đưa ra kết quả đánh giá và tài nguyên sử dụng. Chương 6: Kết luận và hướng phát triển. Rút ra kết luận về những gì đã đạt được và các vấn đề còn tồn tại, đưa ra hướng cải tiến cũng như khả năng tích hợp vào các dự án lớn hơn.
2 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. MÃ HOÁ DỮ LIỆU Trong quá trình truyền dữ liệu, tín hiệu truyền có thể bị sai lệch do tín hiệu điện bị nhiễu hoặc sự suy giảm cường độ của tín hiệu truyền. Ngoài ra, trong hệ thống bộ nhớ bán dẫn, lỗi bit vẫn thường xuyên xảy ra do nhiễu điện hoặc do “alpha particles” và thường xảy ra ngẫu nhiên [5]. Nếu sự sai lệch đó không được phát hiện và xử lý có thể gây ra xử lý không chính xác trong các bước xử lý tiếp theo, chính vì thế việc mã hóa dữ liệu truyền nhằm đảm bảo tính chính xác của dữ liệu trong quá trình truyền là cần thiết.
Để thực hiện được hoạt động của bộ phát hiện và sửa lỗi, việc mã hóa dữ liệu trước khi truyền phải được thực hiện để có căn cứ cho bộ giải mã tiến hành kiểm tra và sửa lỗi. Mã hóa dữ liệu là việc thêm vào dữ liệu những đoạn mã nhằm giải quyết tình trạng lỗi trong quá trình lưu trữ hoặc truyền dữ liệu. Có 2 kỹ thuật mã hóa chủ yếu là mã hóa dùng nguồn và mã hóa kênh truyền. Mã hóa dùng nguồn là phương pháp rút ngắn các bit dữ liệu dư thừa để sử dụng tối đa kênh truyền hay nén dữ liệu từ chính nguồn của nó trước khi truyền đi làm dung lượng dữ liệu giảm đi, từ đó tăng hiệu quả của việc truyền dữ liệu.
Mã hóa kênh truyền là phương pháp chèn thêm các bit vào dữ liệu gốc cần truyền để kiểm soát tính chính xác của dữ liệu. Mã hóa kênh truyền giúp thông tin được truyền chính xác hơn trong môi trường nhiễu loạn của kênh truyền. Mã hóa kênh truyền được chia thành 2 loại chính là mã khối (block codes) và mã tích chập (convolutional codes). Mã tích chập là mã sửa lỗi tạo ra các parity thông qua việc trượt hàm đa thức boolean vào một dòng dữ liệu.
Bộ mã hóa tích chập lấy k bit tại một thời điểm từ chuỗi bit đầu vào và tính chuỗi đầu ra n bit (n> k). Việc tính toán được thực hiện bởi các phép toán cộng mô-đun 2 trên dữ liệu k-bit đầu vào hiện tại và lưu nội dung của các thanh ghi dịch chuyển. Sau khi thực hiện một thao tác, nội dung của thanh ghi dịch chuyển sang phải một bit [6]. Việc trượt đó biểu diễn cho sự chập của bộ mã hóa với dữ liệu, và tạo ra mã tích chập.
Mã tích chập được dùng cho việc truyền thông tin video kỹ thuật số, radio, và thông tin di động. 3 Mã khối là một họ mã sửa lỗi quan trọng để mã hóa dữ liệu. Trong mã khối, mỗi khối mang thông điệp m bit sẽ được ánh xạ thành một khối k bit (k>n) tức thêm vào các bit thông điệp những bit kiểm tra có nguồn gốc từ chúng tạo thành codeword [7]. Mã khối tuyến tính mang tính chất tuyến tính, hiểu đơn giản là tổng của 2 hay nhiều từ mã nào đó sẽ tạo nên 1 từ mã, và chúng sẽ được áp dụng vào từng khối một.
Các mã khối tuyến tính sẽ được đặc trưng bởi bộ ba số (n, m, d min) với n là số lượng bit parity thêm vào, m là số lượng bit của nguồn thông tin, dmin là khoảng cách Hamming tối thiểu của mã. Có nhiều loại mã khối khác nhau, có thể kể đến như Mã tuần hoàn (Cyclic codes), Mã tái diễn (Repetition codes), Mã chẵn lẻ (Parity codes), Mã Hamming, Mã Golay, … 2. BỘ NHỚ DRAM 2. Tổng quan về bộ nhớ DRAM Bộ nhớ là yếu tố cơ bản trong hoạt động của máy tính.
Đây là nơi lưu trữ tập lệnh và dữ liệu đang xử lý khi máy tính hoạt động. Bộ nhớ truy cập ngẫu nhiên (RAM) là một loại bộ nhớ nổi tiếng và được gọi như vậy vì khả năng truy cập bất kỳ vị trí nào trong bộ nhớ với thời gian trễ gần như tương đương ở các vị trí. Bộ nhớ truy cập ngẫu nhiên động (Dynamic Random Access Memory), hay DRAM, là một loại bộ nhớ truy cập ngẫu nhiên lưu trữ dữ liệu trong các memory cell (thường được cấu tạo từ một tụ điện và một transistor) dựa trên công nghệ bán dẫn. Hầu hết các loại bộ nhớ DRAM đều được thiết kế sử dụng tụ điện và transistor, tuy nhiên có một số loại sử dụng 2 transistor.
Các bit được lưu trữ thông qua trạng thái của tụ điện. Khi tụ được sạc đầy, nó đại diện cho mức logic 1 và ngược lại, khi tụ được xả, nó đại diện cho bit 1. Do được cấu tạo từ tụ điện, điện tích được tích tụ trong tụ sẽ giảm dần theo thời gian và nếu không có sự can thiệp, dữ liệu lưu trữ trong cell đó sẽ mất. Do tính chất này, DRAM cần có một mạch “refresh” nhằm ghi lại dữ liệu cho tụ điện sau một khoảng thời gian.
DRAM là bộ phận quan trọng trong hệ thống máy tính do có tốc độ nhanh hơn phần lớn các loại bộ nhớ khác trong hệ thống. Thông qua DRAM, máy tính có thể dễ dàng lưu trữ và truy xuất tức thì các chương trình và dữ liệu cần sử dụng. Tuy có tốc độ 4 thấp hơn SRAM, nhưng do có thể lưu trữ được nhiều dữ liệu hơn do đó DRAM có giá thành sản xuất rẻ hơn. Mặc dù có nhiều ưu điểm, DRAM vẫn có nhiều điểm không hoàn hảo: Sử dụng nhiều điện năng hơn: DRAM hoạt động ở tần số cao, do đó công suất tiêu thụ của DRAM rất lớn, mặc khác, do tụ điện trong DRAM mất dần điện tích qua thời gian và cần mạch “refresh” để làm tươi lại dữ liệu sau một khoảng thời gian cũng là nguyên nhân khiến DRAM tốn nhiều năng lượng hơn Dữ liệu lưu trữ cần được làm tươi sau một khoảng thời gian: Cấu tạo memory cell từ tụ điện khiến dữ liệu của DRAM có thể biến đổi theo thời gian, do đó cần có mạch làm tươi chính xác để nạp lại giá trị của tụ điện sau một khoảng thời gian.
Lỗi xảy ra trên bộ nhớ DRAM Trong quá trình hoạt động, nhiễu điện từ hoặc từ trường từ các bộ phận khác trong hệ thống máy tính có thể khiến một cell trên DRAM tự động chuyển trạng thái sang ngược lại. Phần lỡn các lỗi mềm trên DRAM xảy ra là kết quả của background radiation, hoặc “chifly neutrons” từ “cosmic ray secondaries” làm thay đổi trạng thái hoặc nhiễu mạch đọc/ ghi dữ liệu lên cell nhớ đó. Vấn đề này có thể được giảm thiểu thông qua việc sử dụng các bit bộ nhớ dữ phòng và mạch bổ sung sử dụng các bit này để phát hiện và sửa chữa các lỗi mềm phát sinh. Việc phát hiện và sửa lỗi được thực hiện bởi bộ điều khiển trên bộ nhớ, hoặc thi công trực tiếp tại module lưu trữ của DRAM.
Các bit nhớ bổ sung sử dụng phép tính chẵn lẻ nhằm phát hiện, định vị và sửa bit lỗi phát sinh trên module DRAM. Điều này là nguyên lý và ý tưởng cơ bản của mã sửa lỗi cho bộ nhớ (Error-Correcting Code for Memory). Do yêu cầu cao về tần số hoạt động của DRAM, do đó mã Hamming với ưu −10 −17 Các nghiên cứu chỉ ra tỷ lệ lỗi của bộ nhớ là từ 10 đến 10 thế về tính đơn giản và tốc độ thực thi nhanh thường được áp dụng cho ứng dụng này. , do đó mã Hamming có thể bảo vệ tính toàn vẹn tuyệt đối của dữ liệu.
ECC TRONG BỘ NHỚ 2. Lỗi trong bộ nhớ Lỗi bộ nhớ là sự cố xảy ra khi dữ liệu được truy cập để sử dụng bởi chương tình nào đó hoặc là giá trị đọc từ bộ nhớ không khớp với giá trị gốc mong muốn. Trong các chip bộ nhớ bán dẫn, theo nghiên cứu thường có hai loại lỗi xảy ra thường xuyên nhất là lỗi cứng và lỗi mềm. Lỗi cứng là lỗi lặp lại liên tục do lỗi phần cứng hoặc thiết kế vật lý trên module, thường do hệ thống vượt khả năng hiệu suất của bộ nhớ hoặc các nguyên nhân khác như nhiệt độ, áp suất, điện áp, quá trình chế tạo.
Lỗi cứng thường là vĩnh viễn và cần thay thế module mới hoạt động bình thường. Lỗi mềm là lỗi làm hỏng ngẫu nhiên các bit trong bộ nhớ, có thể xuất hiện trong một chu kỳ và có thể sẽ biến mất trong chu kỳ tiếp theo, nguyên nhân phổ biến nhất là do bức xạ hạt alpha và nhiễu [8]. Dữ liệu bị hỏng do các lỗi tạm thời thường được gọi là lật bit trong bộ nhớ flash, DRAM (Dynamic random-access memory), … trong đó trạng thái của bit dường như bị lật từ 0 thành 1 và ngược lại. Lỗi này làm hỏng dữ liệu, làm đảo ngược điện tích được lưu trữ trong ô nhớ, điều này xảy ra cho bộ nhớ tĩnh và động, nhưng không gây ra thiệt hại vật lý cho module bộ nhớ và xác xuất lỗi này xảy ra trong thiết bị rất thấp.
Lỗi này không xảy ra vĩnh viễn vì vậy sẽ không có thiệt hại −9 trong bộ nhớ rất nhỏ vào khoảng 10. vật lý nào được thực hiện đối với chip. Theo nghiên cứu chỉ ra rằng, xác suất lỗi xảy ra Do đó, để đảm bảo tính toàn vẹn của dữ liệu khi đọc từ bộ nhớ, dữ liệu cần phải chính xác nên cần phải phát hiện bất kỳ lỗi nào xảy ra và sửa chúng. Vì vậy, công nghệ mã sửa lỗi là một phương pháp được sử dụng để phát hiện và sửa lỗi trong các thiết bị lưu trữ.
Tổng quan về ECC Đối với các thiết bị điện tử, việc lưu trữ dữ liệu chính xác là nhiệm vụ quan trọng nhất, chúng ta cần tránh những lỗi có khả năng xảy ra hoặc có một phương pháp để phát hiện và sửa chúng. Trong đề tài này, nhóm thảo luận về phương pháp phát hiện lỗi và kỹ thuật sửa lỗi. Mã sửa lỗi là một quá trình tính toán để dữ liệu được lưu trữ trong bộ 6 nhớ là chính xác.