Tải bản đầy đủ (.docx) (41 trang)

Thiết kế và thi công hệ thống dữ liệu phát thanh RDS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.24 MB, 41 trang )

Mục lục

MỤC LỤC


Mục lục

TỪ VIẾT TẮT - THUẬT NGỮ
FM: Frequency Modulation (Điều chế tần số)
VHF: Very High Frequency (Mức tần số rất cao)
NF: Network Follow
RDS: Radio Data System (Hệ thống dữ liệu radio)
RBDS: Radio Broadcast Data System (Hệ thống dữ liệu phát thanh radio)
PS: Programme Service (Tên dịch vụ chương trình)
PI: Programne Identification code (Mã nhận dạng chương trình)
DI: Decoder Identification code (Mã nhận dạng chức năng)
PTY: Programme Type Code (Mã kiểu chương trình)
TP: Traffic Program Identification code (Mã nhận dạng chương trình phương tiện)
TA: Traffic Anouncement code (Mã thông báo trạm)
M/S: Music-Speech switch code (Mã chuyển âm nhạc/ tiếng nói)
CRC: Cyclic redundancy check (Mã kiểm tra lỗi)
ARI: Autofahrer-Rundfunk-Information System là hệ thống chỉ ra sự có mặt của thông
tin kênh truyền trên băng tần FM được ứng dụng tại mạng FM ARD Đức từ năm 1974,
được phát triển bởi IRT và Blaupunkt, ARI là hệ thống tiền nhiệm của RDS và đã lỗi
thời.
Cross Talk (Nhiễu xuyên âm): Loại nhiễu xuất hiện khi hai hoặc nhiều đường tín hiệu
bị nhiễu sang nhau gây ra hiện tượng tín hiệu của đường truyền này lại trở thành nhiễu
của đường truyền kia và ngược lại.

GIỚI THIỆU
Hệ thống dữ liệu phát thanh (RDS) ở một trạm phát dữ liệu cho phép cung cấp


thêm thông tin về kênh truyền cho các kênh ở dãy tần FM và VHF, thông tin dữ liệu
này có thể là tín hiệu cảnh báo, tín hiệu điều khiển hoặc các thông tin văn bản kèm
theo. Có nhiều ứng dụng của RDS nhưng hai ứng dụng được sử dụng nhiều nhất trên


Mục lục
thế giới là tự động chuyển tần số cùng kênh và phát văn bản tên kênh truyền. Để tránh
hiện tượng giao thoa ở những vùng lãnh thổ tiếp giáp, ta phải sử dụng các tần số khác
nhau. Hệ thống RDS này hỗ trợ NF cho phép máy thu radio tự động chuyển tần số với
cùng một kênh khi qua vùng tiếp giáp dựa vào độ mạnh của tín hiệu. RDS sử dụng một
Sub-carrier FM để truyền dòng thông tin. Đó là đặc điểm nổi bật so với hệ thống radio
truyền thống. Hệ thống RDS đã được áp dụng ở hầu hết các nước châu Âu, Hoa kỳ và
một vài vùng lãnh thổ khác trên thế giới với hơn 50 triệu thiết bị được sử dụng và ngày
càng được cải tiến hơn. Việc thương mại hóa một bộ RDS là rất đắt và yêu cầu một PC
chuyên dụng và sử dụng PC sẽ khiến hệ thống thêm phức tạp, tuy nhiên chúng ta có thể
xây dựng một bộ mã hóa RDS đơn giản hơn bằng cách sử dụng các linh kiện điện tử và
lập trình trên vi xử lý.
Đề tài sẽ thực hiện việc thiết kế các quá trình nhập, mã hóa, và phát 8 ký tự văn
bản để nhận biết tên kênh truyền, đồng thời nó cũng cho phép tự động dịch tần số cùng
kênh khi qua vùng tiếp giáp. Ví dụ: Hai trạm phát thanh phường Hòa Khánh được đặt ở
hai nơi phát ở tần số 103.4Khz, 103.7Khz nhập tên [HOAKHANH] qua bộ phím nhấn
RDS, máy thu radio chuẩn RDS sẽ hiểu thị tên [HOAKHANH] ở màn hình đồng thời
khi qua vùng tiếp giáp giữa hai trạm thì máy thu sẽ tự động dịch qua thu tín hiệu trạm
kia. Đồ án này thực hiện thiết kế bộ toàn bộ bộ mã hóa, đường dữ liệu, nhúng thông tin
vào vi xử lý, thông tin sẽ được nhúng vào sử dụng vi xử lý thông dụng là PIC16F877A
đạt các yêu cầu để có thể sử dụng cho bộ mã hóa RDS và việc mô phỏng sẽ thực hiện
bởi Proteus Ares. Lập trình trên phần mềm MPLAB IDE và PICC.


