1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tiểu luận cuối kỳ crc encoder decoder môn học thiết kế hệ thống và vi mạch tích hợp

35 2 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 35
Dung lượng 838,89 KB

Nội dung

Ví dụ, trong cuộc sống hàng ngày, gửi dữ liệu từ thiết bị này sang thiết bị khác bằng USB, bằng Bluetooth, bằng Ethernet,… CRC có độ tin cậy cao trong việc truyền dữ liệu vì thuật toán c

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HỒ CHÍ MINH

KHOA ĐIỆN ĐIỆN TỬ

Trang 2

MỤC LỤC

LÝ DO CHỌN ĐỀ TÀI 1

PHẦN NỘI DUNG 2

CHƯƠNG 1: TỔNG QUAN VỀ CRC 2

1.1 Khái quát CRC 2

1.2 Đa thức sinh 2

1.3 Hiệu năng 5

CHƯƠNG 2: TÌM HIỂU VỀ CRC ENCODER VÀ DECODER 6

2.1 Encoder / decoder là gì ? 6

2.2 CRC encoder / decoder 6

3.1 Encoder 10

3.2 Bộ Decoder 14

3.3 Đánh giá qua testbench 16

3.4 Nhận xét và đánh giá 22

KẾT LUẬN 24

Trang 3

1

LÝ DO CHỌN ĐỀ TÀITrong thời kỳ cách mạng công nghiệp 4.0, trong kỷ nguyên thông tin Ngày nay không còn ai nghi ngờ gì vai trò của thông tin trong đời sống, trong khoa học kỹ thuật, và trong mọi mặt của xã hội, dưới mọi quy mô, từ

xí nghiệp - công ty cho đến quốc gia và toàn cầu Việc nắm bắt thông tin thật nhanh, chính xác và kịp thời ngày càng đóng vai trò cốt yếu trong việc quản lý cũng như điều hành

- Nhiều người ít khi biết một chiếc máy tính hoạt động như thế nào, cách truyền dữ liệu ra sao Trong quá trình truyền, dữ liệu luôn bị tác động bởi nhiều yếu tố, làm sai lệch dữ liệu truyền và nhận Vì vậy hệ thống cần

có độ tin cậy cao với cơ chế phát hiện và sửa lỗi Đó chính là lý do chúng tôi lựa chọn đề tài tiểu luận: Cyclic Redundancy Check (CRC) encoder/decoder Việc phát hiện và sửa lỗi là một lĩnh vực đã được nghiên cứu sâu và ứng dụng mạnh mẽ Tuy nhiên, tiểu luận được trình bày có tính

cơ bản và tổng quan Tiểu luận chỉ nhằm mục đích tóm tắt lại những kiến thức mà nhóm chúng tôi đã thu nhận được qua một thời gian học tập ngắn

và qua tham khảo một số tài liệu tiểu luận gồm các phần như sau:

- Tổng quan và nguyên lí hoạt động của CRC

- Encoder và Decoder

- Thiết kế CRC Encoder và Decoder bằng VHL

Trang 4

2

PHẦN NỘI DUNG

CHƯƠNG 1: TỔNG QUAN VỀ CRC 1.1 Khái quát CRC

CRC (Cyclic Redundancy Check) là một phương pháp phát hiện lỗi được sử dụng trong truyền dữ liệu CRC thường được sử dụng trong mạng

kỹ thuật số và thiết bị lưu trữ để phát hiện những thay đổi ngẫu nhiên đối với dữ liệu thô Ví dụ, trong cuộc sống hàng ngày, gửi dữ liệu từ thiết bị này sang thiết bị khác bằng USB, bằng Bluetooth, bằng Ethernet,… CRC

có độ tin cậy cao trong việc truyền dữ liệu vì thuật toán của nó dựa trên mã tuần hoàn

Đa thức của bộ chia:

∑ (ký số x i ); với i là vị trí của ký số, i= 0÷ n; bộ chia có n+1 bit

Quan hệ giữa chuỗi đa thức với biểu diễn nhị phân được minh họa ở hình sau:

Trang 5

3

Một đa thức sinh của bộ chia cần được chọn theo các đặc tính sau:

