Tính toán CRC

Một phần của tài liệu Thiết kế và thi công hệ thống dữ liệu phát thanh RDS (Trang 26)

Mỗi khối (block) bao gồm 26 bit trong đó có 16 bit word và 10 bit checkword và 10 bit checkword này sẽ được tính toán bằng cách cộng kết quả CRC (từ phép tính toán học) với giá trị offset cho sẵn trong bảng (mục 2.3). Việc tính toán CRC thực hiện theo chuẩn RDS, hình sau mô tả cấu trúc phần cứng của việc tính CRC:

Chương 4: Thiết kế khối mã hóa RDS

Phương pháp này yêu cầu số linh kiện nhiều và cực kì phức tạp. Do đó chúng ta có thể thay thế bằng cách đơn giản thông qua vi xử lý, nhưng có một vấn đề đặt ra là chúng ta cần chia một số 26 bit bởi một số 10 bit trên bộ vi xử lý 8 bit.

Modulo 2 tính CRC :

Xét ví dụ sau :

Đại lượng bị chia là dữ liệu chứa trong thanh ghi 8 bit (thông điệp), số bit 0 cộng và thông điệp chính bằng số bit của checksum (4 bit), số chia là các bit (đa thức G ở đây là 10011). Việc chia được thực hiện như sau:

- Coi thương số đầu tiên là thông điệp (có trọng số cao nhất là bit 1), điền bit 1 vào bit có trọng số cao nhất của thương số (quotient).

- Tiếp tục XOR lần lượt các bit thông điệp có trọng số cao thứ 2 trở xuống (*110010) lần lượt các bit có trọng số cao thứ 2 trở xuống của đa thức G (*1011) được thương số thứ 2, thêm bit 1 từ thông điệp vào thương số mới để đạt đủ 5 bit.

- Nếu bit cao nhất của số dư là 1, tiếp tục thêm 1 làm bit cao nhất cua thương số và XOR số dư với 11011 để có thương số mới. Nếu bit cao nhất của số dư không phải 1 điền số 0 làm bít cao nhất của thương số (quotient) và XOR số dư với zeros.

Hình 3.8 : Ví dụ tính CRC

Chương 4: Thiết kế khối mã hóa RDS

Tuy nhiên , trong bộ vi xử lý chỉ có các thanh ghi 8 bit không có lệnh thực hiện module 2, vì vậy ta có thể thực hiện thông qua một vài thuật toán đơn giản (Hình 3.9).

Thanh ghi bây giờ bao gồm các số dư. Trên thực tế điều kiện [if] có thể được kiểm tra bằng cách kiểm tra các bit cao nhất của thanh ghi trước khi thực hiện dịch. Hình sau mô tả quá trình thực thi kỹ thuật này. Phương pháp này có thể được mở rộng cho những đối số lớn hơn. Trong trường hợp của khối RDS, 26 bit có nghĩ là sử dụng 4 thanh ghi 8-bit cho dữ liệu message và 10 bit đa thức sẽ cần 2 thanh ghi 8-bit. Ngoài ra 1 thanh ghi đệm và 2 thanh ghi working sẽ được sử dụng. Dữ liệu sẽ được quay trái qua các thanh ghi đệm, từng bit một và bất cứ khi nào một bit xuất hiện trong cờ carry thì cả các thanh ghi [carry] hay [XORed] với các thanh ghi đa thức phát. Quá trình này được lặp đi lặp lại cho tới khi 16 bit thêm (so sánh với đa thức 10-bit) được dịch hết. Các số dư tại các thanh ghi working đó là giá trị CRC của message (16-bit).

Hình 3.9: Thuật toán tính CRC trong vi xử lý

Một phần của tài liệu Thiết kế và thi công hệ thống dữ liệu phát thanh RDS (Trang 26)