Chương 1: Các lớp vật lý của hệ thống RDS


CHƯƠNG 1

CÁC THÔNG SỐ VẬT LÝ CỦA HỆ THỐNG RDS
1.1. Giới thiệu chương
Chuẩn RDS được giới thiệu lần đầu tiên để phục vụ cho việc xử lý tín hiệu cho mã
hóa RDS (ở các nước Châu Âu), chuẩn RBDS là phiên bản khác với tên gọi khác của
RDS được cải biên để phù hợp với các yêu cầu ở Bắc Mỹ. Hệ thống RDS ứng dụng tại
các trạm phát sóng VHF/FM trong khoảng tần từ 87.5MHz tới 108.0 MHz và nó có thể
mang thông tin được cả cho chương trình stereo (đa âm) và mono (đơn âm).
Chương 1 sẽ trình bày các chuẩn vật lý, cũng như nguyên lý cốt lõi của chuẩn hệ
thống RDS:
+ Tần số sóng mang
+ Pha sóng mang
+ Mức Sub-carrier
+ Phương pháp điều chế
+ Tần số clock và tốc độ dữ liệu
+ Mã hóa vi sai
+ Điều chế lập khuôn kênh dữ liệu

1.2. Tần số sóng mang
Trong chương trình phát sóng âm thanh stereo, các Sub-carrier sẽ được khóa ở hài
điều hòa thứ ba 19 kHz (pilot-tone). Sai số tối đa cho phép là 19 kHz ± 2Hz, do đó
dung sai tần số của Sub-carrier trong phát sóng stereo sẽ là ± 6 Hz. Trong chương trình
phát sóng mono (đơn âm) tần số của Sub-carrier sẽ là 57 kHz ± 6 Hz.

1.3.

Pha sóng mang


Trong các chương trình phát sóng FM, Sub-carrier sẽ được khóa hoặc cùng pha
hoặc vuông pha với tần số điều hòa thứ ba 19kHz (pilot-tone). Sai pha cho phép trong
khoảng ± 10°, được đo tại đầu vào bộ điều chế máy phát FM. Hình 1.1 cho thấy các
dãy phổ của tín hiệu FM, Hình 1.2 là sơ đồ khối của một bộ mã hóa RDS tại đầu phát,
Hình 1.3 là sơ đồ khối của một bộ thu RDS.
4


Chương 1: Các lớp vật lý của hệ thống RDS

Hình 1.1: Phổ tần FM

Hình 1.2: Sơ đồ khối của bộ mã hóa RDS

5


Chương 1: Các lớp vật lý của hệ thống RDS

Hình 1.3: Sơ đồ khối của bộ giải mã RDS

1.4. Mức Sub-carrier
Giới hạn cho phép sai lệch tần số sóng mang FM để sóng mang có thể được điều
chế là từ ±1kHz tới ±7kHz, sai lệch để hệ thống hoạt động tốt thường trong khoảng
±2kHz. Các bộ giải mã hay giải điều chế cũng phải hoạt động tốt khi độ lệch của Subcarrier thay đổi trong những giới hạn thời gian không bé hơn 10ms. Sai lệch tối đa cho
phép là do sự tổng hợp tín hiệu đa kênh là ±75 kHz.

1.5. Phương pháp điều chế
Sub-carrier được điều chế biên độ bằng cách lập khuôn dữ liệu và kết hợp tín
hiệu được mã hóa song pha (bi-phase), triệt sóng mang. Phương pháp điều chế này ứng

dụng từ phương pháp khóa dịch (BPSK) với độ lệch phase là ±90o.

1.6. Tần số clock và tốc độ dữ liệu
Tần số clock cơ bản được xác định bằng cách chia tần số sub-carrier (57kHz)
được phát đi cho 48.

6


Chương 1: Các lớp vật lý của hệ thống RDS
Do đó tốc độ dữ liệu (Data rate) của hệ thống là 1187.5 bit/s ± 0.125 bit/s.