- Chia đúng cho đa thức (x + 1)

Điều kiện đầu nhằm bảo đảm là tất cả các nhiễu bệt có độ dài bằng bậc của đa thức sinh đều được phát hiện Điều kiện thứ hai bảo đảm là tất cả các nhiễu bệt ảnh hưởng lên thứ tự bit lẻ được phát hiện

Ví dụ 1:

Rõ ràng là ta không thể chọn x (số nhị phân 10) hay x2 + x (số nhị phân 110) làm đa thức được vì chúng chia hết cho x Tuy nhiên, ta có thể chọn x+1 (tương ứng 11) do không chia hết cho x, mà chia hết cho (x+1), cũng như ta có thể chọn x2 + 1 (số nhị phân 101) do chia hết cho (x+1) Các đa thức chuẩn dùng trong bộ chia CRC được minh họa trong hình 13 Các số 12, 16, và 32 có liên quan đến kích thước của dư số CRC Bộ chia CRC tương ứng là 13, 17 và 33 bit

Đa thức sinh hoạt động như một bộ chia trong thuật toán CRC Việc sử dụng CRC phải sử dụng cùng một đa thức bộ tạo trên bộ mã hóa hoặc tại

Trang 6

CRC dựa trên lý thuyết về mã sửa lỗi theo chu kỳ Việc sử dụng các mã tuần hoàn có hệ thống, mã hóa thông điệp bằng cách thêm giá trị kiểm tra

có độ dài cố định, nhằm mục đích phát hiện lỗi trong mạng truyền thông Trong Lớp OSI, CRC hoạt động trên lớp 2, cụ thể là Liên kết dữ liệu Liên kết dữ liệu có hai chức năng chính là Kiểm soát liên kết dữ liệu và Kiểm soát truy cập phương tiện Kiểm soát liên kết dữ liệu chịu trách nhiệm về thiết kế và các thủ tục giao tiếp giữa hai nút liền kề: giao tiếp từ nút tới nút

và kiểm soát truy cập phương tiện hoặc cách chia sẻ liên kết Kiểm soát Liên kết Dữ liệu có các chức năng bao gồm Kiểm soát Khung, Luồng và Lỗi, và các giao thức được triển khai bằng phần mềm giúp truyền tải các khung giữa các nút một cách trơn tru và đáng tin cậy

Cũng giống như nếu có một đa thức tạo G (x) với mã 𝑋 ^ 6 + X + 1, nó sẽ đại diện cho mã 1000011 Như trong Hình 1

Trang 8

để truyền hoặc lưu trữ hiệu quả

2.2 CRC encoder / decoder

Trong tính toán hầu như không có sự khác biệt được thực hiện trên bộ mã hóa hoặc bộ giải mã Sự khác biệt xảy ra là nơi bộ mã hóa có một từ dữ liệu tăng cường và bộ giải mã có phần còn lại

Quá trình mã hóa ban đầu tạo ra một mã CRC duy nhất, dữ liệu được nhập trước, sau đó dữ liệu sẽ được sao chép vào bộ xử lý mã hóa, sau đó dữ liệu

sẽ nhận một số bit theo CRC được sử dụng, với nhị phân 0 Sau đó chia dữ liệu bit với bộ tạo đa thức Trong phép chia này, một bit được dịch chuyển trong mỗi lần chia và để xác định xem phần còn lại của phép chia sau đó

có được chia cho số chia đa thức hay không, cần phải chú ý đến MSB Việc phân chia hoàn tất cho đến khi bit dữ liệu cuối cùng trong từ dữ liệu tăng cường được sử dụng Sau khi hoàn thành, các kết quả còn lại sẽ được sử dụng làm mã CRC duy nhất Như trong hình sau

Trang 9

Trong hình 4, cho thấy rằng khi bộ giải mã nhận được một từ mã đã có một

sự thay đổi khi gửi dữ liệu

 Vẫn có sự sai sót trong việc phát hiện lỗi khi sử dụng mã này

Trang 10

8

Ví dụ: Dữ liệu phát là 111101, đa thức sinh là 1101

