Hệ thống điều phối vào ra Ping – Pong

Một phần của tài liệu Xây dựng hệ thống máy phát dữ liệu vô tuyến sử dụng công nghệ OFDM cho phát thanh số và truyền dữ liệu (Trang 40)

2.7.1 Mô hình vào ra kiểu polling

Trước hết xét mô hình đơn giản nhất là polling. Trong mô hình này CPU phải tự mình thực hiện chức năng vào ra bằng cách “hỏi đáp”. CPU sẽ kiểm tra dữ liệu từ cổng I/O đã sẵn sàng chưa (trong trường hợp nó muốn đọc), nếu đã sẵn sàng, nó sẽ đọc dữ liệu từ cổng I/O đó rồi ghi vào bộ nhớ.

Hình 2.20 Mô hình vào ra kiểu polling

Về mặt phần cứng, CPU ở đây là bộ xử lý chuyên dụng DSP, cổng IO ở đây là

McBSPs. Đây là cổng được sử dụng với AIC23. Trong đó McBSP1 là cổng vào ra điều

khiển các thông số hoạt động của AIC23, còn McBSP2 là cổng dữ liệu.

Hình 2.21 Sơ đồ AIC23 và McBSP2 Bộ vi xử lý (CPU) Cổng IO Bộ nhớ 1 2 3 1 Trạng thái dữ liệu 2 Đọc dữ liệu từ cổng IO

3 Ghi dữ liệu vào bộ nhớ

Về mặt phần mềm, đó là việc sử dụng các hàm trong mô đun BSL đi kèm với DSK 6416.

Hàm trong module BSL

// Generate a 1KHz sine wave for 5 seconds for (msec = 0; msec <5000; msec++) {

for (sample = 0; sample< SINE_TABLE_SIZE; sample++) {

while (!DSK6416_AIC23_write(hCodec, sinetable[sample])); while (!DSK6416_AIC23_write(hCodec, sinetable[sample])); }

}

Hình 2.22 Hàm trong module BSL

Đây là mô hình vào ra đơn giản nhất song lại không đáp ứng được yêu cầu về thời gian thực của ứng dụng do tiêu tốn thời gian của CPU. Một mô hình vào ra có thể đáp ứng được yêu cầu thời gian thực là EDMA.

2.6.2 Mô hình vào ra EDMA

Đây là mô hình vào ra đặc thù của DSK 6416. Đó là sự kết hợp của cả phần cứng lẫn phần mềm. Về mặt phần cứng đó là bộ điều khiển EDMA. Về mặt phần mềm đó là việc điều phối giữa ngắt cứng EDMA và ngắt mềm xử lý.

Hình 2.23 Mô hình vào ra EDMA

Các tính năng chuyên dụng của bộ điều khiển EDMA là: - Đa kênh

- Truyền mã hoàn chỉnh (TCC)

- Liên kết truyền

Bộ điều khiển EDMA có thể điều khiển được nhiều kênh DMA cùng một lúc. Các thông số đặc trưng của một kênh EDMA như: Địa chỉ nguồn, địa chỉ đích, kích thước bộ đệm. Ví dụ của địa chỉ nguồn là địa chỉ của cổng McBSP2, địa chỉ đích là một con trỏ đến bộ đệm (một mảng) nào đó. Kích thước của bộ đệm là số lượng byte được vận chuyển.

Bus dữ liệu Bộ vi xử lý (CPU) Cổng IO Bộ nhớ 1 Bộ điều khiền EDMA 2 3 1 Khởi động EDMA 2 EDMA đọc dữ liệu từ IO

Hình 2.24 Tính năng đa kênh của EDMA

Khi có sự kiện một kênh EDMA hoàn thành vận chuyển dữ liệu, bộ điều khiển EDMA sẽ phát sinh một ngắt duy nhất gửi về cho CPU. Vậy làm cách nào để CPU có thể phân biệt được ngắt đó là do kênh EDMA nào hoàn thành. Đó chính là thông qua truyền mã hoàn chỉnh (TCC). Mỗi kênh EDMA khi được cấu hình sẽ được gán cho một con số được gọi là TCC. Khi có ngắt xảy ra, CPU đọc con số TCC gửi về bởi bộ điều khiển EDMA, thông qua đó nó biết được kênh nào đã hoàn thành việc vận chuyển dữ liệu.