1.7. Mã hóa vi sai
Dữ liệu nguồn tại máy phát được mã hóa vi sai dựa vào kết quả sau:
Đầu ra trước đó ( ti-1)
0
0
1
1

Đầu vào mới (ti)
0
1
0
1

Đầu ra mới (ti)
0
1
1

0

Bảng 1.1: Mã hóa vi sai
Trong đó ti là hàm thời gian, ti-1 là thời gian mà một thông điệp dữ liệu clock chu
kì trước đó và t là nơi tần số thông điệp dữ liệu clock bằng 1187.5 Hz.
Do đó khi đầu vào ở mức 0, đầu ra vẫn duy trì ở mức không đổi so với bit đầu
ra trước đó, và khi một đầu vào bằng 1, bit đầu ra mới bù cho bit đầu ra trước đó.
Tại máy thu dữ liệu phải được giải mã với quy trình ngược lại mô tả trong bảng sau:
Đầu vào trước đó( ti-1)
0
0
1
1

Đầu vào mới (ti)
0
1
0
1
Bảng 1.2: Giải mã vi sai

Đầu ra mới (ti)
0
1
1
0

1.8. Điều chế lập khuôn kênh dữ liệu
Công suất của tín hiệu dữ liệu tại vùng tần số Sub-carrier 57kHz được tối thiểu
bằng cách mã hóa mỗi bit dữ liệu nguồn thành các ký hiệu song pha (bi-phase).

Điều này được thực hiện để tránh hiện tượng cross talk tại vòng khóa phase (PLL) và
đạt yêu cầu tương thích với các hệ thống ARI trước đây. Nguyên lý của quá trình được
mô tả chi tiết ở hình 1.2. Mỗi bit nguồn được định nghĩa bởi một cặp tín hiệu xung đơn
vị như sau:

7


Chương 1: Các lớp vật lý của hệ thống RDS
e(t) mức logic 1 tại nguồn:
e(t) = δ(t) – δ(t-td/2)
Và mức logic 0 được cho bởi:
e(t) = δ(t) + δ(t-td/2)
Các cặp xung này được lập khuôn (shaped) bởi một bộ lọc H T(f), để đạt yêu cầu về phổ
băng tần:
HT(f) =
Với td = s
Các bộ lọc lập khuôn phổ dữ liệu đã được cân bằng về số lượng giữa các máy phát và
thu (để đạt được hiệu suất tối ưu khi có sự hiện diện của tiếng ồn) do đó, một cách lý
tưởng, các bộ lọc dữ liệu tại máy thu phải có thể nhận dạng với thông số được sử dụng
máy phát (được nêu ở trên). Nhìn chung phổ kênh dữ liệu được lập khuôn bởi H o(f) sẽ
đạt được 100% dạng sóng cosin.
Các đáp ứng bộ lọc thông thấp tại máy phát và máy thu được định nghĩa bằng phương
trình HT như trên, việc lập khuôn phổ kênh dữ liệu được mô tả ở hình 1.5.
Phổ của tín hiệu dữ liệu radio được mã hóa song pha ở máy phát được biểu diễn ở hình
1.6 và hàm theo thời gian của tín hiệu song pha (ở máy phát) được mô tả ở hình 1.7.
Dạng sóng của tín hiệu dữ liệu radio tần số 57kHz tại đầu ra của thiết bị nguồn dữ liệu
radio biễu diễn ở hình 1.7.

8



Chương 1: Các lớp vật lý của hệ thống RDS

Hình 1.4: Đáp ứng biên độ của bộ lọc lập khuôn dữ liệu tại máy phát và máy thu.

Hình 1.5: Đáp ứng biên độ sau kết hợp các bộ lọc lập khuôn dữ liệu ở máy phát và
máy thu.

9


Chương 1: Các lớp vật lý của hệ thống RDS

Hình 1.6 : Tín hiệu dữ liệu radio được mã hóa song pha (bi-phase).

Ký hiệu được phát khi bit dữ liệu ở mức 1
Ký hiệu được phát khi bit dữ liệu ở mức 0
Chu kì của một xung dữ liệu (clock data) : td = giây

10


Chương 1: Các lớp vật lý của hệ thống RDS
Hình 1.7: Tín hiệu song pha (bi-phase) theo thời gian.

Hình 1.8 : Tín hiệu dữ liệu radio 57kHz.

1.9. Kết luận chương
Dù là một hệ thống phát RDS bất kỳ nào cũng đều được nghiên cứu và phát