111101000 (3 bit 0 ngoài cùng là 3 bit 0 được thêm vào)

Trang 11

9

Khả năng kiểm tra lỗi của CRC:

Ví dụ ta có dữ liệu thu là 111100011 (0 là bit bị lỗi so với dữ liệu bên phát

Trang 12

10

CHƯƠNG 3: THIẾT KẾ VÀ CODE VERILOG CHO BỘ CRC

ENCODER VÀ CRC DECODER 3.1 Encoder

3.1.1 Tổng quát

Encoder có vai trò tạo ra mã CRC Từ mã CRC này, nó sẽ được gắn vào

dữ liệu đầu vào, tạo dữ liệu đầu ra, dữ liệu này sau khi ra khỏi bộ encoder

sẽ được đưa vào bộ decoder để kiểm tra lỗi

Để tạo được mã CRC, bộ encoder này sẽ dùng CRC-4, bộ chia cố định là: x4 + x +1 Bộ có ngõ vào cơ bản sẽ là dữ liệu 8 bit để đưa dữ liệu vào, một ngõ vào là xung clock để mạch hoạt động, cùng với đó, mạch sẽ có hai ngõ vào khác gồm: ngõ vào en để cho phép mạch chạy hoặc dừng, ngõ vào reset để reset lại hoạt động của mạch

Vì dùng CRC-4, ngõ ra của bộ sẽ là mã CRC 4 bit, ngoài ra để biết được khi nào việc tính toán đã xong, có thêm ngõ ra mang tên “hoanthanh” với

“hoanthanh” lên mức 1 đồng nghĩa việc tính toán đã hoàn tất

Sơ đồ khối của Modules

Trang 13

11

S

3.1.2 Thiết kế chi tiết

Đầu tiên là việc thiết kế cho ngõ vào Với xung clock, ngõ vào là “clk”, ngõ vào này tạo xung cho module, phần tạo mã CRC sẽ hoạt động với cạnh lên của xung clock, do đó cần để phần code tính toán CRC vào trong khối lệnh:

Dữ liệu vào 8 bit được đặt tên là “data” và được khai báo với độ dài 8 bit Trước khi trừ cho bộ chia CRC-5, data phải được them vào 4 bit 0 vào sau Dùng lần lượt các thanh ghi và dây sau:

- Thanh ghi “temp” 12 bit : mang dữ liệu của data, đồng thời có thêm 4 bit

0 vào sau

- Dây “datavao” 8 bit: có chức năng đưa dữ liệu của data vào temp

Muốn tạo một data có thêm 4 bit 0, giá trị của data sẽ được đưa vào 8 bit sau của thanh ghi temp, từ đó temp sẽ có giá trị với 4 bit đầu là 0 và 8 bit sau giống với data Dòng code sẽ được thực hiện như sau:

Trang 14

12

Sau khi có gán 4 bit 0 thêm vào cho data xong, phần tiếp theo sẽ là tính CRC Như đã giới thiệu ở trên, bộ chia của encoder này là: x4 + x +1 nên

sẽ có giá trị nhị phân là 10011, giá trị này sẽ được gắn với tham số tên là

“bochia” Với bộ encoder này, phương pháp tính CRC sẽ là cơ bản nhất, tức là dùng phương pháp trượt Bộ sẽ dùng thêm một thanh ghi “m” 4 bit, thanh ghi này có vai trò là số thứ tự của các bít trong temp Khi trừ bộ chia

5 bit, chúng ta sẽ lần lượt dùng 5 bit, với bit bên trái cùng là bit có trọng số lớn nhất và có giá trị một, sau đó lấy thêm 4 bit tiếp theo rồi bắt đầu trừ Chính vì thế, tùy vào dữ liệu vào mà thanh ghi “m” sẽ mang giá trị khác nhau khi bắt đầu chia, nếu như dự liệu vào 8 bit mà bit trọng số lớn nhất

có giá trị là 1, “m” sẽ có giá trị là 7, rồi cứ tương tự với các giá trị khác Tiếp theo đó, 5 bit mang giá trị trừ xong sẽ được gán lại vào 5 bit vừa mới trừ Sau khi gán xong, “m” sẽ giảm cho đến khi bit thứ tự thứ “m” tiếp theo của temp mang giá trị 1, khi đó sẽ lại lấy 4 bit tiếp theo kể từ “m” để trừ cho bochia

Hoạt động tính toán này sẽ dừng lại và hoàn tất khi giá trị m=3, lý do là vì

dù có tính toán ra sao, dữ liệu cũng không thể được trừ tiếp cho bộ chia nếu có số bit thấp hơn số bit của bochia Khi đó, 4 bit có trọng số thấp nhất của thanh ghi temp chính là mã CRC cần tìm, ta sẽ gán nó vào trong ngõ

ra 4 bit mang tên là “CRC”

Giá trị của “m” khi bắt đầu sẽ là 11, còn khi bắt đầu trừ sẽ tùy thuộc vào data

Sau khi giải quyết phần tính toán CRC, phần tiếp theo sẽ là giải quyết các chân ngõ vào reset, en, ngõ ra “hoanthanh”

Với ngõ vào reset, nó được đặt tên là “rst”, khi rst = 1, mạch sẽ về lại ban đầu, tức biến m khi bắt đầu sẽ là 11, temp sẽ quay về lại giá trị khi bắt đầu trừ cho bochia, CRC về lại 0 Để được như vậy, chúng ta sẽ liên kết với

Trang 15

13

khối gán dữ liệu cho temp và khối tính toán CRC Với khối gán dữ liệu cho temp, một điều kiện sẽ được thêm vào trước khi hoạt động, bộ encoder sẽ dùng luôn thanh ghi m cho tiện Thanh ghi “m" sẽ được mang điều kiện giá trị bất kỳ, miễn không nằm trong khoảng từ 11 đến 3 vì đây là giá trị

“m” chúng ta dùng trong khối tính toán Vì thế, thanh ghi “m" sẽ giả sử ban đầu mang giá trị là 12, điều kiện để thực hiện khối gán giá trị là m =

12, sau khi thực hiện gán xong, m phải bằng 11 để thực hiện khối tính toán Với các liên kết như vậy đã xong, giờ rst sẽ hoạt động mỗi khi lên 1, khi

đó, m sẽ bằng 12, giá trị temp sẽ được gán lại, các bước tính toán thực hiện lại từ đầu

Với ngõ vào en, nó sẽ kết hợp với việc dừng sau khi tính toán xong CRC ở khối tính toán trên, như vậy, mạch sẽ dừng nếu như m = 3 hoặc en = 1

Về ngõ ra “hoanthanh”, nó có nhiệm vụ báo hiệu việc tính toán CRC đã hoàn tất, nó sẽ lên một khi tính CRC đã xong tức khi m = 3 Việc gán giá trị cho hoanthanh sẽ dùng thông qua thanh ghi i

Trang 17

15

thử dữ liệu truyền có bị lồi không Sơ đồ tổng quát của bộ decoder CRC –

4 như sau:

3.2.2 Thiết kế chi tiết

Cách thức hoạt động của bộ decoder này gần giống như của bộ encoder Các ngõ vào clk, en, rst, ngõ ra hoanthanh các thanh ghi hoàn toàn giống với của bộ encoder

Về ngõ vào codeworld, ngõ vào này giờ đây có sẵn 12 bit nên không cần gán them gì cả, khối gán giờ sẽ chỉ có câu lệnh duy nhất:

temp = datavao;

Với datavao là wire 12 bit được nối với ngõ vào codeword

Bộ decoder sẽ hoàn tất việc tính toán xong khi m bằng 3, giá trị của 4 bit trọng số bé nhất của temp sẽ được gán vào ngõ ra remainder Nếu giá trị này bằng 0, dữ liệu xem như không có sai sót xảy ra, ngược lại nếu khác

Trang 18

16

không, dự liệu có thể đã xảy ra sai sót hoặc do lúc bắt đầu, dữ liệu giống hoàn toàn với bochia

3.3 Đánh giá qua testbench

3.3.1 Mô hình testbench tổng quát

Nối dây và các thanh ghi vào các ngõ vào/ra như sau:

Trang 21

19

Đầu tiên, mạch bắt đầu từ clk = 0 , en = 1, rst = 0 trong 400ns, một khoảng

thời gian đủ lâu đối với xung clk có chu kỳ 20ns để chương trình hoạt động

hoàn chỉnh

Thứ hai, rst = 1 trong 20ns, chương trình sẽ được reset về lại ban đầu

Thứ 3, rst về lại, en về 0 trong 50ns, sau đó lên 1 lại đến hết

3.3.3 Kết quả

Với bộ Encoder

Trong 400ns đầu:

Trang 22

20

Từ 400ns đầu trở về sau:

Với bộ Decoder: Do ngõ ra CRC của encoder là khi hoanthanh lên 1 là

1001 nên codeword của bộ decoder sẽ là 12'b110100111001

Trong 400ns đầu:

Trang 23

21

Từ 400ns đầu trở về sau:

Trang 24

22

Với bộ decoder: Với codeword = 12'b111100111001 (dữ liệu sai lệch với

codeword ở trên 1 bit

Như vậy, ngõ vào rst , en, khối dừng lại khi tính xong CRC, ngõ ra hoanthanh đã hoạt động hiệu quả

*Ở bộ decoder:

Trang 25

Như vậy, có thể thấy 2 điều:

-Thứ nhất: Bộ encoder đã hoạt động đúng như yêu cầu

-Thứ hai: Bộ decoder cũng đã hoạt động đúng khi nó đã phát hiện được sự sai sót nếu như dữ liệu vào bị sai

Trang 26

24

KẾT LUẬN

Nghiên cứu này được thiết kế và thực hiện bằng VHDL, thiết kế này đáp ứng được mong muốn và có kết quả phù hợp Giống như trong một bộ mã hóa nơi nó được chỉ định để tạo ra một mã duy nhất, sau đó được kết hợp với mã gốc thành một từ mã Trong bộ mã nơi nó được chỉ định để phân tích cú pháp từ mã đã nhận và xác nhận xem từ mã nhận được có lỗi hay không Nếu xảy ra lỗi loại bỏ dữ liệu, nếu không có lỗi thì tiếp tục Mong đợi thiết kế sẽ được tích hợp với các hệ thống trong tương lai

Trang 27

Tài liệu tham khảo

1 Giáo trình Kỹ thuật truyền số liệu, NXB Đại học Quốc gia TP.HCM

2 P, P S., A, R., & Kotain, A S (2012) FPGA Implementation of Single

Bit Error Correction using CRC International Journal of Computer

Applications, 52(10), 2 - 6

3 Forouzan, B A., & Fegan, S C (2007) Data Communications and

Networking New York: McGraw-Hill Higher Education

4 ANDHI RACHMAN SALEH,SUNNY ARIEF SUDIRO,CRC 8-bit

Encoder-Decoder Component in FPGA using VHDL, 3-6

Trang 30

end else

begin

case(temp[m])

khong: m <= m-1;

mot: begin

temp[m] <= temp[m] ^ bochia[4];

temp[m-1] <= temp[m-1] ^ bochia[3];

temp[m-2] <= temp[m-2] ^ bochia[2];

temp[m-3] <= temp[m-3] ^ bochia[1];

temp[m-4] <= temp[m-4] ^ bochia[0];

end endcase end end

assign hoanthanh = i;

assign CRC = temp[3:0];

endmodule

Trang 32

if(rst == 1) begin

m = 12;

i = 1'b0;

end else if(m == 12) begin

begin

case(temp[m])

khong: m <= m-1;

mot: begin

temp[m] <= temp[m] ^ bochia[4];

temp[m-1] <= temp[m-1] ^ bochia[3];

temp[m-2] <= temp[m-2] ^ bochia[2];

Trang 33

temp[m-3] <= temp[m-3] ^ bochia[1];

temp[m-4] <= temp[m-4] ^ bochia[0];

end endcase end end

assign hoanthanh = i;

assign remainder = temp[3:0];

endmodule

Trang 34

BẢNG ĐÁNH GIÁ KẾT QUẢ LÀM VIỆC NHÓM

Ngày đăng: 01/12/2024, 20:32

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w