Hình 2.25 TTC với các kênh EDMA khác nhau

Công việc điều phối giữa các tiến trình (ngắt cứng và ngắt mềm) được hỗ trợ bởi DSP/BIOS, một hệ điều hành được tích hợp với môi trường phát triển Code Composer Studio. Kênh 1(TCC1 ) Kênh 2 (TCC 2) Kênh 3 (TCC 3) CPU TCC? Đích đến - 1 (Memory) Nguồn 1 (IO port) Kênh - 1 Đích đến - 2 (Memory) Nguồn 2 (IO port) Kênh - 2 Đích đến - 3 (Memory) Nguồn 3 (IO port) Kênh - 3

2.6.3 Kỹ thuật điều phối vào ra Ping – Pong

Đây là kỹ thuật vào ra điển hình sử dụng EDMA. Đây là kỹ thuật kết hợp giữa tính năng liên kết truyền của EDMA và kỹ thuật điều phối các tiến trình (ngắt cứng và ngắt mềm).

Trong kỹ thuật này, dữ liệu được vận chuyển qua lại từ bộ mã hóa và giải mã thông qua McBSP2, một cổng nối tiếp hai chiều. Bộ điều khiển EDMA được cấu hình để lấy mỗi mẫu dữ liệu 16 bít có dấu trên McBSP2 và lưu trữ trong một bộ đệm ở trong bộ nhớ tới khi nó có thể được xử lý. Một khi nó được xử lý, nó được gửi lại ra McBSP2 đến AIC23 và phát đi. Một kênh EDMA được sử dụng để truyền dữ liệu đến AIC23 trong khi một kênh khác được sử dụng để nhận dữ liệu từ AIC23.

Kỹ thuật này sử dụng EDMA để giải phóng DSP khỏi nhiệm vụ vận chuyển dữ liệu. Khi ở mức cao mạch điều khiển EDMA lấy trực tiếp dữ liệu audio đến từ McBSP2 và đặt vào một bộ đệm dữ liệu. Nó cũng lấy dữ liệu từ một bộ đệm trong bộ nhớ và gửi nó ra McBSP2 để tạo ra tín hiệu âm thanh ra. Có nhiều kênh EDMA riêng biệt được sử dụng để phát và nhận dữ liệu liệu âm thanh.

Vì AIC23 là một bộ mã hóa và giải mã stereo nên tín hiệu đầu vào chứa cả kênh âm thanh phải và trái. Dữ liệu được nhận theo từng khung gồm 2 phần tử: một mẫu 16 bít từ kênh trái và một mẫu 16 bít tiếp sau từ kênh phải. Các khung được nhận với tốc độ là 48KHz, tốc độ lấy mẫu mặc định của DSK.

2.6.3.1 Vận hu ển ữ liệu kiểu Ping – Pong

Khi ở mức cao thì mạch điều khiển EDMA đọc tín hiệu từ McBSP và lưu nó vào bộ nhớ đệm. Dữ liệu nhận được được lưu trong hai bộ đệm logic cạnh nhau là Ping và Pong.

Nếu chỉ có một bộ đệm được dùng thì thời gian xử lý dữ liệu trên bộ đệm của DSP chỉ trong khoảng thời gian từ khi bộ đệm đầy cho đến khi mẫu tín hiệu tiếp theo được nhận.

Khi cả hai bộ đệm được dùng thì ban đầu dữ liệu đến sẽ được lưu trong bộ đệm Ping. Khi nó đầy thì dữ liệu tới sẽ được gửi tới bộ đệm Pong, trong khi đó DSP sẽ xử lí dữ liệu trong bộ đệm Ping mà không sợ nó bị ghi đè lên. Khi mà Pong đầy thì Ping Pong sẽ được cấu hình ngược lại. DSP sẽ có nhiều thời gian hơn để xử lí luồng dữ liệu nhận được và điều này sẽ giúp cho hệ thống gần với thời gian thực hơn và giúp tăng đáng kể tốc độ dòng tín hiệu đến.