triển dựa trên các hệ thống vật lý và nguyên lý đã nêu ở trên, mục đích là để đảm bảo
sự đồng bộ hoạt động của các thiết bị theo chuẩn quốc tế cũng như đảm bảo sự thống
nhất. Dựa trên chuẩn đó chúng ta sẽ tiếp tục nghiên cứu làm sao để thực hiện mã hóa
tín hiệu RDS.

11


Chương 2: Mã băng gốc của hệ thống RDS

CHƯƠNG 2

MÃ BĂNG GỐC CỦA HỆ THỐNG RDS
2.1.

Giới thiệu chương
Để máy thu có thể nhận được thông tin văn bản chính xác từ máy phát truyền đi

thì việc đầu tiên là phải đảm bảo đồng bộ cấu trúc thông tin giữa máy phát và máy thu,
từ yêu cầu đó ta đi tới thiết lập cấu trúc mã hóa cũng như là định dạng thông tin cho hệ
thống. Ngoài ra việc truyền sóng trong môi trường không khí ở mọi khoảng cách luôn
luôn phát sinh những lỗi hay nhiễu tác động vào, vậy làm sao để giải quyết các vấn đề
đặt ra đó. Một vấn đề nữa là để tăng tính linh hoạt về chức năng của hệ thống thì chúng
ta cần tích hợp những yêu cầu gì khi mã hóa hệ thống RDS. Chương 2 sẽ trình bày kỹ
hơn về các cấu trúc và nguyên tắc này.
+ Cấu trúc mã hóa băng gốc
+ Thứ tự bit truyền
+ Phát hiện và xử lý lỗi bit
+ Định dạng thông điệp
2.2.


Cấu trúc mã hóa băng gốc
Hình 2.1 mô tả cấu trúc mã hóa băng gốc. Thành phần quan trọng nhất của cấu

trúc mã hóa băng gốc là một “group” gồm 104 bit. Mỗi “group” bao gồm 4 block, mỗi
block có 26 bit. Mỗi block chứa các thông tin bao gồm word và checkword. Trong đó
mỗi thông tin word bao gồm 16 bit và checkword là 10 bit.

12


Chương 2: Mã băng gốc của hệ thống RDS

Hình 2.1 : Cấu trúc của mã hóa băng gốc
2.3.

Thứ tự của bít truyền
Tất cả các word và checkword thì bit có trọng số lớn nhất (MSB) được truyền

đi trước (xem hình 2.2.)
Việc truyền dữ liệu là hoàn toàn đồng bộ liên tục và không ngắt quãng giữa các
“group” hay các block.

Hình 2.2 : Định dạng dữ liệu và địa chỉ.
Trong đó:
-

Mã phân loại “group” = 4 bit
Bo: mã “version”
PI code: mã nhận dạng chương trình = 16 bit

TP: Mã nhận dạng chương trình traffic = 1 bit
PTY: Mã kiểu chương trình = 5 bit

13


Chương 2: Mã băng gốc của hệ thống RDS
-

Checkword và offset “N” =

10 bit được cộng thêm giúp bảo vệ

-

lỗi và thông tin để đồng bộ hóa các block và “group”.
t1 < t2 : block 1 luôn được truyền đầu tiên, block 4 cuối
cùng.

Các word thông tin và việc sử dụng chúng được mô tả chi tiết trong mục 2.5 (Định
dạng thông điệp).

Phát hiện và xử lý lỗi bit

2.4.

Mỗi block 26 bit được truyền chứa 10 bit checkword mà chủ yếu nhằm cho
phép các máy thu/ bộ giải mã phát hiện và kiểm tra và khắc phục lỗi xảy ra trong quá
trình truyền. Những checkword này (ví dụ, c o, c1, c2, c3,...c9 hình 2.1 ) là tổng (modulo
2) của:

a) Kết quả thu được khi nhân word thông tin 16 bit cho x 10 và sau đó chia (mod

2) cho đa thức G(x).
b) Một chuỗi nhị phân 10 bit được gọi là 2offset word2,
Trong đó đa thức G(x) được cho bởi:
G(x) = x10 + x8 + x7 + x5 + x4 + x3 + 1
Giá trị offset D(x) là khác nhau cho mỗi block trong một “group”, được cho như sau:

A

Giá trị nhị phân
D9
D8
D7
0
0
1

D6
1

D5
1

D4
1

