Hình 4.1 phía dưới là cấu trúc bên trong của module Audio_controller sau khi thiết kế. Trong thiết kế có sử dụng các thư viện Audio_Config, Audio_Clock…
Hình 4.1: Module Audio_controller
Ta có thể mô tả hoạt động của module này thông qua chức năng các chân tín hiệu như sau:
+ I2C_SDAT và I2C_SCLK là hai chân giao tiếp theo chuẩn I2C, hai chân này được nối với hai chân I2C tương ứng của CODEC WM8731 với tác dụng cấu hình chế độ hoạt động cho CODEC này.
+ Chân read_audio_in được nối với chân read_audio_in trên module “Core”. Khi có tín hiệu điều khiển từ module core qua chân này thì dữ liệu từ module core sẽ truyền vào module Audio_Controller thông qua hai đường tín hiệu là: Left_channel_audio_out và Right_channel_audio_out.
+ Tín hiệu Left_channel_audio_out và Right_channel_audio_out này sau đó được chuyển tới chân AUD_DACDAT để tới CODEC và được phát ra loa hoặc headphone.
+ Chân write_audio_out được nối với chân write_audio_out trên module “Core”. Khi có tín hiệu điều khiển từ module core qua chân này thì dữ liệu từ module Audio_Controller sẽ truyền vào module core thông qua đường tín hiệu là audio_in (do tín hiệu ở đây thu vào từ micro là tín hiệu đơn kênh).
+ Hai chân tín hiệu “audio_avaiable” và “audio_allowed” là hai tín hiệu trạng thái cho biết module Audio_Controller có sẵn sàng cho việc truyền nhận dữ liệu hay không. Hai tín hiệu này được sử dụng như đầu vào của bộ điều khiển trung tâm “Core_Controller” để bộ này đưa ra tín hiệu điều khiển một cách chính xác.
Trong ứng dụng này ta thu tín hiệu âm thanh trực tiếp từ ngõ vào Microphone và lưu trữ trên SDRAM. Sau đó phát lại (qua bộ lọc hoặc không). Do đó ta thiết lập chế độ hoạt động ban đầu cho WM8731 như sau (bảng 3.6 đưa ra danh sách các thanh ghi cần cấu hình):
+ Chọn đầu vào âm thanh là Microphone. + Không chọn chế độ boost cho Microphone. + Chọn chế độ Bypass.
+ Chọn âm lượng phát ra qua các bit RHPVOL[6:0] và LHPVOL[6:0] với giá trị tương ứng 1111111 là +6dB 0110000 là -73dB. Ở đây ta chọn âm lượng phát ra là -2dB.