Như vậy nếu tính cả phía truyền thì có tất cả là 4 bộ đệm Ping-Pong: receive PING, receive PONG, transmit PING and transmit PONG.

Int16 gBufferXmtPing[BUFFSIZE]; //Transmit Ping buffer Int16 gBufferXmtPong[BUFFSIZE]; //Transmit Pong buffer Int16 gBufferRcvPing[BUFFSIZE]; // Receive Ping buffer Int16 gBufferRcvPong[BUFFSIZE]; //Receive Pong buffer

Giới hạn của chuyển đổi DAC, ví dụ như bộ AIC23 của DSK6416 chỉ chấp nhận tốc độ dữ liệu max là 48000 mẫu trong một giây. Từ đó có thể thấy rằng tốc độ chuyển đổi DAC của bộ mã hóa và giải mã trên bo mạch là khá chậm, phải nghĩ đến hình thức truyền thông khác. Ví dụ này có ích ở chỗ cho biết cách cài đặt tham số cho một thiết bị như thế nào.

2.6.3.2 Kết nối ấu hình Ping – Pong

Một tính năng vận chuyển dữ liệu đặc biệt được gọi là mốc nối các cấu hình EDMA. Khi bộ điều khiển EDMA hoàn thành với phía PING và cần chuyển sang phía

PONG, thì các con trỏ nguồn và đích cũng cần thay đổi để trỏ tới bộ đệm mới. Khi kỹ thuật này được sử dụng thì địa chỉ mới có thể được lưu trữ trong một cấu trúc cấu hình móc nối và sẽ tự động nạp vào bộ điều khiển EDMA khi công việc (cấu hình) hiện thời hoàn thành. Việc tái cấu hình cũng có thể được thực hiện bởi DSP bằng chương trình phục vụ ngắt mềm nhưng sử dụng móc nối các cấu hình tránh khỏi yêu cầu phải điều phối mà phần mềm phải hoàn thành trước khi mẫu tiếp theo đến.

Hình 2.27 Các bộ đệm Ping Pong và quá trình truyền liên kết

2.6.3.3 Luồng điều khiển

Đầu tiên các môđun riêng rẽ của DSP/BIOS được khởi tạo như trong file cấu hình

DSK_App.cdb. Sau đó hàm main() chiếm quyền điều khiển. Hàm này chỉ làm một số công việc đơn giản như khởi tạo và khởi động quá trình chuyển dữ liệu EDMA. Sau khi thoát khỏi hàm main() thì điều khiển được chuyển cho DSP/BIOS để nó phục vụ các ngắt hay các tiểu trình cần thiết. Khi rỗi thì tiểu trình idle sẽ chạy. Ngắt của EDMA sẽ có quyền ưu tiên cao hơn idle.

Bộ đệm Ping Bộ đệm Pong McBSP2 (Source) Đóng Ngắt Bộ đệm Ping Bộ đệm Pong McBSP2 (Source) Đóng Ngắt Truyền liên kết

Hình 2.28 Đồ thị thực thi các tiến trình

Khi bộ đệm đầy thì ISR (tiến trình phục vụ ngắt) edmaHwi() sẽ được gọi. Tiếp sau đó nó gọi một tiểu trình loại SWI processBuffer() để xử lý bộ đệm đã đầy. Chú ý cơ chế truyền thông giữa edmaHwi()processBuffer() là cơ chế hộp thư. Trong hộp thư sẽ là một biến pingPong cho biết trạng thái của bộ đệm là gì.

2.6.3.4 Điều phối qu trình tru ền nhận Ping – Pong t i phía ph t

Mỗi khối dữ liệu truyền_ DataTrans[32] được chia thành 2 dòng dữ liệu

DataFirst[16]DataLast[16] và được điều chế đồng thời sau đó được đóng gói vào khung nhờ hàm FramePack().

Như đã trình bày ở trên, biến pingPong được dùng để kiểm soát quá trình làm việc với Ping-Pong:

pingPong = Ping, dữ liệu được ghi vào bộ đệm Ping để đưa ra kênh truyền. Khi bộ đệm Ping đầy biến pingPong được set giá trị = Pong