D3
1


D2
1

D1
0

D0
0

B

0

1

1

0

0

1

1

0

0

0


C

0

1

0

1

1

0

1

0

0

0

C’

1

1

0


1

0

1

0

0

0

0

D

0

1

1

0

1

1

0


1

0

0

Offset
Word

Bảng 2.1: Giá trị offset của checkword
Mục đích của việc thêm thông tin offset là giúp cho group/block được đồng bộ nhau tại
cả máy phát và máy thu. Việc thêm offset khi mã hóa phải được trích xuất ở bộ giải
14


Chương 2: Mã băng gốc của hệ thống RDS
mã. Việc thêm offset sẽ không gây ảnh hưởng đến quá trình phát hiện và sửa lỗi mã tín
hiệu.
Mã sửa lỗi yêu cầu các khả năng sửa lỗi như sau:
a) Nhận biết được tất cả các lỗi đơn bit và lỗi kép bit trên mỗi block
b) Nhận biết được bất kì lỗi burst spanning nào xảy ra trong khung bit 10 bit hoặc

bé hơn
c) Nhận biết được 99.8% trong khung bit 11 bit và 99.9% trong tất cả các khung
lớn hơn
Ở cả máy thu và máy phát đều đòi hỏi phải cho phép nhận dạng các khối bắt đầu và kết
thúc trong một “group”, việc đó sẽ giúp đồng bộ hóa các khối dữ liệu cũng như phát
hiện lỗi. Hệ thống thực tế thực hiện nhận dạng bằng cách chèn các offset.
2.5.


Định dạng thông điệp
Các đặc điểm chính của cấu trúc một thông điệp đã được minh họa trong hình

2.2. Chúng ta có thể kết luận rằng:
1) Khối đầu tiên trong mỗi “group” luôn luôn bao gồm một mã nhận dạng chương

trình (PI), thông tin này bao gồm một mã cho phép máy thu phân biệt các vùng, các
quốc gia nơi mà cùng một chương trình được phát và nhận dạng chính chương trình
của nó.
2) Bốn bit đầu tiên của block thứ 2 của mỗi “group” được cấp phát một mã 4 bit để
phân lọai “group” đó (phân loại tác dụng). Các group đó sẽ được phân loại coi như
các types 0 tới 15 theo trọng lượng nhị phân A3, A2, A1 và A0 (chuỗi số nhị phân 4
bit). Với mỗi type (0-15 có thể được định nghĩa ) bởi 2 “version”. Các “version”
được chỉ rõ bởi bít thứ 5 (Bo) của block thứ 2:
a) Bo = 0: mã PI chỉ được chèn vào block 1. Trường hợp này gọi là “version
A”.
b) Bo = 1: mã PI được chèn vào block 1 và 3 trong tất cả các “group”. Trường

hợp này gọi là “version B”.
3) Mã kiểu chương trình (PTY) và nhận dạng chương trình phương tiện (TP) được cố
định trong block thứ 2 của mỗi “group”. Đó là một con số nhận dạng để được

15


Chương 2: Mã băng gốc của hệ thống RDS
truyền đi với mỗi nhãn chương trình và để chỉ rõ dạng chương trình hiện tại (tin
tức, thể thao, ...)
Những mã trên sẵn có cho tất cả các “group”. Mục tiêu chính của đề tài là chèn tên của

kênh đài. Group 0A và 0B là những type group điển hình nhất mà không cần các thông
tin khác nữa, ví dụ không cần thông tin cố định phản hồi hoặc có sự cập nhật, văn bản.
Block thứ 3 của group 0A bao gồm danh sách những tần số luân phiên, việc này sẽ
giúp cho việc chuyển tín hiệu tần số khác nhau giữa các trạm trên diện tích lãnh thổ
rộng (Hình 2.3) biễu diễn định dạng của group type 0A). Block 3 của nhóm 0B đơn
giảnh là lặp lại mã PI chỉ khác giá trị offset (C’). Do đó trong đề tài này group 0B được
chọn để truyền tên trạm. Hình 2.4 biễu diễn định dạng của group type 0B.

Hình 2.3: Cấu trúc một group type 0A

Hình 2.4: Cấu trúc một group type 0B

16