pingPong = Pong, dữ liệu được ghi vào bộ đệm Pong để đưa ra kênh truyền. Khi Pong đầy pingPong được set giá trị = Ping

Ngắt Ngắt Ngắt Ngắt

edma_ hwi thread process_swi thread idle thread

Cấu trúc bộ đệm truyền:

Hình 2.29 Cấu trúc bộ đệm truyền 2.7 Thiết kế khối phát vô tuyến

Thực hiện việc phát dữ liệu qua môi trường vô tuyến, kết hợp giữa tín hiệu đầu ra của bộ biến đổi AIC23 – bộ biến đổi số tương tự và khối phát dữ liệu trong dải FM (88-108 MHz) để đưa tín hiệu từ card DSP lên môi trường vô tuyến. Tín hiệu số sau khi qua bộ AIC23, sẽ được chuyển đổi từ dạng dữ liệu số sang dạng dữ liệu tương tự và được xuất ra ngoài thông qua đường HEADPHONE hoặc LINE OUT trên bo mạch. Bộ chuyển đổi số - tương tự sử dụng hai kênh điều khiển: một kênh điều khiển thanh ghi trong định dạng cho bộ mã hóa, một kênh có chức năng gửi và nhận các mẫu tín hiệu số và tương tự. McBSP1 được sử dụng vô hướng để điều khiển kênh. Nó sẽ được chương trình gửi một từ điều khiển để định dạng thanh ghi. Còn 9 bit thấp là giá trị thanh ghi. Kênh điều khiển chỉ sử dụng khi định dạng khởi tạo cho bộ mã hóa, nó thường được sử dụng khi tín hiệu âm thanh đang được truyền. McBSP2 được sử dụng như là một kênh tín hiệu có hướng. Tất cả tín hiệu âm thanh sẽ được truyền qua kênh này. Nhiều dữ liệu định dạng sẽ được cơ bản cung cấp trên ba biến là độ rộng mẫu, nguồn tín hiệu đồng hồ và nguồn định dạng dữ liệu.

Bài toán được đưa ra ở đây khá cơ bản, khi thực hiện thiết kế một khối phát FM thông thường, để có thể đưa tín hiệu âm thanh sau khi qua bộ AIC23 truyền qua môi trường vô tuyến.

2.8 Kết luận chương

Chương này đã thực hiện việc tìm hiểu về mô hình phát triển phần cứng cho hệ thống OFDM, lựa chọn thông số OFDM, quy trình để xây dựng hệ thống phát dữ liệu OFDM truyền thông thực. Việc xây dựng khối phát vô tuyến gặp khá nhiều khó khăn khi phải hiệu chỉnh các thông số để khối phát có thể cho tín hiệu đầu ra với mức ồn nhỏ nhất.

Chương 3 Phương n đồng ộ ho hệ thống

Trong hệ thống thực tế đang xây dựng trên nền DSP, vấn đề đồng bộ được quan tâm chỉ là đồng bộ kí tự. Bởi vì hệ thống sử dụng hai bo mạch nhúng DSP với tần số dao động là 1Ghz nên với tần số lấy mẫu 48Khz sử dụng trong hệ thống thì sai số tần sồ lấy mẫu rất nhỏ, không tạo ra mất đồng bộ tần số lấy mẫu. Mặt khác, hệ thống được thực hiện ở băng tần cơ sở, chưa đưa lên tần số cao nên việc đồng bộ tần số sóng mang là không cần thiết.

Do đó, hệ thống thực tế đã xây dựng chỉ thực hiện đồng bộ kí tự.

Hệ thống phát các khung OFDM liên tiếp nhau về mặt thời gian do đó xuất hiện yêu cầu đồng bộ khung (qua đó đồng bộ kí tự) là yêu cầu đối với hệ thống. Không ó đồng ộ kí t , sẽ không ó kí t đ ng để x lý, ẫn t i không gi i m đượ tín hiệu an đ u.

Phương án đồng bộ cho hệ thống sẽ trải qua các bước chính sau đây:

Hình 3.1 Các bước thực hiện tiến trình đồng bộ

Việc đánh giá hàm tương quan chéo và hàm trung bình hiệu bình phương tối thiểu cho phép xác định được khả năng ứng dụng của hai hàm này trong kỹ thuật đồng bộ được đề xuất. Do hệ thống phát triển trên bo mạch nhúng DSP C6416, có sự xuất hiện của cơ chế xử lý Ping – Pong nên việc đánh giá các yêu cầu đồng bộ đóng vai trò quan trọng trong việc đưa ra thuật toán đồng bộ mới.

3.1 Giới thiệu hàm trung bình hiệu bình phương (MSE) tối thiểu dùng trong đồng bộ

Sử dụng hàm trung bình hiệu bình phương tối thiểu thay cho hàm tương quan chéo thường dùng để đồng bộ. Để có cái nhìn rõ ràng hơn về hàm MSE, tôi sẽ so sánh MSE với hàm tương quan chéo hay sử dụng.

3.1.1 Hàm tương quan chéo (cross-correlation)

Trong xử lý tín hiệu số, hàm tương quan chéo được dung để kiểm tra sự giống nhau về hình dạng của hai tín hiệu. Do đó hàm tương quan chéo hay được dùng để tìm ra mẫu tín hiệu nhất định tồn tại trong một tín hiệu khác. Về mặt toán học, hàm tương quan chéo có công thức như sau:

(3.1) Trong đó, biểu thị liên hợp phức của

Tương quan chéo gần giống như tích chập của hai hàm số. Trong khi tích chập liên quan đến việc đảo chiều một tín hiệu, sau đó dịch tín hiệu đã đảo chiều đó và nhân với tín hiệu còn lại. Tương quan chéo thì chỉ dịch tín hiệu và nhân nó với tín hiệu còn lại mà không đảo chiều tín hiệu trước khi nhân.

Khi kiểm tra hai dãy có giống nhau hay không ta lấy tương quan chéo tại 0 hay:

(3.2)

Với hai dãy rời rạc:

(3.3)

Như vậy khi hai tín hiệu có dạng giống nhau nhất thì phép tính tương quan chéo sẽ đạt cực đại.

Khi áp dụng vào trong hệ thống OFDM, hàm tương quan chéo sẽ được thực hiện giữa hai chuỗi tín hiệu dẫn đường liên tiếp, mục tiêu là khi “slice” (dịch chuyển từng bước nhỏ bằng một đơn vị ) thì tương quan chéo sẽ đạt cực đại khi gặp hai tín hiệu dẫn đường cạnh nhau.

Tuy nhiên sau khi thử ngiệm bằng Matlab, hiệu quả đồng bộ bằng hàm tương quan chéo là không cao.

3.1.2 Hàm trung bình hiệu bình phương tối thiểu

Hàm trung bình hiệu bình phương của hai tín hiệu li n tụ và được định nghĩa như sau:

(3.4)

Đối với hai tín hiệu ời và có cùng chiều dài thì hàm trung bình hiệu bình phương của hai tín hiệu là :

(3.5)

Đặt

Ta có:

(3.6)

Nếu hai tín hiệu rời rạc và càng giống nhau thì → 0, dẫn đến E đạt cực tiểu.

Nếu và không giống nhau, là hiệu của hai biến ngẫu nhiên không tương quan, giá trị của sẽ biến thiên lớn tương ứng với E lớn.

Việc kênh truyền tương đối ổn định khi truyền qua dây dẫn, nên tín hiệu biến đổi không nhiều, việc áp dụng hàm trung bình bình phương tối thiểu đạt kết quả cao hơn so với hàm tương quan chéo.

3.2 Đề xuất phương án đồng bộ cho hệ thống 3.2.1 Yêu cầu về hàm đồng bộ 3.2.1 Yêu cầu về hàm đồng bộ

3.2.1.1 Y u ầu về thời gian xử lý

Do cơ chế Ping Pong, thời gian xử lý dữ liệu trong bộ đệm Ping bằng thời gian nhận dữ liệu trong bộ đệm Pong và ngược lại, nên sẽ hạn chế về mặt thời gian đối với quá trình xử

Một phần của tài liệu Xây dựng hệ thống máy phát dữ liệu vô tuyến sử dụng công nghệ OFDM cho phát thanh số và truyền dữ liệu (Trang 40)

Tải bản đầy đủ (PDF)

(74 trang)