Chương 2: Mã băng gốc của hệ thống RDS
Có tất cả 4 nhóm kiểu 0B sẽ chịu trách nhiệm truyền toàn bộ tên dịch vụ (PS). Tên dịch
vụ được sử dụng để nhận biết trạm. Và tên này có thể thay đổi được.
Một số lưu ý về nhóm 0B:
1. TA: Mã thông báo trạm (1 bit)
2. M/S: Mã chuyển tín hiệu âm nhạc/ tiếng nói
3. DI: Mã điều khiển Giải mã/ Nhận dạng, mã này trong group 0B là 1 bit. Tên

dịch vụ chương trình mà mã địa chỉ DI (C 1 và C0). Do đó trong một group
với C1C0 = “00” bit DI là d3. Các bit mã này được truyền bit trọng số lớn
nhất (d3) đầu tiên. Bảng sau mô tả thiết đặt bit DI
Thiết lập
Đặt bit d0 bằng 0
Đặt bit d0 bằng 1
Đặt bit d1 bằng 0

Đặt bit d1 bằng 1
Đặt bit d2 bằng 0
Đặt bit d2 bằng 1
Đặt bit d3 bằng 0
Đặt bit d3 bằng 1

Ý nghĩa
Mono
Stereo
Not Artificial Head
Artificial Head
Not compressed
Compressed
Static PTY
Dynamically switched PTY
Bảng 2.2: Các bit mã DI

4. Tên dịch vụ chương trình được truyền dưới ký tự 8 bit, được định nghĩa ở

bảng mã 8 bit của chuẩn RBDS (Hoa Kỳ). 8 ký tự (bao gồm khoảng trống)
mà mỗi group có 4 khối vậy cho phép truyền segment 2 ký tự mỗi group.
Các segment này sẽ được ghép lại để hoàn thành tên hiển thị các bit C 1 và C0
tại block 2. Các địa chỉ của ký tự tăng từ phải qua trái trên bảng hiển thị. Bít
có trong sô cao nhất (b7) của mỗi ký tự được truyền đầu tiên.
2.6.

Kết luận chương

Từ việc nghiên cứu cấu trúc mã hóa băng gốc ta có thể thấy rằng một hệ thống RDS có
thể sử dụng vào rất nhiều ứng dụng chức năng, việc tùy biến chức năng được quy định


17


Chương 2: Mã băng gốc của hệ thống RDS
bởi giá trị bit của các biến trong cấu trúc trình bày ở trên. Trong giới hạn đề tài là
truyền văn bản thì chúng ta chỉ cần thực hiện cấu hình hai “group” trong đó.

18


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

CHƯƠNG 3

XỬ LÝ DỮ LIỆU
3.1.

Giới thiệu chương
Chương này sẽ tiếp cận cụ thể hơn để làm tiền đề cho mã hóa RDS tích hợp trên

vi xử lý cũng như việc thiếp lập giao diện người sử dụng, thuật toán cơ bản, cũng như
tính toán CRC phục vụ cho việc xử lý lỗi:
+Thiết lập khung dữ liệu (Frame)
+ Phương pháp dữ liệu đầu vào (Tên PS)
+ Hiển thị dữ liệu và giao diện sử dụng
+ Điều khiển dữ liệu
+ Tính toán CRC
3.2.


Thiết lập khung dữ liệu
Trong một “group” tồn tại các đại lượng có thể thay đổi và các đại lượng cố

định. Vì vậy có thể cho phép người dùng có thể tùy chỉnh dữ liệu khi khởi động hệ
thống. Nhưng rất khó để tùy chỉnh dữ liệu mà vẫn đảm bảo về yêu cầu của chuẩn RDS,
và bất cứ sai sót nào xảy ra thì máy thu sẽ không thể nhân được tín hiệu nào cả. Để
tránh điều đó xảy ra thì các đại lượng cố định của các nhóm dữ liệu cầu được lưu giữ
trong bộ nhớ chương trình. Vì vậy người sử dụng chỉ cần cập nhật tên chương trình.
1. PI code : Hình 3.1 mô tả cấu trúc của PI

Hình 3.1: Cấu trúc của PI
Các bit b15 đến bit12 : Mã quốc gia: Các bit này được đặt giá trị tới 0x0C hay
0b1100.

19


Chương 4: Thiết kế khối mã hóa RDS
Các bit b11 đến b8

: Mã phủ vùng: Các bit này được đặt giá trị tới 0x0 hay

0b0000.
Các bit b7 đến b0
2.
3.
4.
5.
6.
7.

8.

: Số hiệu chương trình: Các bit này được đặt giá trị: 0x00.

Kiểu nhóm: Các bit này được thiết đặt 0x0 cho kiểu nhóm 0.
B0: Bit này đặt bằng 1 cho nhóm B.
TP: bit này đặt bằng 0 (không phải chương trình giao thông).
PTY: các bit này đặt bằng 0b0000 không dấu.
TA: bit này đặt bằng 0.
M/S: bit này đặt bằng 0 theo chuần RDS cho âm nhạc.
DI, C1, C0: các bit này được đặt trong mỗi nhóm theo chuỗi nhóm theo nguyên

tắc:
A) Nhóm đầu tiên: 0b0(d3)00 cho PTY tĩnh.
B) Nhóm thứ hai: 0b0(d2)00 khi không bị nén dữ liệu.
C) Nhóm thứ 3: 0b0(d2)00.
D) Nhóm thứ 4: 0b0(d2)00 cho tín hiệu stereo.
9. Tên Chương trình: mỗi nhóm sẽ truyền hai ký tự, bắt đầu với ký tự có trọng số
lớn nhất. VD: HoaKhanh thì [Ho] sẽ thuộc nhóm đầu tiên.
3.3.

Phương pháp đầu vào dữ liệu cho PS
Với 8 ký tự mã ASCII cho tên chương trình thì dữ liệu có thể lấy thông qua 64

Switch hoặc là thông qua bàn phím nhấn kết nối thẳng tới vi điều khiển hoặc cũng có
thể dùng bàn phím PS2. Trong đó thì để đơn giản thì nên chọn phương pháp phím nhấn
PS2 sẽ khả thi hơn.
Để thao tác được chính xác, nhanh chóng và dễ dàng thì ta nên sử dụng phím
nhấn ngắt, với việc sử dụng phím nhấn ngắt thì ta có thể quyết định để thiết lập lại cài
đặt trước đó hay không bằng các nút [YES] hay [NO] tương ứng sau đó nhấn nút

[SET] để chọn, trường hợp không muốn sử dụng tên chương trình trước đó thì ta có thể
thiết đặt tên mới bằng cách cuộn lên xuống (nhấn phím) để thiết đặt từng ký (từ
[SPACE] tới [Z]), mỗi khi nhấn [SET] một ký tự sẽ được lưu vào EEPROM, công việc
được lặp lại đến khi hoàn thành 8 ký tự, và sau khi ấn SET ở ký tự cuối cùng thì
chương trình sẽ tự động thực hiện tính toán CRC
Mặc dù thiết lập đầu vào dữ liệu kiểu này sẽ mất thời gian nhưng lại phù hợp
với môi trường ở cái đài phát.
20


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

Hình 3.2: Giao diện ngoại vi của bộ mã hóa RDS

Thuật toán dưới đây được thực thi cho việc chọn nút nhấn cho việc khởi tạo lại dữ
liệu:
CHECK_SWITCH ;An nut de quyet dinh restore hay khong?
GET_IT btfsc SWITCH_PORT,0
call D0_SET ; Restore
btfsc SWITCH_PORT,1
call D1_SET ; Khong restore
btfss SWITCH_PORT,2
goto GET_IT
movf DECISION,W ; Kiem tra neu D2 duoc an
andlw 0xff ; Neu khong an [set] de chon
btfsc STATUS,Z
goto GET_IT

Đoạn code sau mô tả quá trình lấy các ký tự PS và lưu trữ chúng vào EEPROM của
PIC:

GET_PS8 btfsc SWITCH_PORT,0
call CHAR_UP
btfsc SWITCH_PORT,1
call CHAR_DOWN
btfss SWITCH_PORT,2
goto GET_PS8
return
CHAR_UP
call SWITCH_DELAY
movf POSITION,0 ; chon vi tri hien thi (LCD)
call SET_ADDR
movf CHARACTER,0 ; move ky ti toi thanh ghi f
call check_max ;kiem tra xem ky tu da max chua?
21


Chương 4: Thiết kế khối mã hóa RDS
movf CHARACTER,0
call LCD_CHAR
return
check_max ; kiem tra ky tu max chua?
movwf CHAR_TEMP ; luu tru ky tu cuc bo
movf MAX_CHAR,0 ; move MAX_CHAR toi thanh ghi w
subwf CHAR_TEMP,0 ; tru 2 files
btfsc STATUS,Z ; kq=0 thi dat max.
goto SET2MAX ; giu vi tri character
goto INCREMENT ; neu chu max, tang mot
SET2MAX
movf MAX_CHAR,0 ;
return

INCREMENT
incf CHARACTER,1 ; tang character
return
CHAR_DOWN
call SWITCH_DELAY
movf POSITION,0 ; dat vi tri hien thi (LCD)
call SET_ADDR
movf CHARACTER,0 ; move ky tu toi thanh ghi f
call check_min ; kiem tra dat bie^n duoi chua?
movf CHARACTER,0
call LCD_CHAR
return
check_min ;
movwf CHAR_TEMP ; luu tru chatacter cuc bo
movf MIN_CHAR,0 ; move min_char toi thanh ghi f
subwf CHAR_TEMP,0 ; subtract the two files
btfsc STATUS,Z ; kq=0?? Thi dat nho nhat
goto SET2MIN ; giu nguyen character
goto DECREMENT ; neu chua min giam 1
SET2MIN
movf MIN_CHAR,0 ;
return
DECREMENT
decf CHARACTER,1 ; giam character di 1
return

Lưu trữ vào EEPROM:
movwf PS_8 ; luu tru co san
bsf STATUS,RP1 ; lu vao EEPROM
22



Chương 4: Thiết kế khối mã hóa RDS
bsf STATUS,RP0
btfsc EECON1,WR ; dam bao khong co qt write
call DELAY_5MS
bcf STATUS,RP0
movwf EEDATA
movlw 0x07
movwf EEADR
bsf STATUS,RP0
bcf EECON1,EEPGD
bsf EECON1,WREN
movlw 0x55
movwf EECON2
movlw 0xaa
movwf EECON2
bsf EECON1,WR
bcf EECON1,WREN
clrf STATUS ; chon bank 0

3.4.

Hiển thị dữ liệu và giao diện sử dụng
Việc hiển thị dữ liệu được sử dụng bằng Text LCD 16×2, ưu điểm là việc thiết

kế PCB cho LCD đơn giản đồng thời chi phí rẻ và sử dụng đơn giản với dòng PIC. Đây
là đoạn nguyên lý chương trình con khởi tạo cho LCD:

23



Chương 4: Thiết kế khối mã hóa RDS
Bật nguồn
Chời 30ms sau khi Vdd tăng tới 4.5V
N

Thiết đặt chức năng đọc/ghi
RS
0

RW
0

.B7
0

.B6
0

.B5
1

.B4

.B3

1

.B2


N

F

.B1
X

.B0
F

X

D

Chờ ~39µs
Điều khiển hiện thị (ON/OFF)

C

RS

RW

.B7

.B6

.B5


.B4

.B3

.B2

.B1

.B0

0

0

0

0

0

0

1

D

C

B


B

1-line mmodemode
0S
1

2-line

0S

5×8 dots

1

5×11 dots

0S

Disp-of

1

Disp-on

0S

Cursor-of

1


Cursor-on

0S

Blink-of

1

Blink-on

Chờ ~39µs
I/D

Xóa hiển thị
RS

RW

.B7

.B6

.B5

.B4

.B3

.B2


.B1

.B0

0

0

0

0

0

0

0

0

0

1

Chờ ~39µs

SH

0
1


0

Decrement

1

Increment

Entire shift-of
Entire shift-on

Điều khiển hiển thị (ON/OFF)
RS

RW

.B7

.B6

.B5

.B4

.B3

.B2

.B1


.B0

0

0

0

0

0

0

0

0

I/D

SH

Kết thúc khởi tạo
Hình 3.3: Nguyên lý chương trình khởi tạo LCD

24


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

3.5.

Điều khiển dữ liệu
Vi xử lý PIC16F877A được chon để điều khiển dữ liệu. Là một vi điều khiển 8-

bit với 8K bộ nhớ chương trình và 256 byte EEPROM bộ nhớ dữ liệu đủ để sử dụng
cho ứng dụng. Lập trình trên môi trường MPLAB IDE, hình sau mô tả cấu trúc một vi
xử lý PIC16F877A:

Hình 3.4: Sơ đồ chân PIC16F877A.
Tần số hoạt động có thể lên tới 20Mhz với nền tảng kiến trúc Harvard có thể lên
tới 5 MIPS, nhưng để hệ thống hoạt động ổn định hơn ta chọn tần số hoạt động của hệ
thống là 10Mhz.

25


×