Download as pdf or txt
Download as pdf or txt
You are on page 1of 91

ĐỒ ÁN TỐT NGHIỆP GVHD : Th.

S HUỲNH HỮU THUẬN

Mục lục
Chương I ..................................................................................................3
Giới Thiệu Về Phần Mềm.......................................................................3
I.1. Phần Mềm Quartus II.......................................................................................................... 3
I.2. SOPC BUILDER............................................................................................................... 11
I.2.1 Khái niệm về SOPC: .................................................................................................... 11
I.2.2 Thiết Kế SOPC Builder Dùng Mã Verilog.................................................................. 15
I.3 Phần Mềm NIOS II IDE.................................................................................................... 21
I.3.1 Tổng quan các tính năng của bộ vi xử lý NIOS II:.................................................... 22
I.3.2 Cấu Trúc Thanh Ghi ................................................................................................... 23
I.3.3. Truy Xuất Bộ Nhớ Và Thiết Bị I/O ............................................................................ 26
I.3.4. Địa Chỉ......................................................................................................................... 27
I.3.5. Tập Lệnh ..................................................................................................................... 28
I.4 Board DE2 .......................................................................................................................... 29
I.4.1. Tính năng của mạch DE2 .......................................................................................... 29
I.4.2. Thông số kỹ thuật........................................................................................................ 30
I.4.3. Những Ví Dụ Về Những ứng Dụng Cao Cấp ........................................................... 34
Chương II................................................................................................36
Audio Codec W8731/L ...........................................................................36
II.1 Giới Thiệu Về AUDIO CODEC W8731/L ..................................................................... 36
II.1.1 Đường Dẫn Line Input............................................................................................... 38
II.1.2 Ngõ Vào Microphone ................................................................................................. 41
II.1.3 MICROPHONE BIAS................................................................................................ 41
II.1.4 Bộ Lọc ADC ................................................................................................................ 41
II.1.5 Bộ Lọc DAC ................................................................................................................ 43
II.1.6 Line Ngõ Ra. ............................................................................................................... 44
II.1.7 HEADPHONE AMPLIFIER .................................................................................... 45
II.2 Các Chế Độ Hoạt Động .................................................................................................... 47
II.2.1 SYPASS MODE.......................................................................................................... 47
II.2.2 SIDETONE MODE.................................................................................................... 49
II.3 Hoạt Động Của Thiết Bị .................................................................................................. 50
II.3.1 Cài Đặt Lại Thiết Bị ................................................................................................... 50
II.3.2 Lược Đồ CLOCKING................................................................................................. 50
II.3.3 LÕI XUNG CLOCK. .................................................................................................. 51
II.3.4 Máy Tạo Dao Động CRYSTAL.................................................................................. 51
II.3.5 CLOCKOUT ............................................................................................................... 52
II.3.6 Giao Diện Phần Mềm................................................................................................. 53
II.3.7 Chế Độ Năng Lượng ................................................................................................. 55
II.3.8 Bản Đồ Thanh Ghi ..................................................................................................... 59
II.3.9 Nét Đặc Trưng Của Đầu Lọc Kỹ Thuật Số ............................................................... 59
II.3.10 Sự Hoạt Động Ở Chế Độ Master/Slave. .................................................................. 61
II.4 Mô tả tổng quát về SD CARD ....................................................................................... 62
II.4.1 Tính Năng ................................................................................................................... 63
II.4.2 Ứng dụng .................................................................................................................... 63
II.4.3 Mô Tả Port Của SD Card........................................................................................... 63
II.5 Định Dạng FAT ................................................................................................................ 64
II.6 Khái Niệm Về Tập Tin Wave .......................................................................................... 68

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 1


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Chương 3 Hệ Thống Tổng Quát ..........................................................70


III.1 Thiết Kế Mô Hình SD Music Player. ............................................................................ 70
III.2 Chương Trình Demo....................................................................................................... 71
III.2.1 Các Định Nghĩa Thiết Lập ....................................................................................... 71
III.2.2 Các Chương Trình Con Và Các Hàm Con.............................................................. 73
III.2.3 Chương Trình Chính................................................................................................ 85
Tài liệu tham khảo ................................................................................89
Phụ Lục..................................................................................................90

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 2


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Chương I

Giới Thiệu Về Phần Mềm


I.1. Phần Mềm Quartus II

Hệ thống Quartus II bao gồm đầy đủ tất cả công thức thông thường để mô tả
yêu cầu mạch vào trong một hệ thống CAD. Người dùng có thể chỉ định yêu cầu mạch
vào trong ngôn ngữ mô tả phần cứng Verilog hoặc VHDL. Và cái khác là dựa trên nội
dung yêu cầu mạch trong mẫu của một sơ đồ biểu đồ. Bước cuối cùng trong quá trình
thiết kế cần phải cấu hình mạch thiết kế trong thiết bị Nios II thật.

Mỗi mạch logic, hay mạch phụ, thiết kế bằng phần mềm Quartus II được gọi là một
Project. Phần mềm làm việc trên một project tại một thời điểm và giữ thông tin cho
project trong một thư mục trên file hệ thống. Để bắt đầu thiết kế một mạch logic mới,
trước tiên phải tạo một thư mục để chứa các file của nó.

Hình 1.1.1. Hiển thị chính Quartus II.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 3


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hầu hết các lệnh cung cấp bởi Quartus II có thể được truy xụất bằng cách dùng
một thiết lập của menu được xác định dưới dạng thanh tiêu đề.

Hình 1.1.2. ví dụ file menu

Để bắt đầu một thiết kế mới trước tiên phải định nghĩa một thiết kế project mới.
Tạo một project mới như sau:

¾ Chọn File > New Project Wizard để được cửa sổ như hình 1.1.3. Có thể
bỏ qua cửa sổ này trong project sau bằng cách đánh dấu check vào hộp

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 4


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

thoại Don’t show me this introduction again. Nhấn next sẽ thấy cửa sổ
như hình 1.1.4.

Hình 1.1.3. Thao tác thực hiện bằng Wizard Tasks

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 5


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.1.4. Tạo một project mới.

¾ Nhấn next. Từ đây chúng ta đã tạo ra một thư mục introtutorial hay chưa, phần
mềm Quartus II hiện ra một hộp trong hình 1.1.5 hỏi nó sẽ tạo ra một thư mục
mong muốn. click Yes, hiện ra cửa sổ trong hình 1.1.6

Hình 1.1.5. Phần mềm Quartus II sẽ tạo ra một thư mục cho project

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 6


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.1.6. Wizard có thể bao gồm file thiết kế lý thuyết.

¾ Nếu không có file nào tồn tại, Click next, sẽ thấy cửa sổ trong hình 7.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 7


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.1.7. Chọn một họ thiết bị và một thiết bị cụ thể

¾ Chúng ta có kiểu thiết bị cụ thể, mà mạch được thiết kế sẽ được thực thi đầy đủ.
Chọn Cyclone II làm họ thiết bị mục tiêu. Chúng ta có thể cho phép phần mềm
Quartus II chọn họ thiết bị cụ thể, hay chúng ta có thể chọn thiết bị rõ ràng. Từ
danh sách thiết bị cho phép chọn thiết bị EP2C35F672C6, mà được SOPC
Builder dùng trên board DE2. nhấn next mở cửa sổ trong hình 1.1.8.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 8


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.1.8. Công cụ EDA khác

¾ Người dùng có thể chỉ định bất kỳ công cụ EDA nào. Phổ biến là dùng phần
mềm CAD cho mạch điện là các công cụ EDA. Thuật ngữ này được dùng trong
thông báo Quartus II đề cập đến ba công cụ. từ đây chúng ta sẽ dựa vào các
công cụ của Quartus II, không chọn công cụ nào khác.

¾ Nhấn next. Tóm tắt của những chọn lựa trên là xuất hiện màn hình như hình
1.1.9. nhấn finish, trở về cửa sổ chính Quartus II, nhưng với light được định
nghĩa như project mới trong thanh tiêu đề như hình 1.1.10

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 9


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.1.9. Tóm tắt của việc cài đặt project.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 10


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.1.10. Quartus II sau khi project được tạo

I.2. SOPC BUILDER

I.2.1 Khái niệm về SOPC:

System on Programmable chip (SOC) là một ý tưởng về sự tích hợp tất cả mọi
thành phần của một hệ thống vào một mạch tich hợp (IC). Mạch này có thể bao gồm
cả các chức năng số, tương tự, hoặc cả hai- tất cả trên một chip. Ứng dụng điển hình
cho ý tưởng này là các hệ thống nhúng. Các SOC có ưu điểm là giá thành thấp và đơn
giản. Thiết bị logic khả trình (PLD: Programmable logic device) là một thiết bị được
tạo ra từ các cổng logic, có khả năng lập trình được để tạo các ứng dụng khác nhau. Từ
ý tưởng trên, thuật ngữ SOPC-system on programmable chip ra đời. Toàn bộ thiết kế
hệ thống sẽ được tạo trên một thiết bị logic khả trình (PLD). Lĩnh vực này thường ứng
dụng để thử nghiệm các hệ thống trước khi chế tạo các IC. Một sơ đồ ví dụ về hệ
thống SOPC được được trình bày trong hình 1.1.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 11


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.2.1: Sơ đồ ví dụ về hệ thống SOPC tích hợp trên PLD của Altera

Các thư viện của SOPC builder thường bao gồm các thành phần sau:

¾ Vi xử lý

¾ Các IP và các kết nối ngoại vi

¾ Các giao diện với bộ nhớ

¾ Các thiết bị liên lạc ngoại vi

¾ Các giao diện và các bus, bao gồm cả giao diện Avalon

¾ Các lõi DSP

Ta có thể sử dụng SOPC builder để xây các hệ thống nhúng bao gồm CPU, giao
tiếp bộ nhớ, và các module I/O. Ta cũng có thể dùng nó chỉ để tạo ra một hệ thống tạo
luồng dữ liệu mà không bao gồm CPU.

SOPC sử dụng một giao diện người dùng gồm các nhãn dán (Tab). Các tác vụ
được phân chia theo chức năng và các tác vụ có liên quan với nhau sẽ được trình bày
trên cùng một nhãn. Nhãn system contents được hiển thị khi ta mở SOPC Builder.
Hình 1.2.2 trình bày giao diện của nhãn này (và cũng là giao diện mặc định của SOPC
Builder). Với nhãn systemm contents ta có thể:

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 12


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

¾ Thêm vào hoặc loại ra các component trong hệ thống.

¾ Cấu hình các component.

¾ Chỉ định các đường kết nối giữa các component.

Hình 1.2.2: Các thành phần trong nhãn system contents

Bảng 1.1: Các thành phần giao diện người dùng trên nhãn system contents

Thành phần Chức năng

Các nhãn (Tabs) Phân loại các điều khiển giao diện người dùng dựa trên tác vụ

Danh sách các thành Liệt kê thư viện các thành phần sẵn có theo từng loại. Mỗi
phần sẵn có (List of thành phần xuất hiện kèm một chấm màu ngay bên tên của

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 13


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Available Component) nó. Chấm màu này có ý nghĩa sau:

• Chấm xanh lá: các thành phần đầy đử và có bản quyền


đã được cài đặt

• Chấm vàng: thành phần không đầy đủ, chỉ là bản đánh
giá (evaluation version).

• Chấm trắng: thành phần chưa cài đặt

Lọc các thành phần Lọc các thành phần theo loại
(component filters)

Bảng các thành phần Liệt kê các thành phần đã được cài đặt trên hệ thống, cho
đã kích hoạt (Table of phép ta chỉ định:
Active Components)
• Tên của từng thành phần

• Địa chỉ cơ bản cho mỗi cổng slave

• Nguồn xung clock cho mỗi thành phần

• Ưu tiên ngắt (nếu có) cho mỗi cổng slave

Bảng kết nối Trình bày các liên kết giữa những thành phần, cho phép ta:
(Connection Panel) Chỉ định liên kết giữa cổng master và cổng slave

Chỉ định các chia sẻ thỏa hiệp cho các cổng slave được nhiều
cổng master truy cập.

Các thiết lập bo mạch Cho phép ta chỉ định chi tiết nền phần cứng:
(Board Settings) Ví dụ ta có thể chỉ định board cụ thể sử dụng cho thiết kế
này, nhờ đó SOPC Builder sẽ tự động hỗ trợ kết nối các chân
ra các thiết bị ngoài chip (nhưng vẫn trên board). Điều này
giảm đáng kể thời gian phải nối chân cho thiết kế.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 14


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Bảng thiết lập xung Cho phép định nghĩa các tín hiệu clock được sử dụng trong
clock (Clock Settings hệ thống bao gồm: tên, nguồn, tần số, và tùy chọn pipeline
Table) cho các thiết kế có tốc độ cao

Cửa sổ thông báo Hiển thị các cảnh báo, lỗi hay thông tin liên quan đến hệ
(Messages Window) thống hiện tại.

I.2.2 Thiết Kế SOPC Builder Dùng Mã Verilog

I.2.2.1. Bắt Đầu Một SOPC Builder: Sao khi hoàn thành xong chương
trình chính việc xây một project mới của Quartus II, góc phải của giao diện ta
thấy biểu tượng SOPC Builder, click vào đó sẽ cho phép chúng thiết kế một hệ
thống SOPC Builder có thể lập trình được bằng Nios II IDE. Giao diện được
thể hiện ở hình 1.2.3.

Hình 1.2.3. tạo mới một SOPC Builder.

I..2.2.2 Thiết Kế Hệ Thống: sao khi tạo mới một SOPC Builder, chúng ta
thiết kế các đường kết nối bằng cách click vào Nios II processor để add một
cpu_0 được thể hiện ở hình 1.2.4.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 15


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.2.4. add cpu_0 vào để tạo kết nối.

Nhấn finish là chúng ta đã hoàn thành việc thiết kế một kết nối cpu_0 cơ bản.
Giao diện được thể hiện ở hình 1.2.5.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 16


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.2.5. thiết kế module cpu_0.

Tương tự, trong cửa sổ SOPC Builder này cũng cho phép chúng ta add thêm
các module kết nối cần thiết cho việc kế một hệ thống cần thiết. Minh họa trong hình
1.2.6 sẽ cho chúng ta nhìn rõ hơn quá trình này.

Hình 1.2.6. add các module cần thiết

Để kết nối cpu_0 với onchip_memory2_0 lại với nhau, ta cần chỉ ra đường dẫn
cho cpu_0 đi đến. đường dẫn này được thể hiện trong hình 1.2.7.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 17


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.2.7. liên kết cpu_0 với onchip_memory2_0

Xong công việc thiết kế một hệ thống, chúng ta biên dịch lại chương trình bằng
cách click vào button Generate để biết xem trong quá trình thiết kế có sai xót gì không.
Quá trình biên dịch thành công được thể hiện ở hình 1.2.8.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 18


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.2.8. biên dịch thành công

Biên dịch thành công, để tiếp tục chương trình thiết kế hệ thống chúng ta quay
lại với cửa sổ chính của Quartus II trong hình 1.1.1 và gán pin cho hệ thống theo hình
1.2.9.

Hình 1.2.9. Gán pin

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 19


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Sao khi gán pin xong, chúng ta biên dịch lại chương trình một lần nữa trong
Quartus II để hệ thống liên kết lại với nhau. Quá trình biên dịch thành công được thể
hiện trong hình 1.2.10.

Hình 1.2.10. Quartus II biên dịch thành công

Xong quá trình thiết phần cứng. Để điều khiển được hệ thống trên, Nios II IDE
sẽ cho phép chúng ta lập trình điều khiển toàn bộ hệ thống mà chúng ta vừa thiết kế.
Quay lại với SOPC Builder sao khi biên dịch thành công, click vào button Nios II IDE
để thực hiện việc lập trình. Hình 1.2.11 sẽ cho chúng ta được nhìn rõ hơn vấn đề này.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 20


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.2.11. lập trình Nios II IDE

I.3 Phần Mềm NIOS II IDE

Đây là chương trình biên dịch ngôn ngữ lập trình C và download chúng vào
trong chip Nios II. Nó chọn hệ thống SOPC gồm có: bộ nhớ, bộ đếm và nhiều lựa
chọn khác để biên dịch, debug và chạy chương trình C. JTAG UARC dùng để
download file C tới chip NIOS II. NIOS II IDE có một new project wizard dùng để tự
động cài đặt project ứng dụng C/C++ và project thư viện hệ thống. hơn nữa, NIOS II
IDE cung cấp mã phần mềm ví dụ( trong dạng project khuôn mẫu) để hỗ trợ các kỹ sư
phần mềm làm việc với hệ thống nhanh nhất có thể. Mỗi khuôn mẫu là lựa chọn file
phần mềm và thiết lập project. Người thiết kế có thể thêm mã nguồn của riêng họ vào
project bằng cách thay thế code vào trong thư mục project hoặc import file vào trong
project. Dựa trên chuẩn công nghiệp chuỗi công cụ JNU, NIOS II cung cấp giao diện
người dùng để biên soạn. Môi trường xây dựng NIOSS II IDE được thiết kế để thuận
tiện phát triển phần mềm cho bộ xử lý NIOS II của ALTERA miễn là dễ dùng Push-
Button. Mặc dù cũng cho phép người thiết kế xây dựng các thiết lập cao cấp bằng tay.
Môi trường xây dựng NIOS II IDE cung cấp một make file dựa trên cấu hình hệ thống
cụ thể(file SOPC Builder GENERATE PTF). Thay đổi thiết lập trình biên dịch/mối
liên kết trong NIOS II IDE được làm tự động trong make file này. Thiết lập này có thể

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 21


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

bao gồm tùy chọn cho file khởi tạo bộ nhớ(MIF), nội dung flash, file khởi tạo mô
phỏng(DAT/HEX), và file tóm tắt profile.

NIOS II IDE chứa debug phần mềm dựa trên debug GNU, GDP. Debug cung
cấp nhiều tính năng debug cơ bản, cũng như các tính năng debug khác thường là
không có sẵn trong các kit phát triển bộ xử lý giá thấp. Hoặt động chạy debug được
cung cấp sẵn bằng cách click phải vào project. NIOS II IDE cho phép bạn chạy hoặc
debug project trên board mục tiêu hoặc tập lệnh mô phỏng NIOS II(ISS). Mỗi ứng
dụng có thư viện riêng của nó. Thư viện này chứa file liên quan tới hệ thống xây dựng
của SOPC Builder. Nó có thể thực hiện lựa chọn bộ nhớ ngõ vào, ngõ ra và bộ đếm
cho ứng dụng. Có nhiều tùy chọn của biên dịch và chạy chương trình. Nó thì rất hữu
ích cho luận điểm project này ”tùy chọn thư viện C nhỏ”. Khi “tùy chọn thư viện C
nhỏ” được chọn, thư viện hệ thống dùng bổ xung giảm bớt của thư viện chuẩn Newlib
ANSI C. đặt biệt, họ prinf() của thủ tục(prinf(), fprinf(), sprinf()) giá trị con trỏ thay
đổi khi tùy chọn này được check.

I.3.1 Tổng quan các tính năng của bộ vi xử lý NIOS II:

NIOS II là một bộ vi xử lý mềm có một số tính năng có thể cấu hình phù hợp
với người dùng để tạo ra một hệ thống mong muốn được xử lý có thể cung cấp công
cụ trong ba cách có thể cấu hình khác nhau.

NIOS II/“fax” được thiết kế cho việc thực thi mạnh. Nó có nhiều tùy chọn để cấu hình,
có thể được sử dụng để tối ưu cho bộ xử lý thực thi.

NIOS II/S là một phiên bản “chuẩn”, phiên bản này yêu cầu nguồn tài nguyên thấp
trong một thiết bị FPGA thích hợp cho các thực thi đơn giản.

NIOS II/E là một phiên bản “kinh tế”, phiên bản này yêu cầu nguồn tài nguyên thấp
nhất của thiết bị FPGA nhưng nó cũng có nhiều giới hạn nhất để thiết lập các tính
năng mà người sử dụng có thể dùng.

Bộ xử lý NIOS II là kiến trúc máy tính thiết lập các tập lệnh đơn giản(RISC),
các hoạt động số học logic của nó được thi hành trên các toán hạn trong các thanh ghi

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 22


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

đa năng. Dữ liệu được di chuyển giữa bộ nhớ và các thanh ghi này theo mục đích của
lệnh load và store.

Độ dài của bộ xử lý NIOS II là 32 bit. Tất cả các thanh ghi có độ dài là 32 bit,
các byte địa chỉ trong 32 bit có thể được gán trong kiểu little-endian hoặc kiểu bit-
endian. Các kiểu gán này là một trong những tùy chọn mà người sử dụng có thể lựa
chọn để cấu hình thời gian. Kiến trúc NIOS II dùng để tách rời các bus tập lệnh và dữ
liệu. cái này thường liên quan tới kiến trúc phần cứng.

Một bộ xử lý NIOS II có thể hoạt động trong ba chế độ sau:

¾ Chế độ giám sát: cho phép bộ xử lý thi hành tất cả các tập lệnh và thực hiện tất
cả các hàm có sẵn. khi bộ xử lý reset, nó sẽ đi vào chế độ này.

¾ Chế độ người dùng: ngăn ngừa việc thực hiện một vài tập lệnh dùng cho hệ
thống mục tiêu. Một vài tính năng của bộ xử lý không sử dụng được trong chế
độ này.

¾ Chế độ debug: được sử dụng bởi các công cụ debug để thực hiện các tính năng
như điểm ngắt và điểm theo dõi.

Các chương trình ứng dụng có thể chạy trong chế độ người dùng hoặc chế độ giám
sát. Các phiên bản có sẵn hiện giờ của bộ xử lý NIOS II không hổ trợ chế độ người
dùng.

I.3.2 Cấu Trúc Thanh Ghi

Bộ xử lý NIOS II có 32 thanh ghi đa năng có 32 bit, một vài thanh ghi được
giành cho một mục đích cụ thể và có tên riêng. Nó được thừa nhận bởi chương
trình dịch hợp ngữ.

¾ Thanh ghi R0 được xem như là thanh ghi zero luôn luôn chứa giá trị không
đổi là 0.

¾ Thanh ghi R1 được sử dụng bởi chương trình hợp ngữ như một thanh ghi
tạm thời. Nó không được sử dụng cho chương trình người dùng.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 23


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

¾ Thanh ghi R24 và R29 được sử dụng xử lý các ngoại lệ. chúng không có sẵn
trong chế độ người dùng.

¾ Thanh ghi R25 và R30 được sử dụng giành riêng cho chế độ debug JTAG.

¾ Thanh ghi R27 và R28 dùng để điều khiển Stack.

¾ Thanh ghi R31 được sử dụng để giữ giá trị trả về khi một chương trình con
được gọi.

Thanh ghi Tên Chức năng

r0 zero 0x00000000

r1 at Chương trình dịch hợp ngữ tạm thời

r2

r3

. . .

. . .

. . .

r23

r24 et phản đối tạm thời (1)

r25 bt điểm ngắt tạm thời (2)

r26 gb con trỏ tòan cục

r27 sp con trỏ stack

r28 fp con trỏ khung

r29 ea địa chỉ trả về ngoại lệ (1)

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 24


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

r30 ba địa chỉ trả về điểm ngắt (2)

r31 ra địa chỉ trả về

(1) thanh ghi không có sẵn trong chế độ người dùng

(2) thanh ghi chỉ dùng trong chế độ debug JTAG

Bảng 1 Các Thanh Ghi Đa Năng

Các thanh ghi này được sử dụng tự động cho mục đích điều khiển. chúng có thể
đọc và ghi bằng các lệnh riêng biệt rdctl và wrdctl, cái này chỉ có thể thực hiện cho
mục đích giám sát. Các thanh ghi được sử dụng như sau:

¾ Thanh ghi ctl0 tương ứng với trạng thái hoạt động của bộ xử lý. Chỉ có 2bit
của thanh ghi này có ý nghĩa:

• U là bit chế độ người dùng/giám sát. U=1 là chế độ


người dùng, U=0 là chế độ giám sát.

• PIE là bit xử lý enable ngắt. PIE=1, bộ xử lý có thể


chấp nhận ngắt bên ngoài. PIE=0, bộ xử lý bỏ qua ngắt
bên ngoài.

¾ Thanh ghi ctl1 giữ bản sao lưu trữ của thanh ghi trang thái trong quá trình
xử lý ngoại lệ. bit EU và EPIE dùng để lưu trữ các bít trạng thái U và PIE.

¾ Thanh ghi ctl2 lưu giữ bản sao của thanh ghi trạng thái trong quá trình xử lý
ngắt debug. Bit BU và BPIE lưu giá trị của bit trạng thái U và PIE.

¾ Thanh ghi ctl3 dùng để enable riêng ngắt bên ngoài. Mỗi bit tương ứng một
ngắt irq0 tới irq31. Giá trị là 1 có nghĩa là ngắt enable, là 0 thì nó disable.

¾ Thanh ghi ctl4 chỉ ra ngắt đang chờ. Giá trị của bit nhận được, ctl4, được set
là 1 nếu ngắt irqk thì cả 2 active và enable bởi bit ngắt enable, ctl3, set đến
1.

¾ Thanh ghi ctl5 giử giá trị nhận biết xử lý duy nhất trong hệ thống đa xử lý.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 25


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Thanh ghi Tên b31…….b2 b1 b0

ctl0 status Dành riêng U PIE

ctl1 estatus Dành riêng EU EPIE

ctl2 bstatus Dành riêng BU BPIE

ctl3 ienable Bit enable ngắt

ctl4 ipending Bit chờ đợi ngắt

ctl5 cpuid Nhận biết bộ xử lý duy nhất

Bảng 2 Thanh Ghi Điều Khiển

I.3.3. Truy Xuất Bộ Nhớ Và Thiết Bị I/O

Để thực thi tốt nhất, bộ xử lý NIOS II/F có thể bao gồm cả hai bộ nhớ đệm tập
lệnh và dữ liệu. bộ nhớ đệm được thực hiện trong khối bộ nhớ FPGA, cách sử dụng
của chúng là tùy ý và chúng được chỉ định (bao gồm kích thước của chúng) ở thời
gian khởi tạo hệ thống bằng cách sử dụng SOPC Builder. Phiên bản NIOS II/S có
thể có bộ nhớ đệm tập lệnh nhưng không có bộ nhớ đệm dữ liệu. phiên bản NIOS
II/E không có bộ nhớ đệm tập lệnh và dữ liệu, nói cách khác để bộ xử lý truy xuất
nhanh đến bộ nhớ trên chip bằng cách sử dụng kết hợp chặt chẽ cả hai bộ nhớ,
trong trường hợp này bộ xử lý truy xuất bộ nhớ qua đường dẫn chỉ ra tốt hơn qua
mạng lưới Evelon. Truy xuất đến bộ nhớ kết hợp chặt chẽ bỏ qua bộ nhớ đệm. có
thể có một hoặc nhiều bộ nhớ tập lệnh và dữ liệu kết hợp. Nếu bộ nhớ đệm tập lệnh
không bao gồm trong hệ thống, khi đó phải có ít nhất một bộ nhớ kết hợp được
cung cấp cho bộ xử lý NIOS II/F và NIOS II/S. Bộ nhớ onchip cũng có thể được
truy xuất qua mạng lưới Evelon. Thiết bị bộ nhớ offchip như chip SRAM, SDRAM
và bộ nhớ flash có thể được truy xuất bằng giao diện thích hợp. Thiết bị I/O được
Map bộ nhớ có thể truy xuất như xác định truy xuất bộ nhớ. Dữ liệu truy xuất tới vị
trí bộ nhớ và giao diện I/O được thực hiện giành cho lệnh load và store, dữ liệu
được chuyển đổi bộ nhớ và thanh ghi đa năng.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 26


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.3.1 Tổ Chức Bộ Nhớ Và I/O

I.3.4. Địa Chỉ.

Bộ xử lý NIOS II đưa ra địa chỉ 32bit. Không gian bộ nhớ là 32 địa chỉ cho
phép. Các lệnh có thể đọc và ghi dữ liệu word(32bit), halfword(16bit), hoặc byte
8bit. Việc đọc và ghi một địa chỉ không tương ứng với một bộ nhớ đang tồn tại
hoặc vị trí I/O cho ra một kết quả không xác định. Có năm chế độ địa chỉ được đưa
ra:

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 27


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

¾ Chế độ tức thời: một toán hạn 16bit được ghi vào tập lệnh. Giá trị này có
thể mở rộng để cho ra một toán hạn 32bit trong tập lệnh mà thực hiện
các phép toán số học.

¾ Chế độ thanh ghi: toán hạn trong thanh ghi xử lý.

¾ Chế độ thay thế: địa chỉ đang tồn tại của toán hạn được cộng vào nội
dung của một thanh ghi vào một giá trị thay thế 16bit ghi vào trong tập
lệnh.

¾ Chế độ thanh ghi gián tiếp: địa chỉ đang tồn tại của một toán hạn là nội
dung của một thanh ghi được chỉ định trong tập lệnh.

¾ Chế độ tuyệt đối: một địa chỉ tuyệt đối 16bit của một toán hạn có thể
được chỉ định bằng cách dùng chế độ thay thế với thanh ghi R0 luôn
luôn có giá trị bằng 0.

I.3.5. Tập Lệnh

Tất cả các lệnh của NIOS II có độ dài 32bit. Các lệnh này được thực hiện trực
tiếp bởi bộ xử lý. Các lệnh NIOS II bao gồm một số các lệnh giả có thể được dùng
trong ngôn ngữ lập trình hợp ngữ. chương trình biên dịch hợp ngữ thay thế các lệnh
giả bằng một hoặc nhiều các lệnh máy. Có ba lệnh có thể định dạng: kiểu I, kiểu R
và kiểu J. Trong tất cả các trường hợp B[5:0] dùng cho OP code. Các bit còn lại
được sử dụng cho thanh ghi chỉ định, toán hạn tức thời hoặc OP code mở rộng.

¾ kiểu I: 5 bit A và B được sử dụng để chỉ định thanh ghi đa năng 16bit
IMM16 đưa ra dữ liệu tức thời có thể mở rộng cho ra toán hạn 32bit.

¾ Kiểu R: 5 bit A, B và C chỉ định thanh ghi đa năng. 11bit OPX dùng để
mở rộng OP code.

¾ Kiểu J: 26 bit IMM26 chứa giá trị Unsign tức thời. định dạng này chỉ
được dùng trong gọi lệnh.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 28


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.3.2 các định dạng của các tập lệnh NIOS II

I.4 Board DE2

I.4.1. Tính năng của mạch DE2

Tính năng của mạch DE2 là chip Cyclone® II 2C35 FPGA trong gói pin 672.
Tất cả các thành phần quan trọng trên mạch được kết nối với các pin của con chip này,
cho phép người sử dụng điều kiển tất cả các bộ phận bên ngoài của quá trình hoạt động
của mạch. Cuộc thử nghiệm đơn giản, mạch DE2 bao gồm một số khả năng của
switches, LEDs và hiển thị 7 đoạn. Cuộc thí nghiệm cao hơn có SRAM, SDRAM, và
chip bộ nhớ Flash, cũng như hiển thị ký tự 16x2. Những cuộc thí nghiệm phụ thuộc
vào bộ xử lý và giao diện I/O đơn giản. Điều này thì dễ để diễn giải cho bộ xử lý
Altera’s Nios II và sử dụng giao diện chuẩn như giao diện chuẩn RS-232 và PS/2.
Cuộc thí nghiệm bao gồm tính hiệu âm thanh và video, có bộ kết nối chuẩn như là
microphone, line-in, line-out (24-bit audio CODEC), video –in (TV Decoler), và VGA
(10-bit DAC); Những tính năng này có thể được sử dụng để tạo ra ứng dụng audio
CD- quality. Dự án thiết kế DE2 lớn hơn cung cấp kết nối USB 2.0 (cả máy chủ và
thiết bị), 10/100 Ethernet, và cổng hồng ngoại (IrDA) và một kết nối thẻ nhớ SD. Nói
tóm lại, nó có thể kết nối khác do người dùng qui định tới mạch DE2

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 29


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.4.1 Board DE2

I.4.2. Thông số kỹ thuật

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 30


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.4.2 Biểu Đồ Khối Của Board DE2

FPGA

¾ Cyclone II EP2C35F672C6 FPGA và EPCF16 và thiết bị cấu hình serial

Thiết bị I/O

¾ Được xây dựng trên USB Blaster cho FPGA

¾ Cổng Ethenet10/100 RS-232, cổng hồng ngoại

¾ Video-out (VGA 10- bit DAC)

¾ Video-in (NTSC/PAL/ Multi format)

¾ USB 2.0 kiểu A kiểu B

¾ Cổng PS/2 cho chuột và bàn phiếm

¾ Line-in, line-out, microphone-in, 24bit audio CODEC

¾ Mở rộng phần đầu(76 chân tín hiệu)

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 31


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Memory

¾ 8 MB SDRAM, 512 KB SRAM, 4 MB Flash

¾ Khe cắm thẻ nhớ SD

Switches, LEDs, Displays, and Clocks

¾ 18 switch

¾ 4 nút ấn debuonced switch

¾ 18 LED đỏ, 9 LED xanh

¾ 8 hiển thị 7 đoạn

¾ Hiển thị LCD 16x2

¾ Bộ tạo dao động 27MHz và 50 MHz , ngõ vào clock SMA bên ngoài.

Hình 1.4.3 của board DE2 chỉ ra cách bố trí va vị trí chỉ định của các thành
phần trên board DE2.

Hình 1.4.2. Board DE2 của Altera.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 32


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Board DE2 có nhiều đặc điểm cho phép người sử dụng có thể thiết kế và thực
thi các mạch từ đơn giản đến phức tạp.

Sau đây là các phần cứng được board DE2 cung cấp:

¾ Altera Cyclone II 2C35 FPGA.

¾ Altera Serial Configuration device-EPCS-16.

¾ Các cổng USB.

¾ SRAM 512 Kbyte.

¾ SDRAM 8 Mbyte.

¾ Flash memory 4 Mbyte.

¾ SD card socket.

¾ 4 SW nhấn.

¾ 18 SW đẩy.

¾ 18 LEDs đỏ.

¾ 9 LEDs xanh.

¾ Clock source dao động 50MH và 27 MHz.

¾ 24 bit CD-quality audio CODEC vói các jack line-in,line-


out,microphone.

¾ VGA DAC với đầu kết nối VGA-out.

¾ TV Decoder và đầu kết nối TV-in.

¾ Cổng Ethenet 10/100.

¾ Cổng RS232 9 pin.

¾ Cổng SP/2.

¾ Cổng hồng ngoại IrDA.

¾ 2 Expension Heard 40 pin.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 33


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

I.4.3. Những Ví Dụ Về Những ứng Dụng Cao Cấp

Mạch DE2 có thể được sử dụng để thực thi những phân loại rộng của những dự
án thiết kế.

Ứng dụng TV box

Hình 1.4.3 Ứng Dụng TV Box

¾ Giải mã TV chất lượng cao

¾ Chất lượng CD âm thanh 24 bit

¾ Màn hình VGA

¾ Đúng tiêu chuẩn cho ứng dụng cho video

¾ Tất cả mã nguồn driver phần mềm cho Nios® II

USB Mouse Paintbrush

¾ Sử dụng cổng USB 2.0 trên mạch DE2

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 34


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 1.4.4 USB Chuột Paintbrush

¾ Phần mềm USB máy chủ và thiết bị cho Nios II

¾ Cung cấp ví dụ của bộ đệm video SRAM

Karaoke Machine và SD music player

Hình 1.4.5 Karaoke Machine và SD Music Player

¾ CD chất lượng âm thanh 24 bit

¾ Đúng tiêu chuẩn cho ứng dụng audio

¾ Tất cả mã nguồn driver phần mềm cho Nios® II

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 35


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Chương II

Audio Codec W8731/L

II.1 Giới Thiệu Về AUDIO CODEC W8731/L

WM8731 là một audio CODEC công suất thấp được thiết kế đặc biệt cho sản
phẩm audio linh động. Nó tiện lợi và tiêu thụ điện áp thấp phù hợp cho ý tưởng tạo ra
những sản phẩm MP3 Player và Mini-disc Player.

CODEC bao gồm những đường và ngõ vào microphone tới ADC on-board,
đường và ngõ ra headphone từ DAC on board, một máy tạo dao động, định cấu hình
giao diện digital audio và lựa chọn giao diện điều khiển 2 hay 3 dây MPU. Nó hoàn
toàn tương thích là một ý tưởng kết hợp cho một phần của bộ vi xử lý, mạch điều
khiển, và DSP chuẩn công nghiệp.

CODEC bao gồm 3 loại tín hiệu vào – mono microphone và stereo line. Line tín
hiệu vào có thể điều chỉnh cấp độ âm thanh từ +12dB tới -34dB và mute. Tín hiệu vào
microphone có thể điều chỉnh từ -6dB đến 34dB. Tất cả quy định bộ lọc tín hiệu vào
được chứa vào trong thiết bị không có thành phần bên ngoài quy định.

Bộ chuyển đổi tín hiệu tương tự sang tín hiệu số trên âm thanh nổi on-board là
chất lượng cao dùng nhiều bit bậc cao trên việc mẫu cấu trúc phân phối thực thi tốt
nhất mà tiêu thụ năng lượng thấp. Tín hiệu ngõ ra từ ADC có sẵn trên giao diện audio
tín hiệu số. ADC bao gồm một tín hiệu số tùy chọn cao qua bộ lọc tới

ADC bao gồm một tùy chọn số dùng gỡ bỏ phần không cần thiết từ tín hiệu
audio.

Bộ chuyển đổi tín hiệu số sang tương tự on-board chấp nhận tín hiệu số audio
từ giao diện tín hiệu số audio. Bộ lọc tín hiệu số ở 32 kHz, 44.1 kHz, 48 kHz có thể áp
dụng dữ liệu tín hiệu số dưới dạng phần mềm điều khiển. DAC tận dụng kiểu cấu trúc
oversampling đa tầng - khá cao- có chất lượng tốt để thực hiện công việc với hiệu suất
tốt nhất mà lại tiêu thụ ít năng lượng

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 36


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Tín hiệu ra DAC, microphone (SIDETONE) và Line ngõ vào (BYPASS) được
cung cấp sẵn cả 2 mức line và một bộ khuếch đại âm thanh headphone. Âm lượng tín
hiệu ra headphone có thể điều chỉnh trong tín hiệu tương tự ở mức +6dB đến -73dB và
có thể mute.

Thiết kế WM8731/L phải chú ý nhiều đến tiêu thụ điện năng mà không ảnh
hưởng đến hiệu suất. Nó bao gồm việc khéo léo trong lựa chọn tắt điện năng của mạch
dưới dạng phần mềm điều khiển, làm như thế để bảo tồn điện năng. Cách lưu năng
lượng khác là định dạng trong phần mềm điều khiển bao gồm chế độ standby và tắt
nguồn. Kỹ thuật đặc biệt cho phép audio có thể bị mute và thiết bị đặt trong tình trang
standby một cách an toàn, phần thiết bị được tắt nguồn và mức âm thanh được tự điều
chỉnh. Vì thế chế độ standby và power off có thể được tận dụng trong phần mềm điều
khiển, bất cứ khi nào đang ghi âm hay đang nghe mà không cần đến.

Thiết bị phục vụ cho tốc độ mẫu khác nhau bao gồm các chuẩn 8kHz, 32kHz,
44.1 kHz, 48 kHz, 88.2 kHz và 96 kHz. Ngoài ra, thiết bị có một ADC và DAC có thể
hoạt động ở tốc độ mẫu khác nhau. Có 2 sự phối hợp duy nhất đặc trưng trong tốc độ
mẫu được lập trình của WM8731/L. Chuẩn thông thường là tốc độ 256/384fs có thể
được dùng, với khả năng thêm vào tốc độ lấy mẫu khác. Hơn nữa chế độ USB đặc biệt
được bao gồm bên trong, nhờ đó tất cả tốc độ mẫu audio có thể được tạo ra từ xung
clock USB 12.00MHZ. Theo cách đó, ví dụ, DAC có thể ghi vào DSP ở tốc độ
44.1kHz và chạy lại từ CODEC với tốc độ 8kHz mà không cần phụ thuộc vào tiến
trình xử lý tín hiệu số bên ngoài. Bộ lọc kỹ thuật số sử dụng ghi và nghe lại khách
quan cho mỗi tốc độ được sử dụng. Ngõ ra ký số hóa sẵn có trong một số định dạng dữ
liệu audio chế độ I2S, DSP, MSB-First, left justified và MSB-First, right justified.
Giao diện audio số có thể hoạt động cả 2 chế độ Master hoặc Slave.

Phần mềm điều khiển sử dụng giao diện MPU 2 hoặc 3- Wire.

Máy tạo dao động được bao gồm trên board của thiết bị. Thiết bị có thể tạo ra
hệ thống master clock hoặc nó có thể chấp nhận một master clock bên ngoài từ hệ
thống audio.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 37


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 2.1.1 Sơ Đồ Khối Chức Năng WM8731/L

II.1.1 Đường Dẫn Line Input


WM8731/L cung cấp 2 line tín hiệu vào trái và phải (RLINEIN và LLINEIN).
Những tín hiệu ngõ vào có trở kháng cao và có điện dung thấp. điều này phù hợp với
nhận tín hiệu ở mức Line từ thiết bị hi-fi hay audio bên ngoài.

Cả hai Line ngõ vào có thể lập trình độc lập điều chỉnh mức độ âm thanh và
ngõ vào ADC mute. Lược đồ được mô tả trong hình 2. Bộ lọc bị động RF và bộ lọc
tích cực Anti-Alias thì kết hợp chặt chẽ với nhau trong Line ngõ vào. Điều này ngăn
cản alias tần số cao vào trong băng tần audio hay làm giảm giá trị thực hiện.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 38


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 2.1.2 Lược Đồ Line Ngõ Vào.

Kết quả thu được giữa Line ngõ vào và ADC là có thể điều chỉnh từ +12dB đến
-34.5dB. ADC làm giảm ngõ vào AVDD từ 3.3V xuống 1V. Bất kỳ điện thế lớn hơn
làm giảm xuống sẽ có thể làm tràn ADC và vì thế không chính xác. Chú ý việc làm
giảm ngõ vào phải kiểm tra AVDD ngay lập tức. Tuy nhiên, bằng cách đặt bit
INBOTH trong khi lập trình điều khiển âm thanh, cả 2 kênh được cập nhật đồng thời
với giá trị tương tự. Line ngõ vào đến ADC có thể mute trong vùng tín hiệu tương tự
dưới dạng điều khiển phần mềm. Chú ý Line ngõ vào Mute chỉ Mute ngõ vào đến
ADC, điều này cho phép tín hiệu Line ngõ vào đi qua ngõ ra trong chế độ ByPass.

Register
Bit Nhãn Mặc Định Phần Mô Tả
address
Left Channel Line Input
Volume
0000000 10111 Control
4:0 LINVOL[4:0]
Left Line In ( 0dB ) 11111 = +12dB . . 1.5dB
steps down
to 00000 = -34.5dB

7 1 Left Channel Line Input


Mute to ADC
LINMUTE
1 = Enable Mute
0 = Disable Mute

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 39


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

8 0 Left to Right Channel Line


Input
Volume and Mute Data
Load Control
1 = Enable Simultaneous
Load of
LRINBOTH
LINVOL[4:0] and
LINMUTE to
RINVOL[4:0] and
RINMUTE
0 = Disable Simultaneous
Load

Right Channel Line Input


Volume
10111 Control
4:0 LINVOL[4:0]
( 0dB ) 11111 = +12dB . .1.5dB
steps down
to 00000 = -34.5dB

7 1 Right Channel Line Input


Mute to
LINMUTE ADC
1 = Enable Mute
0 = Disable Mute
0000001
Right Line In
8 0 Right to Left Channel Line
Input
Volume and Mute Data
Load Control
1 = Enable Simultaneous
Load of
LRINBOTH
RINVOL[4:0] and
RINMUTE to
LINVOL[4:0] and
LINMUTE
0 = Disable Simultaneous
Load

Bảng 3 Điều Khiển Phần Mềm Line Ngõ Vào

Những tín hiệu Line ngõ vào thế hiệu dịch bên trong suốt quá trình máy khuếch
đại hoạt động đến VMID. Bất cứ khi nào các Line ngõ vào bị mute thiết bị dịch
chuyển vào chế độ Standby, các Line ngõ vào được giữ lại thế hiệu dịch đến VMID

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 40


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

dùng chống lại va đập của mạch. Việc làm giảm bất kỳ tạp âm nào mà có thể nghe
được khi ngõ vào hoạt động trở lại.

II.1.2 Ngõ Vào Microphone


MICIN là một ngõ vào trở kháng cao và có điện dung thấp phù hợp kết nối diện
rộng của Microphone chỉ dùng 1 kênh âm thanh có độ nhạy và động.

MICIN bao gồm lập trình điều chỉnh âm thanh và chức năng mute.

Điều khiển phần mềm cho MICIN được trình bày trong bảng 3. Chú ý
Microphone chỉ Mute tín hiệu đến ADC. Điều này cho phép tín hiệu vào Microphone

Đi qua ngõ ra trong chế độ Sidetone.

Register address Bit Nhãn Mặc Định Phần Mô Tả


00000100 0 MICBOOST 0 Microphone Input Level
Analogue Audio Boot
path control 1 = enable Boost
0= disable Boost
1 MUTEMIC 1 Line Input Mute to ADC
1= enable MUTE
0= disable Mute
Bảng 4 Điều Khiển Phần Mềm Ngõ Vào Microphone.

Ngõ vào Microphone bị thế hiệu dịch bên trong suốt quá trình máy khuếch đại
hoạt động đến VMID. Khi nào Line ngõ vào bị mute ngõ vào MICIN bị giữ lại hiệu
dịch đến VMID dùng chống lại tiếng ồn của mạch. Điều này làm giảm tạp âm mà có
thể nghe thấy khi ngõ vào hoạt động trở lại.

II.1.3 MICROPHONE BIAS

Ngõ ra MICBIAS cung cấp một âm thanh thấp điện thế phù hợp với dòng điện
hiệu dịch microphone và kết hợp với điện trở bên ngoài mạng lưới bias.

Chú ý rằng nguồn max hiện thời là 3mA. Giới hạn này là giá trị nhỏ nhất của
điện trở bias bên ngoài mà có thể sử dụng an toàn. Chú ý ngõ ra MICBIAS không hoạt
động trong chế độ standby.

II.1.4 Bộ Lọc ADC

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 41


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

WM8731/L sử dụng ADC đa tầng multi-bit oversampled sigma-delta.

Sử dụng phản hồi đa bit và tốc độ oversampling cao làm giảm tác động đột ngột
và âm thanh tần số cao. ADC làm giảm ngõ vào AVDD từ 3.3V xuống 1.0. Bất kì điện
thế cao hơn làm giảm xuông sẽ làm tràn ADC và vì thế không chính xác. Chú ý việc
làm giảm ngõ vào phải kiểm tra AVDD ngay lập tức. Thiết bị phụ vụ cho một cặp
ADC. Ngõ vào có thể được lựa chọn hoặc từ Line ngõ vào hoặc từ ngõ vào
Microphone dưới dạng điều khiển phần mềm. 2 kênh không thề được chọn đồng thời.

Mặc
Register address Bit Nhãn Phần Mô Tả
Định
00000100 2 INSEL 0 Microphone/Line Input
Analogue Audio Select To ADC
path control 1= Microphone Input
Select to ADC
0 = Line Input Select to
ADC
Bảng 5 Điều Khiển Phần Mềm ADC

Dữ liệu số từ ADC được cấp cho tín hiệu xử lý đến bộ lọc ADC.

Bộ lọc ADC thực hiện xử lý tín hiệu 24 bit để chuyển đổi dữ liệu oversampled
nhiều bit từ ADC đến tần số mẫu đúng thành ngõ ra trên giao diện audio số.

Bộ lọc số ADC chứa một tín hiệu số cao qua bộ lọc, có thể lựa chọn qua điều
khiển phần mềm. Bộ lọc high-pass sẽ đáp ứng chi tiết trong trong đặc điểm của bộ lọc
số. Khi bộ lọc high-pass được enable offset DC liên tục tính toán và trừ những tín
hiệu vào. Bằng cách cài đặt HPOR tính toán cuối cùng giá trị offset dc được lưu trữ
khi đó bộ lọc high-pass bị disable và sẽ tiếp tục trừ những tín ngõ vào. Nếu offset dc
tahy đổi, việc lưu trữ và giá trị trừ sẽ không thay đổi trừ khi bộ lọc high-pass enable.

Register
Bit Nhãn Mặc Định Phần Mô Tả
address

0000101 0 ADCHPD 0 ADC High Pass Filter

Digital Audio Enable(Digital)

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 42


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

path Control 1= disable high pass filter

0 = enable High ass Filter

4 HPOR 0 Store DC offset when high


Pass Filter Disable

1= store offset

0 = clear offset

Bảng 6 Điều Khiển Phần Mềm ADC

Có vài kiểu bộ lọc khác nhau, đáp ứng tần số và đáp ứng pha. Những kiểu bộ
lọc sẽ tự động cấu hình phụ thuộc vào chọn tốc độ mẫu.

II.1.5 Bộ Lọc DAC


Bộ lọc DAC thực hiện xử lý tín hiệu 24 bit để chuyển đổi dữ liệu audio số đến
từ giao diện audio số ở tốc độ mẫu lý thuyết đến dữ liệu multi-Bit Oversample để xử lý
bằng tín hiệu tương tự ADC.

Bộ lọc số DAC cá thể áp dụng dưới dạng điều khiển phần mềm. DAC có thể
thực hiện mute mà dữ liệu audio dạng số mang đến mức độ mute. Việc thay đổi này
chuyển đổi từng bước trong audio mà có thể cho kết quả khác nhau có thể nghe thấy
trong ngõ ra audio.

Register
Bit Nhãn Mặc Định Phần Mô Tả
address

0000101 2:1 DEEMP[1:0] 00 De-emphasis control(digital)

Digital Audio 11= 48 kHz


path Control 10 = 44.1 kHz

01= 32 kHz

00 = disable

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 43


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

3 DACMU 1 DAC Soft Mute Control


(digital)

1= enable soft Mute

0= disable soft mute

Bảng 7 Điều Khiển Phần Mềm DAC

DAC chuyển đổi dòng tín hiệu audio số đa tầng từ bộ lọc số DAC vào trong tín
hiệu audio tương tự chất lượng cao.

II.1.6 Line Ngõ Ra.


WM8731/L cung cấp trở kháng thấp line ngõ ra là LLINEOUT và RLINEOUT,
phù hợp với đặc tính load line của trở kháng 10K và điện dung 50pF. Line ngõ ra
thường sử dụng có lựa chọn tổng hợp các ngõ ra từ các DAC or/and line ngõ vào trong
chế độ bypass.

Các ngõ ra LLINEOUT và RLINEOUT chỉ có sẵn ở mức độ Line ngõ ra và


không có điều chỉnh cấp độ trong vùng tín hiệu tương tự. Có giá trị gain cố định là
0dB. Mức độ cố định như vậy ở DAC làm giảm mức độ ngõ ra ở AVDD = 3.3V. Chú
ý DAC làm giảm mức độ phải kiểm tra ngay lập tức với AVDD. Line ngõ ra bao gồm
tín hiệu audio bậc thấp đi qua bộ lọc chuyển tiếp đến băng thành phần bên ngoài từ
DAC sigma-delta. Vì thế không lọc thêm ra bên ngoài bị phụ thuộc vào phần lớn các
ứng dụng.

Ngõ ra DAC, Line ngõ vào microphone được tổng hợp vào trong Line ngõ ra.
Trong chế độ DAC chỉ có ngõ ra từ DAC được định tuyến đến line ngõ ra. Trong chế
độ bypass Line ngõ vào tổng hợp vào trong Line ngõ ra. Trong chế độ Sidetone ngõ
vào microphone được tổng hợp vào trong Line ngõ ra. Những đặc điểm này có thể
dùng cho hoặc over-dubbing hoặc nếu DAC bị mute, như một tín hiệu tương tự bypass
hay đặc tính của sidetone. Cho nên tránh bất kỳ xử lý tín hiệu số nào.

Line ngõ ra bị mute bằng cách mute DAC (tín hiệu tương tự) hay mute mềm
(tín hiệu số) và disable đường dẫn BYPASS và SIDETONE. Bất cứ khi nào DAC bị

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 44


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

mute hoặc thiết bị bị đưa vào trong chế độ standby điện thế DC được duy trì ở ngõ ra
để ngăn ngừa tạp âm tồn tại hiện thời.

Điều khiển phần mềm cho Line ngõ ra được trình bày trong bảng 7.

Register Bit Nhãn Mặc Định Phần Mô Tả


address
0000100 3 BYPASS 1 Bypass Swich
1= enable Bypass
0 = disable Bypass
4 DACSEL 0 DAC Select
1= select DAC
0 = Don’t select DAC
5 SIDETONE 0 Side Tone Swich
1= enable Side Tone
0 = disable Side Tone
Bảng 8 Điều Khiển Phần Mềm Line Output.

II.1.7 HEADPHONE AMPLIFIER


WM8731/L có ngõ ra headphone âm thanh nổi có sẳn trên LHOUT và
RHPOUT. Ngõ ra được thiết kế riêng cho headphone 16 hoặc 32 ohm với hiệu suất tối
đa và tiêu thụ năng lượng tối thiểu. ngõ ra headphone bao gồm sự điều chỉnh âm lượng
âm thanh cao và chức năng mute.
Âm lượng của LHPOUT và RHPOUT có thể được điều chỉnh độc lập dưới sự
điều khiển của phần mềm sử dụng LHPVOL [6:0] hoặc RHPVO [6:0] bits tách biệt
với sự điều khển thiết bị ngõ ra headphone. Sự điều chỉnh trong khoản 80dB từ +6dB
đến -73dB.
Ngõ ra headphone có thể mute bởi mã chương trình thấp hơn 0110000 đến
LHPVOL [6:0] bits. Bất cứ khi nào ngõ ra headphone mute hoặc thiết bị được đặt
trong chế độ standby, điện thế DC được duy trì tại đường dẫn xuất ra để ngăn cản bất
kì âm thanh nào có thể nghe thấy trong hiện tại.
Một mạch dò tìm giao zero được cung cấp tại ngõ vào đến headphone dưới sự
điều kiển của bit LZCEN và RZCEN của sự điều khiển ngõ ra headphone. Khi sử dụng
sự điều khiển này âm lượng chỉ được cập nhật khi tín hiệu vào đến cổng Gain thì đóng
tới mức độ tín hiệu tương tự. Những âm thanh nhỏ và tiếng ồn như là trị số Gain được
thay đổi hoặc im lặng. Chú ý rằng mạch này không có thời gian tạm ngưng chỉ khi

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 45


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

mức DC được chỉ ra tới ngõ vào cổng Gain của nhiều hơn khoảng 20mV, sau đó Gain
sẽ không được cập nhật. Chức năng Zero cross thì được làm cho khi bit LZCEN và
RZCEN có thiết lập cao trong suốt volume register write . Nếu có sự liên quan rằng
mức độ DC có thể bị ngăn cản thay đổi âm lượng sau đó âm lượng được ghi vào cùng
1 giá trị, nhưng với LZCEN hoặc RZCEN bit set low sẽ bắt buộc sự cập nhật âm lượng
bất chấp mức độ của DC.
Âm lượng của LHPOUT và RHPOUT và cài đặt zero-cross có thể được thay
đổi độc lập. Thay vào đó, người sử dụng có thể mở 2 kênh cùng với nhau, cho phép cả
hai có thể cập nhật đồng thời, đòi hỏi sự chia đôi số serial writes với điều kiện là cùng
Gain được cần cho cả 2 kênh, Điều này là kết quả trong khi điều khiển bit HPBOTH.
Cài đặt LRHPBOTH trong khi viết LHPVOL và LZCEN sẽ cập nhật đồng thời The
Right Headphone controls. Sự ảnh hưởng phù hợp trên cập nhật RLHPBOTH là kết
quả.
Register
Bit Nhãn Mặc Định Phần Mô Tả
address
Left Channel Line Input
Volume
Control
LHPVOL[6: 1111001 1111111 = +6dB . . 1dB
6:0
0] ( 0dB ) steps down
to 0110000 = -73dB
0000000 to 0101111 =
MUTE

7 0 Left Channel ZERO Cross


00000010
detect enable
Left LZCEN
1 = Enable
Headphone
0 = Disable
out
8 0 Left to Right Channel
Headphone volume, mute,
and zero Cross Data load
control
LRHPBOTH 1 = Enable Simultaneous
Load of
LHPVOL[6:0] and LZCEN
to RHPVOL[6:0]
and PZCEN
0 = Disable Simultaneous

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 46


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Load

Right Channel Headphone


Output Volume Control
RHPVOL[6: 1111001 11111 = +6dB . .1dB steps
6:0
0] ( 0dB ) down
to 00000 = -73dB 0000000
to 0101111 = Mute

7 0 Right Channel Zero Cross


Detect Enable
RZCEN
1 = Enable
0000011
0 = Disable
Right
Headphone
8 0 Right to Left Channel
Out
Headphone volume, Mute
and Zero Cross Data load
control
1 = Enable Simultaneous
RLHPBOTH Load of
RHPVOL[6:0] and RZCEN
to LHPVOL[4:0] and
LZCEN
0 = Disable Simultaneous
Load

Bảng 9 Điều Khiển Phần Mềm Ngõ Ra Headphone

II.2 Các Chế Độ Hoạt Động

II.2.1 SYPASS MODE


WM8731/L bao gồm phương thức vòng do đó đường dẫn nhập vào tín hiệu
tương tự được xác định cụ thể để đến đường đẫn xuất ra tín hiệu tương tự và ngõ ra
headphone.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 47


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 2.2.1 Định Tuyến Tín Hiệu Trong Chế Độ Bypass

Phương thức vòng được chọn dưới sự điều khiển của phần mềm sử dụng bit BYPASS
microphone được thể hiện ở bảng 9. Nói về phương thức vòng , ngõ ra từ DAC
(DACSEL) và SIDETONE không nên chọn từ đường dẫn ngõ ra. Tuy nhiên, điều này
cũng có thể được sử dụng để tổng hợp ngõ ra DAC, Line ngõ vào và ngõ vào
headphone. Điều khiển âm lượng và mute tín hiệu tương tự Line ngõ vào và ngõ ra
headphone vẫn được hoạt động trong phương thức vòng. Thiết lập giá trị gain 0dB
được yêu cầu cho điều chỉnh âm lượng Line ngõ vào để tránh sự không chính xác. Tín
hiệu lớn nhất tại bất kì điểm nào của đường dẫn vòng không được lớn hơn 1.0V rms ở
AVDD =3.3V để tránh sự không chính xác. Độ lớn của kiễm tra tuyến tính với
AVDD. Điều này có nghĩa là nếu DAC đang phát ra tín hiệu 1Vrms, và nó được tổng
hợp với đường dẫn 1Vrms tín hiệu BYBASS, kết quả của tín hiệu LINEOP sẽ bị chia
cắt.

Register
Bit Nhãn Mặc Định Phần Mô Tả
address
0000100 3 BYPASS 1 Bypass Swich (analogue)
Analogue 1 = enable Bypass
Audio path 0 = disable Bypass
Control

Bảng 10 Điều Khiển Phần Mềm Trong Chế Độ Bypass

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 48


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

II.2.2 SIDETONE MODE


WM8731/L cũng bao gồm chế độ cạnh tín hiệu số nơi mà ngõ vào tai nghe
được định hướng đến đường dẫn và ngõ ra tai nghe. Hình ảnh được thể hịên ở hình 24.
Chến độ Sidetone cho phép ngõ vào microphone bị yếu đi đến ngõ ra cho ứng dụng
telephone và headset.

Hình 2.2.2 Lược Đồ Chế Độ Sidetone

Register
Bit Nhãn Mặc Định Phần Mô Tả
address
0000100 5 SIDETONE 0 Sidetone Swich (analogue)
Analogue 1 = enable Side Tone
Audio path 0 = disable Side Tone
Control 7:6 SIDEATT 00 Side Tone Attenuation
11= -15 dB
10 = -12dB
01= -9 dB
00= - 6 dB

Bảng 11 Chế Độ Sidetone

Chế độ cạnh tín hiệu số và sự suy giảm được chọn dưới sự điều khiển của phần
mềm sử dụng bit SIDETONE được thể hiện ở bảng 10.Tín hiệu cạnh ngõ ra từ DAC
và Line ngõ vào (BYBASS) không nên chọn từ khối Line ngõ ra. Tuy nhiên, điều này
cũng có thể được sử dụng để tổng hợp ngõ ra DAC, đường dẫn ngõ vào và ngõ vào
microphone lại với nhau. Điều khiển microphone boost gain và điều khiển âm lượng

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 49


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

và mute ngõ ra headphone vẫn hoạt động ở chế độ tín hiệu cạnh. Tín hiệu lớn nhất tại
bất kì điểm nào trong đường dẫn tín hiệu cạnh phải không lớn hơn 1.0Vrms tại
VDD=3.3V, để tránh sự không chính xác. Biên độ này phải kiểm tra ngay lệp tức với
AVDD.
II.3 Hoạt Động Của Thiết Bị
II.3.1 Cài Đặt Lại Thiết Bị
WM8731/L chứa đựng năng lượng trên mạch xác lập lại mà xác lập lại trạng
thái của thiết bị bên trong. Năng lượng xác lập lại được ứng dụng như là năng lượng
DCVDD và phóng điện chỉ sau khi mức độ địên thế của DCVDD giao với ngưỡng
thấp nhất. Nếu sau đó DCVDD rơi thấp hơn ngưỡng điện thế nhỏ nhất sau đó năng
lượng được xác lập lại được ứng dụng lại. Ngưỡng địên thế và kết hợp hiện tượng trễ
được thể hiện trong bảng Electrical Characteristics. Người sử dụng cũng có khả năng
xác lập lại thiết bị để biết tình trạng bằng cách điều khiển phần mềm được thể hiện ở
hình bên dưới.

Register address Bit Nhãn Mặc Định Phần Mô Tả


0001111 8:0 RESET Not reset Reset Register
Reset Register Writing 00000000 to register
resets device
Bảng 12 Điều khiển phần mềm của reset.

Khi sử dụng xác lập lại phần mềm trong chế độ 3-wire, sự xác lập lại được ứng
dụng trên sự gia tăng tuổi của CSB và released trên sự gia tăng tuổi tiếp theo của
SCLK.In 2-wire mode, sự xác lập lại được ứng dụng trong khoảng thời gian của tín
hiệu ACK (khoảng 1 SCLK thời gian)
II.3.2 Lược Đồ CLOCKING
Trong đặc trưng hệ thống kĩ thuật số audio, chỉ có một nguồn xung clock trung
tâm sản xuất xung clock tham chiếu mà tất cả dữ liệu audio đựơc đồng bộ hoá. Xung
clock này thường liên hệ với hệ thống xung clock chủ. cho phép WM8731/L sử dụng
trong hệ thống khoá trung tâm, WM8731/L có khả năng phát sinh hệ thông khoá này
hoặc nhận nó từ nguồn bên ngoài.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 50


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Trong ứng dụng này, WM8671/L được mong muốn là hệ thống xung clock
nguồn, sau đó xung clock trung tâm được tiến hành trong quá trình sử dụng tinh thể
phù hợp được kết nối giữa ngõ vào XTI/MCLK và ngõ ra pin XTO
Trong ứng dụng này, những tính năng khác hơn hẳn WM8731/L sẽ được tạo ra
ở xung clock tham chiếu, hệ thống bên ngoài có thể được ứng dụng cụ thể trong ngõ
vào XTI/MCLK pin mà không cần sự điều khiển của phần mềm. Chú ý rằng trong tình
huống này, máy tạo giao động mạch của WM8731/L giảm năng lượng an toàn để bảo
toàn năng lượng.
II.3.3 LÕI XUNG CLOCK.
Lõi WM8731/L DSP có thể có 1 xung clock MCLK hoặc 2 xung MCLK riêng
biệt. Được điều khiễn bởi phần mềm trong bảng 12.
Register
Bit Nhãn Mặc Định Phần Mô Tả
address
0001000 6 CLKIDIV2 0 Core Clock Divider Select
Sampling 1= Core Clock Is MCLK Divied
Control By 2
0 = Core Clock is MCLK
Bảng 13 Điều Khiển Phần Mềm Của Lõi Clock.

Có 1 MCLK chia rẽ có thể lập trình được cho phép thiết bị được dùng trong
những ứng dụng xung clock chủ tần số cao có sẵn. Ví dụ thiết bị có thể hỗ trợ xung
clock chủ 512fs trong khi hoạt động cơ bản ở chế độ 256fs.
II.3.4 Máy Tạo Dao Động CRYSTAL
WM8731/L bao gồm một mạch tạo dao động Crystal cho phép xung clock tham
chiếu đến hệ thống audio được khởi tạo trên thiết bị. Điều này có sẵn dựa trên hệ thống
audio trong bộ nhớ đệm tạo thành CLKOUT. Máy tạo dao động Crystal là một kiểu
nhiệt thấp, được thiết kế cho EMI thấp.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 51


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 2.3.1 Mạch Ứng Dụng Máy Tạo Dao Động Crystal.

Miền tần số của Crystal là 12MHz, Cp đề nghị là 10pF. Miền tần số của Crystal
là 18MHz, Cp đề nghị là 15pF. Máy tạo dao động Crystal của WM8731/L cung cấp
nguồn xung clock thấp cực độ. Nguồn xung clock thấp là một nhu câu cho ADC và
DAC audio chất lượng cao không quan tâm cấu trúc máy chuyển đổi. Cấu trúc máy
WM8731/L ít bị ảnh hưởng bởi kỹ thuật của máy chuyển đổi hơn tuy nhiên vẫn đòi
hỏi các xung điện với tốc độ ít hơn tương đương 1ns dao động để duy trì chương trình.
Trong ứng dụng có nhiều hơn một nguồn xung clock master, nó được đề nghị rằng một
xung Clock được khởi tạo bởi WM8731/L để giảm rủi ro tới mức tối thiểu.
II.3.5 CLOCKOUT
Lõi xung clock là bộ nhớ đệm bên trong và được làm sẵn bên ngoài đến một hệ
thống audio trên chân ngõ ra CLKOUT. CLKOUT cung cấp mô hình của Core Clock,
nhưng bộ nhớ đệm phù hợp cho đường dẫn bên ngoài nhập vào.
Không có đảo pha giữa XTI/MCLK, Core Clock và CLOLKOUT nhưng ở đó chắc
chắn sẽ bị trễ. Việc delay sẽ phụ thuộc vào việc đưa vào CLOCKOUT.
CLKOUT cũng có thể bị chia cắt bởi 2 điều khiển phần mềm bên dưới. Đề cập
trong bản 12. Chú ý rằng nếu CLKOUT không yêu cầu khi đó bộ nhớ đệm CLKOUT
trên WM8731/L có thể giảm năng lượng an toàn để bảo tồn điện năng. Nếu cấu trúc hệ
thống có chọn lựa giữa sử dụng FCLKOUT=FMCLK hoặc FCLKOUT=FMCLK/2 trong giao
diện, sau cùng đề nghị để bảo toàn năng lượng. Khi hai lựa chọn CLKOUT thay đổi
trên tác động cạnh lên của MCLK, phải đề cập đến thông tin timing.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 52


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Register
Bit Nhãn Mặc Định Phần Mô Tả
address
0001000 7 CLKODIV2 0 CLKOUT Divider Select
Sampling 1= CLOCKOUT Is Core Clock
Control Divied By 2
0 = CLOCKOUT is Core Clock
Bảng 14 Lập Trình Của CLKOUT

II.3.6 Giao Diện Phần Mềm

Giao diện phần mềm có thể được sử dụng hoặc 3-wire (tương thích SPI) hoặc là
2- wire giao diện MPU. Lựa chọn định dạng giao diện được thực hiện bằng cách thiết
lập trạng thái của pin MODE. Trong chế độ 3-wire, SDIN được sử dụng cho dữ liệu
của chương trình, SCLK được dùng cho clock trong dữ liệu chương trình và CSB được
dùng khóa rập ngoài dữ liệu chương trình. Trong chế độ 2-wire SDIN được sử dụng
cho dữ liệu serial và SCLK được sử dụng cho clock serial, trong chế độ 2-wire, trạng
thái của pin CSB cho phép người dùng lựa chọn 1 trong 2 địa chỉ.

II.3.6.1 Sự Lựa Chọn Chế Độ Điều Khiển Serial.

Giao diện serial co thể được lựa chọn để họat động trong chế độ 2 hoặc 3-wire.
Điều này được thực hiện bằng cách thiết lập trạng thái của pin MODE.

MODE Định Dạng Giao Diện

0 2 wire

1 3 wire

Bảng 15 Giao Diện Lựa Chọn MODE

II.3..6.2 Chế Độ Điều Khiển Serial 3-Wire (Tương Thích SPI)

WM8731/L có thể điều khiển dùng giao diện serial 3 wire. SDIN được sử dụng
cho dữ liệu chương trình, SCLK được sử dụng để clock dữ liệu chương trình và CSB
được dùng khóa rập ngoài dữ liệu chương trình.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 53


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 2.3.2 Giao Diện Serial 3-Wire

Chú ý:

¾ B[15:9] là các bit điều khiển địa chỉ.

¾ B[8:0] là bit điều khiển dữ liệu.

¾ CSB là tích cực cạnh không có cấp độ tích cực. Dữ liệu được hiểu trên cạnh
lên của CSB.

II.3.6.3 Chế Độ Điều Khiển Serial 2-Wire.

WM8731/L hỗ trợ một giao diện serial MPU. Thiết bị hoạt động chỉ như một thiết
bị Slave. WM8731/L có một trong hai địa chỉ slave mà được lựa chọn bằng cách thiết
lập trạng thái của pin 15, (CSB).

Hình 2.3.4 Giao Diện Serial 2 - wire

¾ B[15:9] là các bit điều khiển địa chỉ.

¾ B[8:0] là bit điều khiển dữ liệu.

Trạng Thái CSB Địa Chỉ

0 0011010

1 0011011

Bảng 16 Lựa Chọn Địa Chỉ Giao Diện MPU 2 – Wire

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 54


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Để điều khiển WM8731/L trên bus 2-wire thiết bị điều khiển master cần phải
chuyển đổi dữ liệu bằng cách thiết lập điều kiện bắt đầu, định nghĩa bởi chuyển tiếp
cao hoặc thấp trên SDIN trong khi SCLK còn lại cao. Một địa chỉ và một dữ liệu
chuyển đổi sẽ theo sau. Tất cả ngoại vi trên bus 2-wire đáp ứng điều kiện bắt đầu và
dịch vào trong 8 bit kế tiếp (7 bit dữ liệu + bit R/W). Chuyển bit MSB trước tiên. 7 bit
địa chỉ bao gồm 6 bit địa chỉ cơ bản + 1 bit đơn có thể lập trình để lựa chọn 1 trong 2
thiết bị sẵn sàng cho thiết bị này. Nếu địa chỉ chính xác được nhận và bit R/W là “0”,
biểu thị là ghi, sau đó WM8731/L sẽ đáp ứng bằng cách kéo SDIN xuống thấp trên
xung clock kế tiếp (ACK). WM8731/L chỉ ghi vào thiết bị và sẽ chỉ đáp ứng lại khi bit
R/W biểu thị ghi. Nếu địa chỉ không được chấp nhận thiết bị sẽ trả về điều kiện vô ích
và chờ một điều kiện bắt đầu mới và một địa chỉ vững chắc.

Mỗi lần WM8731/L thừa nhận một địa chỉ đúng, bộ điều khiển sẽ gởi 8 bit dữ
liệu(bit B15-B8). WM8731/L sau đó sẽ thừa nhận dữ liệu đã gởi bằng cách kéo SDIN
xuống thấp cho một xung clock. Bộ điều khiển sau đó sẽ gửi 8 bit dữ liệu còn lại (bit
B7-B0) và WM8731/L sẽ xác nhận một lần nữa bằng cách kéo SDIN xuống mức thấp.

Điều kiện dừng được định nghĩa khi có một chuyển tiếp từ thấp đến cao trên
SDIN trong khi SCLK ở mức cao. Nếu điều kiện bắt đầu hoặc kết thúc được phát hiện
ra bên ngoài của bất kì điểm nào trong dữ liệu chuyển đổi sau đó thiết bị sẽ nhảy đến
điều kiện không hiệu quả.

Sau khi nhận được một địa chỉ hoàn tất và dữ liệu liên tiếp WM8731/L sẽ quay
lại trạng thái không hiệu quả và chờ một điều kiện bắt đầu khác, địa chỉ thiết bị và và
bit R/W theo sau bởi 16 bit thanh ghi địa chỉ và dữ liệu.

II.3.7 Chế Độ Năng Lượng

WM8731/L chứa chế độ bảo toàn năng lượng trong khối mạch khác nhau có thể
hạ năng lượng xuống một cách an toàn trong mức bảo tồn năng lượng.

Register address Bit Nhãn Mặc định Phần Mô Tả

0000110 0 LINEINPD 1 Line Input Power Down


Power Down 1= Enable Power Down
Control 0 = Disable Power Down

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 55


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

1 MICPD 1 Microphone Input An Bias


Power Down
1= Enable Power Down
0= Disable Power Down
2 ADCPD 1 Adc Power Down
1= Enable Power Down
0= Disable Power Down
3 DACPD 1 DAC Power Down
1= Enable Power Down
0 = Disable Power Down
4 OUTPD 1 Line Output Power Down
1= Enable Power Down
0= Disable Power Down
5 OSCPD 0 Oscillator Power Down
1= Enable Power Down
0= Disable Power Down
6 CLKOUTPD 0 CLKOUT Power Down
1= Enable Power Down
0= Disable Power Down
7 POWEROFF 1 Power Off Device
1= Device Power Off
0 = Device Power On
Bảng 17 Điều Khiển Phần Mềm Chế Độ Bảo Tồn Năng Lượng

Điều khiển năng lượng hạ xuống có thể được sử dụng hoặc để Cố định chức
năng disable khi không có yêu cầu trong ứng dụng nào đó. Hoặc để linh động chức
năng tăng và hạ năng lượng phụ thuộc vào chế độ họat động ví dụ trong lúc nghe lại
hay ghi âm.

LINEINPD : đồng thời hạ năng lượng cả 2 line ngõ vào. Điều này có thể thực
hiện linh động không cần bất cứ kết quả có thể nghe thấy nào hoặc trên ADC hoặc trên
Line ngõ ra trong chế độ Bypass. Điều này được dùng khi thiết bị nhập vào chế độ
PlayBack, Pause hoặc Stop hoặc ngõ vào Microphone được chọn.

MICPD: đồng thời hạ năng lượng cả hai ngõ vào Microphone và Microphone
Bias. Nếu điều này thực hiện linh động, có thể nghe tiếng pop do ADC mang lại. điều
này chỉ có thể nghe thấy nếu ngõ ra Microphone được chọn đến ADC vào thời điểm.
Nếu trạng thái của MICPD bị thay đổi sau đó việc điều khiển DSP hoặc vi xử lý sẽ
chuyển đến chọn Line ngõ ra như ngõ ra đến ADC (INSEL) trước khi thay đổi
MICPD. Điều này dùng khi thiết bị nhập vào chế độ PlayBack, Pause, hoặc Stop hoặc
ngõ vào Microphone không được chọn.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 56


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

ADCPD: hạ năng lượng ADC và bộ lọc ADC. Nếu điều này thực hiện linh hoạt
sau đó tiếng pop có thể nghe được sẽ cho kết quả bất kỳ tín hiệu ở hiện tại qua ADC.
Để khắc phục điều này bất cứ khi nào ADC bị hạ năng lượng, hoặc mute ngõ vào
Microphone hoặc MUTELINEIN, sau đó thay đổi ADCPD. Điều này dùng khi thiết bị
nhập vào chế độ PlayBack, Pause, Stop không kể là Microphone hay Line ngõ vào
được chọn.

DACPD: hạ năng lượng DAC và bộ lọc DAC. Nếu điều này thực hiện linh hoạt
sau đó tiếng pop có thể nghe được sẽ cho kết quả trừ khi những nguyên tắc sau đây
xảy ra. Mục đích để ngăn ngừa tiếng pop, DAC sẽ bị soft-mute trước (DACMU), ngỏ
ra sau đó từ line và ngõ ra headphone (DACSEL), sau đó DAC sẽ bị hạ năng lượng.
Điều này dùng khi thiết bị nhập vào chế độ ghi âm, Pause, Stop hoặc chế độ Bypass.

OUTPD: hạ năng lượng Line ngõ ra và ngõ ra headphone. Nếu điều này thực
hiện linh hoạt sau đó tiếng pop có thể nghe được sẽ cho kết quả trừ khi DAC bị soft-
mute trước (DACMU). Điều này dùng khi thiết bị nhập vào chế độ ghi âm, Pause,
hoặc Stop.

OSCPD: tắt năng lượng trên board máy tạo dao động crystal. Ngõ vào MCLK
sẽ họat động không phụ thuộc máy tạo dao động bị hạ năng lượng.

CLKOUTPD: hạ năng lượng pin CLOCKOUT. Điều này bảo toàn năng lượng,
làm giảm âm thanh số và sự phát ra của RF nếu không được yêu cầu. CLKOUT được
giữ ở mức thấp khi năng lược hạ. Thiết bị có thể được đặt trong chế độ standby
(STANDBY) bằng cách hạ năng lượng tất cả mạch audio dưới dạng điều khiển phần
mềm. Nếu máy tạo dao động Crystal and/or pin CLOCKOUT sử dụng sẽ nhận được từ
hệ thống clock master, điều này sẽ có thể không bao giờ bị tắt năng lượng trong chế độ
standby.
CLOCKOUTPD
POWER OFF

LINEINPD
DACPD

ADCPD
OUTPD
OSCPD

MICPD

Mô Tả

0 0 0 1 1 1 1 1 Standby, nhưng với máy tạo dao động crystal

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 57


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

OS và CLOCKOUT sẵn sàng

Standby, nhưng với máy tạo dao động crystal


0 1 0 1 1 1 1 1
OS sẵn sàng và CLOCKOUT không sẵn sàng

Standby, nhưng với máy tạo dao động crystal


0 1 1 1 1 1 1 1
OS và CLOCKOUT không sẵn sàng

Bảng 18 Chế Độ Stanby

Trong chế độ stanby giao diện điều khiển, một phần nhỏ của kỹ thuật số và
vùng mạch tương tự tích cực còn lại. Tín hiệu tương tự tích cực bao gồm tín hiệu
tương tự VMID chuyển đến vì thế mà Line ngõ vào tương tự, line ngõ ra và ngõ ra
headphone vẫn hướng đến VMID. Việc làm giảm này bất cứ kết quả có thể nghe được
nguyên nhân bởi glitches DC khi nhập vào hay rời bỏ chế độ standby. Thiết bị có thể
bị tắt năng lượng bằng cách ghi đến bit POWEROFF của thanh ghi POWER DOWN.
Trong chế độ tắt năng lượng Giao diện và một phần nhỏ của kỹ thật số tích cực còn lại.
Tín hiệu tương tự VMID bị disable. Như trong chế độ Standby máy tạo dao động
crystal and/or pin CLKOUT có thể không phụ thuộc vào điều khiển.
CLOCKOUTPD
POWER OFF

LINEINPD
DACPD

ADCPD
OUTPD
OSCPD

MICPD

Mô Tả

Power off, nhưng với máy tạo dao động


1 0 0 x x x x x
crystal OS và CLKOUT sẵn sàng

Power off, nhưng với máy tạo dao động


1 1 0 x x x x x crystal OS sẵn sàng và CLKOUT không
sẵn sàng

Power off, nhưng với máy tạo dao động


1 1 1 x x x x x
crystal OS và CLKOUT không sẵn sàng

Bảng 19 Chế Độ Poweroff

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 58


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

II.3.8 Bản Đồ Thanh Ghi

Có 11 thanh ghi, mỗi thanh ghi 16 bit (7 bit địa chỉ, 9 bit dữ liệu). Điều này có
thể điều khiển dùng giao diện hoặc 2 wire hoặc 3 wire.

B B B B B B B
REGISTER B8 B7 B6 B5 B4 B3 B2 B1 B1
15 14 13 12 11 10 9

LRIN LIN
R0(00h) 0 0 0 0 0 0 0 0 0 LINVOL
BOTH MUTE

RLIN RIN
R1(02h) 0 0 0 0 0 0 1 RINVOL
BOTH MUTE

LRHP
R2(04h) 0 0 0 0 0 1 0 LZCEN LHPVOL
BOTH

RLHP RZCE
R3(06h) 0 0 0 0 0 1 1 RHPVOL
N
BOTH

MIC
SIDE DACS BYPA INS MUT
R4(08h) 0 0 0 0 1 0 0 0 SIDEATT BOOS
TONE EL SS EL EMIC
T

DAC ADC
R5(0Ah) 0 0 0 0 1 0 1 0 0 0 0 HPQR DEEMPH
MU HPD

PWR CLKOU OSCP OUTP DACP AD MICP LINEI


R6(0Ch) 0 0 0 0 1 1 0 0
TPD D D D CPD D NPD
OFF

BCLK LRS
R7(0Eh) 0 0 0 1 1 1 0 MS LRP IWL FORMAT
WAP
INV

CLKO CLKI USB/


R8(10h) 0 0 0 1 0 0 0 0 SR BOSR NOM
DIV2 DIV2 AL

ACTI
R9(12h) 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0
VE

R15(1Eh) 0 0 0 1 1 1 1 RESET

ĐỊA CHỈ DỮ LIỆU

Bảng 20Bản Đồ Thanh Ghi Chương Trình

II.3.9 Nét Đặc Trưng Của Đầu Lọc Kỹ Thuật Số

Bộ lọc số ADC và DAC làm việc khác nhau. Bộ lọc kỹ thuật số có 4 kiểu, được
gọi là kiểu 0,1,2 và kiểu 3.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 59


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Tham Số Kiểm Tra Điều Kiện Min TYP Max Đơn Vị


Bộ Lọc Số ADC Loại 1 (chế độ USB, tần số họat động 250fs)

+/-0.05dB 0 0.416fs
Passband
-6dB 0.5fs

Passband Ripple +/-0.05 dB

Stopband 0.584fs

Làm Giảm Stopband f>0.584fs -60 dB

Bộ Lọc Số ADC Loại 1 (chế độ USB, 272fs hoặc hoạt động chế độ Normal)

+/- 0.05 dB 0 0.4535fs


Passband
-6dB 0.5fs

Passband Ripple +/- 0.05 dB

Stopband 0.5465fs

Làm Giảm Stopband f > 0.5465fs -60 dB

-3dB 3.7
High Pass Filter Corner
Frequency
-0.5dB 10.4 Hz

-0.1dB 21.6

Bộ Lọc Số DAC Loại 0(chế độ USB, 250fs)

+/- 0.03 dB 0 0.416


Passband
-6dB 0.5fs

Passband Ripple +/-0.03 dB

Stopband 0.584fs

Làm Giảm Stopband f> 0.584fs -50 dB

Bộ Lọc Số DAC Loại 1 (chế độ USB, 272fs hoặc hoạt động chế độ Normal)

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 60


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

+/- 0.03 dB 0 0.4535


Passband
-6dB 0.5fs

Passband Ripple +/- 0.03 dB

Stopband 0.5465fs

Làm Giảm Stopband f > 0.5465 fs -50 dB

Bảng 21 Đặt Tính Của Bộ Lọc Số

II.3.10 Sự Hoạt Động Ở Chế Độ Master/Slave.

WM8731/L có thể được cấu hình như là chia ra 2 chế độ master hoặc slave. Khi
thiết bị ở chế độ Master WM8371/L kiểm soát sự sắp xếp theo thứ tự của dữ liệu và
xung clock trên giao diện kỹ thuật số. Khi thiết bị Slave ở chế độ WM8731/L trả lời từ
dữ liệu tới xung clock, nó sẽ nhận được giao diện kỹ thuật số. Chế độ này được lập ra
với bit MSB của thanh ghi điều khiển.

Register
Bit Nhãn Mặc định Phần Mô Tả
address

0000111 6 MS 0 Master Slave Mode Control

Digital Audio 1 = Enable Master Mode


interface format 0= Enable Slave Mode

Bảng 22 Lập Trình Chế Độ Master/Slave

Khi thiết bị ở chế độ Master WM8731/L điều khiển sự sắp xếp của dữ liệu
chuyển đổi (ADCDAT, DACDAT) và xung clock ngõ ra (BCLK, SDCLRC,
DACLRC) trên giao dịên kỹ thuật số. Nó sử dụng quy trình tạo ra xung clock hoạt
động từ mạch hoặc ngõ vào MCLK khi tham chiếu xung clock và trạng thái của dữ
liệu. ADCDAT luôn luôn là ngõ ra và DACDAT luôn luôn là ngõ vào. Chế độ master
hoặc slave không phụ thuộc vào WM8731/L

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 61


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hình 2.3.5 Chế Độ Master.

Khi thiết bị ở chế độ slave WM8731/L biểu diễn sự thay đổi dữ liệu
(ADCDAT, DACDAT) trên giao diện kỹ thụât số thông tin ra bên ngoài được áp dụng
cho xung clock (BCLK, SDCLRC, DACLRC).

Chú ý rằng WM8731/L dựa vào mối quan hệ điều khiển giữa giao diên audio
ACLK, DACLRC và master MCLK hoặc CLKOUT.

Hình 2.3.6 Chế Độ Slave.

II.4 Mô tả tổng quát về SD CARD

Lõi SD Bus với giao diện Avalon cho phép truy xuất dễ dàng của hệ thống
SOPC Builder đến thiết bị Secure Digital Card chuẩn ( SD Card). Lõi SD Bus dễ dàng

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 62


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

hợp nhất với bất kỳ hệ thống SOPC builder nào được tạo ra. Đễ xử lý Nios II, EL
Camino cung cấp driver mức thấp cố định với lõi SD Bus. Driver cung cấp truy xuất
phổ biến cho thiết bị nhớ SD. Vì thế không cần phải viết thêm bất kỳ code để đọc hoặc
ghi dữ liệu từ hoặc đến SD card.

II.4.1 Tính Năng

¾ Hỗ trợ SD card trong chế độ SD Bus (4 bit hay 1 bit).

¾ Hỗ trợ SD Card bộ nhớ năng suất cao (SDHC).

¾ Hỗ trợ chế độ tốc độ cao lên đến tốc độ xung clock là 50 MHz.

¾ Bao gồm driver mức thấp.

¾ File hệ thống có sẵn tuy chọn FAT12/FAT16/FAT32.

¾ Ứng dụng Window cho phép đọc/ghi truy xuất dữ liệu trên nền PC.

¾ Bộ tương thích đầu tiên cho board phát triển Altera và El Camino Nios II .

II.4.2 Ứng dụng

Lõi SD Bus ứng dụng cho các thiết bị lưu động, chuẩn và có thể trao đổi, lưu
trữ truyền thông phụ thuộc vào ứng dụng NIOS II. Khác với ứng dụng cung cấp cho
window nó dễ dàng chuyển đổi dữ liệu giữa ứng dụng Nios II và nền PC.

II.4.3 Mô Tả Port Của SD Card

Thẻ nhớ SD card gồm một số port chính sau :

¾ SD_CLK (ngõ ra) : tín hiệu xung clock đến thẻ nhớ SD card. Xung clock này
nhận từ xung hệ thống bởi tham số xung clock phân chia ra. Tần số xác định tốc
độ dữ liệu và thiết lập tự động bởi phần mềm driver. Gán vào pin 5 của SD
Card.

¾ SD_CMD (ngõ vào/ngõ ra) : tín hiệu 2 chiều câu lệnh/ trã lời. gán vào pin 2 của
SD Card.
¾ SD_DAT[3 : 0] (ngõ vào/ ngõ ra): tín hiệu dữ liệu 2 chiều. SD_DAT3 gán vào
pin 1. SD_DAT2 gán vào pin 9. SD_DAT1 gán vào pin 8. SD_DAT0 gán vào
pin 7.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 63


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

II.5 Định Dạng FAT

FAT (File Allocation Table) là hệ thống file được giới thiệu lần đầu tiên vào
năm 1981 cùng với sự ra đời của MS-DOS . Mục đích của FAT là cung cấp một bản
đồ giữa những Cluster - nó là đơn vị cơ bản của lưu trữ logic trên đĩa với mức độ hệ
điều hành , và vị trí vật lí của dữ liệu được xác định bởi Cylinder , Track và Sector
được dùng cho đối với phần cứng điều khiển ổ đĩa .

Hình 2.5.1 sơ đồ FAT

FAT bao gồm đầu vào mọi File được lưu trữ trên phân vùng ổ cứng và là địa chỉ bắt
đầu Cluster của File. Mỗi Cluster bao gồm nội dung của File và chỉ tới Cluster tiếp
theo chứa nội dung File hoặc thông báo kết thúc File: End-Of-File ( 0xFFFF ) để thông
báo Cluster đó là điểm cuối của File .

Ví dụ dưới đây có 03 File : File1.txt dùng 03 Cluster . File2.txt là file bị phân


mảnh cũng có 03 Cluster ( 5,6 và 8 ) , và File3.txt vừa trong một Cluster (7) .

Hình 2.5.2 phân mãnh trong Fat

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 64


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Độ dài của mỗi phần tử của FAT được tính bằng số bit. Độ dài này biểu thị khả
năng chỉ thị số đếm của phần tử FAT. Với các đĩa mềm số lượng các cluster là nhỏ nên
chỉ cần 12 bit đủ để chỉ thị số đếm này, vì vậy các đĩa mềm dùng FAT 12 bit. Với đĩa
cứng có dung lượng từ 1GB trở lại để chỉ thị số Cluster lớn nhất thì phải dùng tới con
số có độ dài 16 bit, vì thế hình thành FAT 16 bit. Với các đĩa cứng có dung lượng từ
vài GB trở lên, số lượng các sector trên đĩa rất lớn, đồng thời để hạn chế các sector bỏ
trống trong mỗi cluster thì người ta qui định số sector trong mỗi cluster ít đi, do đó số
lượng Cluster của cả đĩa sẽ rất lớn. Khi ấy phải dùng tới con số có độ dài 32 bit để chỉ
thị số đếm này. Đây là lí do hình thành FAT 32 bit.

Hiện thân của FAT đầu tiên là FAT12 mà hỗ trợ kích thước Partition lớn nhất là
8MB. Nó bị thay thế bằng FAT16 vào năm 1984 và tăng kích thước của Partition lên
2GB. FAT16 đã trải qua nhiều năm nó cho phép điều khiển tên file dài hơn phiên bản
đầu tiên là 8.3 kí tự. Một điểm giới hạn của FAT16 là số Cluster lớn nhất trong một
Partition là cố định nên ổ cứng có dung lượng càng lớn thì càng có nhiều khoảng trống
không được dùng đến. Một điều thuận lợi của FAT16 là nó hỗ trợ nhiều hệ điều hành
khác nhau Windows 95/98/Me, OS/2, Linux và một vài Version của Unix.

Phiên bản Windows 95 OEM Service Release 2 (OSR2) hỗ trợ cả FAT16 và


FAT32 .

FAT32 chia sẻ những giới hạn của FAT16 nhưng lại có một điều những hệ
điều hành tương thích với FAT16 lại không làm việc với FAT32. Đối với máy tính
chạy 02 hệ điều hành ví dụ Windows NT và một hệ điều hành dùng FAT32 thì
Windows NT lại không đọc được trực tiếp FAT32, nhưng vấn đề sẽ được giải quyết
thông qua mạng .

Cùng với sự xuất hiện của WinXP vào tháng 10 năm 2001 bao gồm cả NTFS .

NTFS hoàn toàn khác với hệ thống File của FAT, nó có thiết lập bảo vệ cao, tiết
kiệm được khoảng trống trên đĩa đồng thời địa chỉ hoá được nhiều Cluster.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 65


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Sau đây chúng ta sẽ tìm hiểu rõ hơn về các phiên bản của FAT12, FAT16 và
FAT32.

¾ FAT12 (File Allocation Table, 12-bit): được dùng cho ổ đĩa mềm, ổ đĩa có dung
lượng từ 32MB trở xuống. FAT12 sử dụng 12 bit để đếm nên chỉ có khả năng
quản lý các ổ đĩa có dung lượng thấp hơn 32Mb với số lượng cluster thấp.

¾ FAT16 (File Allocation Table, 16-bit): hổ trợ những hệ điều hành DOS,
Windows 9x/Me. Với FAT này chỉ hổ trợ những tên tập tin có độ dài là 11 ký
tự (8 ký tự dành cho tên tập tin và 3 ký tự dành cho phần mở rộng.) và hổ trợ
những HDD hoặc những phân vùng (partition) có dung lượng tối đa là 2 GB, hệ
thống tập tin FAT (FAT16 – để phân biệt với FAT32) được công bố vào năm
1981 đưa ra một cách thức mới về việc tổ chức và quản lý tập tin trên đĩa cứng,
đĩa mềm. Tuy nhiên, khi dung lượng đĩa cứng ngày càng tăng nhanh, FAT16 đã
bộc lộ nhiều hạn chế. Với không gian địa chỉ 16bit, FAT16 chỉ hỗ trợ đến
65.536 liên cung (clusters) trên một partition, gây ra sự lãng phí dung lượng
đáng kể (đến 50% dung lượng đối với những ổ đĩa cứng trên 2 GB).

¾ FAT32 (File Allocation Table, 32-bit) : được giới thiệu trong phiên bản
Windows 95 Service Pack 2 (OSR 2), được xem là phiên bản mở rộng của
FAT16. Do sử dụng không gian địa chỉ 32 bit nên FAT32 hỗ trợ nhiều cluster
trên một partition hơn, do vậy không gian đĩa cứng được tận dụng nhiều hơn.
Ngoài ra với khả năng hỗ trợ kích thước của phân vùng từ 2GB lên 2TB và
chiều dài tối đa của tên tập tin được mở rộng đến 255 ký tự đã làm cho FAT16
nhanh chóng bị lãng quên. Tuy nhiên, FAT 32 có 1 số nhượcc điểm sau:

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 66


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

™ FAT32 là tính bảo mật và khả năng chịu lỗi (Fault Tolerance) không cao:

™ FAT32 không hỗ trợ các tính năng bảo mật như phân quyền quản lý, mã
hoá..

™ FAT32 có khả năng phục hồi và chịu lỗi rất kém.

™ FAT32 vẫn còn tỏ ra hữu dụng trên các máy tính cấu hình quá yếu, chỉ
có thể chạy được Windows 98. Tuy nhiênFAT16 và FAT32 vẫn được
dùng để định dạng cho các loại thẻ nhớ, vì các thiết bị chấp nhận thẻ nhớ
như máy ảnh số, máy nghe nhạc vẫn chưa thấy loại nào tương thích với
NTFS cả. FAT16 luôn là lựa chọn hàng đầu khi bạn muốn copy dữ liệu
của mình từ một máy tính chạy Windows sang máy chạy hệ điều hành
khác như Mac chẳng hạn. Hầu hết các máy Mac hiện nay đều không thể
nhận dạng các thẻ nhớ USB được định dạng bằng FAT 32.

Bảng so sánh sau đây sẽ giúp chúng ta nhìn rõ hơn những ưu nhược điểm của
phiên bản FAT12, FAT16 và FAT32.

FAT 12 FAT 16 FAT 32

Nhà phát triễn Microsoft

Tên đầy đủ Phiên bản 12 bit Phiên bản 16 bit Phiên bản 32 bit

Cấu trúc

Cấu trúc thư mục Bảng

Định dạng tập tin Danh sách liên kết

Giới hạn

Kích thước tập tin


2MB 2GB 4GB
tối đa

Số lượng các tập 4096 65536 268,435,437

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 67


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

tin tối đa

Độ dài tên tập tin


8.3 hoặc 255 ký tự tùy hệ điều hành
tối đa

Kích thước phân


32MB 2GB đến 4GB 2TiB
vùng tối đa

Bảng 23. Bảng so sánh các định dạng FAT

II.6 Khái Niệm Về Tập Tin Wave

Tập tin wave là một dạng tập tin dùng để lưu trữ dữ liệu âm thanh số (dạng
sóng) và nó là một trong những định dạng phổ biến nhất của hệ điều hành Windows.
Tập tin wave thuộc chuẩn RIFF ( Resource Interchange File Format- dạng tập tin tài
nguyên có thể trao đổi) và đặc điểm của những tập tin thuộc chuẩn RIFF đó là nó sẽ
nhóm nội dung của tập tin thành các khối riêng biệt và mỗi một khối sẽ gồm một
header (dùng để qui định kiểu và kích thước của khối ) và các byte dữ liệu. Tập tin
wave có 2 dạng là dạng nén và dạng không nén (dạng chuẩn) vì thế trong đề tài này tôi
chỉ đề cập đến dạng chuẩn của tập tin wave tức là dạng không nén.

Cấu trúc file wave gồm 3 khối: khối mô tả dạng RIFF,khối thuộc tính “fmt “ và
khối dữ liệu “data” trong đó khối thuộc tính “fmt” và khối dữ liệu “data” là 2 khối con
của khối mô tả dạng RIFF.

Khối mô tả dạng RIFF: Khối này xác định dạng RIFF và có kích thước là 12
byte gồm các trường:

™ ChunkID: Kích thước: 4 byte. Chức năng: chứa chuỗi “RIFF” dưới dạng
mã ASCII

™ ChunkSize: Kích thước: 4 byte. Chức năng: cho biết tổng kích thước của
các trường sau nó.( ChunkSize=4 + ( 8 + Subchunk1Size ) + ( 8 +
Subchunk2Size)).

™ Format: Kích thước: 4 byte Chức năng: chứa chuỗi “WAVE”.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 68


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Khối thuộc tính “fmt ”: Khối này xác định các thuộc tính của dữ liệu âm thanh
và có kích thước là 24 byte gồm các trường:

™ Subchunk1ID: Kích thước: 4 byte. Chức năng: chứa chuỗi “fmt ”.

™ Subchunk1Size: Kích thước: 4 byte. Chức năng:cho biết tổng kích thước
của các trường thuộc khối thuộc tính đứng phía sau trường này. (đối với
tập tin wave không nén thì Subchunk1Size bằng 16).

™ AudioFormat: Kích thước: 2 byte. Chức năng : cho ta biết dạng nén của
dữ liệu trong tập tin wave.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 69


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Chương 3 Hệ Thống Tổng Quát


III.1 Thiết Kế Mô Hình SD Music Player.

Nhiều thiết bị nghe nhạc sử dụng thiết bị lưu trữ bên ngoài , chẳng hạn như là
SD card… để chứa các file nhạc. Nhiều thiết bị nghe nhạc có chứa bộ lọc số DAC có
thể tạo ra âm thanh chất lượng cao. Board DE2 cung cấp phần cứng và phần mềm cần
thiết chuyên thực hiện truy xuất audio trên SD card.

Trong phần demo chúng ta sẽ thực hiện một thiết bị nghe nhạc SD card trên
board DE2, file nhạc sẽ đựợc lấy từ SD card. Chúng ta sẽ dùng bộ xử lý NIOS II để
đọc dữ liệu từ SD card và dùng audio codec WM8731 để chạy file nhạc.

Thiết bị Audio Codec WM8731 được cấu hình ở chế độ slave, mạch bên ngòai cung
cấp serial ADC/DAC, bit clock và kênh clock trái phải (LRCK) đến thiết bị Audio
codec.

Hình 3.1 sơ đồ khối của thiết kế SD music player.

Để thực thi mạch thiết kế, chúng ta cần cung cấp một bộ điều khiển Audio DAC
để hoàn tất khởi tạo xung clock và điều khiển dòng dữ liệu. Bộ điều khiển Audio DAC
được tích hợp vào trong cấu trúc Avalon bus vì thế bộ xử lý Nios II có thể điều khiển
ứng dụng. Khi bộ xử lý Nios II hoạt động nó sẽ kiểm tra nếu bộ nhớ FIFO của bộ điều
khiển Audio DAC bị đầy. Nếu bộ nhớ FIFO còn trống, bộ xử lý sẽ đọc 512-byte sector
và gởi dữ liệu đến FIFO của bộ điều khiển Audio DAC qua đường Avalon bus. Bộ

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 70


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

điều khiển Audio DAC dùng tốc độ lấy mẫu là 48kHz để gởi dữ liệu và tín hiệu clock
đến thiết bị Audio Codec.

Để nghe file nhạc trong thiết kế này, file phải sử dụng tốc độ lấy mẫu là 48kHz
và định dạng WAV độ phân giải 16 bit.

III.2 Chương Trình Demo.

III.2.1 Các Định Nghĩa Thiết Lập

III.2.1.1 Cho Ngõ Vào Và Ngõ Ra

#ifndef __SD_Card_H__

#define __SD_Card_H__

#define SD_CMD_IN IOWR(SD_CMD_BASE, 1, 0)

#define SD_CMD_OUT IOWR(SD_CMD_BASE, 1, 1)

#define SD_DAT_IN IOWR(SD_DAT_BASE, 1, 0)

#define SD_DAT_OUT IOWR(SD_DAT_BASE, 1, 1

Các ngõ vào và ngõ ra của SD card được đặt tên là SD_CMD_IN,
SD_CMD_OUT, SD_DAT_IN, SD_DAT_OUT. Các ngõ này được thiết lập là ngõ
vào hay ngõ ra bằng cách ghi vào địa chỉ cơ bản của nó giá trị là bit 1 hoặc bit 0. Nếu
giá trị ghi vào là 0 thì có nghĩa là nhập vào, còn giá trị ngõ vào là 1 có nghĩa là xuất ra.

III.2.1.2 Định Nghĩa Ngõ Ra SD Card Cao/ Thấp

#define SD_CMD_LOW IOWR(SD_CMD_BASE, 0, 0)

#define SD_CMD_HIGH IOWR(SD_CMD_BASE, 0, 1)

#define SD_DAT_LOW IOWR(SD_DAT_BASE, 0, 0)

#define SD_DAT_HIGH IOWR(SD_DAT_BASE, 0, 1)

#define SD_CLK_LOW IOWR(SD_CLK_BASE, 0, 0)

#define SD_CLK_HIGH IOWR(SD_CLK_BASE, 0, 1)

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 71


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Các ngõ ra của SD card được định nghĩa cao hay thấp phụ thuộc vào giá trị ghi
vào địa chỉ của nó là 1 hay 0. Nếu giá trị ghi vào địa chỉ là 0 tức là ở mức thấp và nếu
giá trị là 1 thì ở mức cao.

III.2.1.3 Đọc Ngõ Vào SD Card

#define SD_TEST_CMD IORD(SD_CMD_BASE, 0)

#define SD_TEST_DAT IORD(SD_DAT_BASE, 0)

Để đọc ngõ vào SD card ta đọc trong địa chỉ thanh ghi của chúng nếu đọc trong
thanh ghi SD_CMD_BASE là đọc ra câu lệnh còn đọc trong địa chỉ SD_DAT_BASE
thì đọc dữ liệu.

III.2.1.4 Các Định Nghĩa Khác.

#define BYTE unsigned char

#define UINT16 unsigned int

#define UINT32 unsigned long

Định nghĩa BYTE là theo kiểu chuổi. UINIT16 định nghĩa theo kiểu int.
UINT32 định nghĩa theo kiểu long.

void Ncr(void)

void Ncc(void);

BYTE response_R(BYTE);

BYTE send_cmd(BYTE *);

BYTE SD_read_lba(BYTE *,UINT32,UINT32);

BYTE SD_card_init(void);

BYTE read_status;

BYTE response_buffer[20];

BYTE RCA[2];

BYTE cmd_buffer[5];

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 72


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

const BYTE cmd0[5] = {0x40,0x00,0x00,0x00,0x00};

const BYTE cmd55[5] = {0x77,0x00,0x00,0x00,0x00};

const BYTE cmd2[5] = {0x42,0x00,0x00,0x00,0x00};

const BYTE cmd3[5] = {0x43,0x00,0x00,0x00,0x00};

const BYTE cmd7[5] = {0x47,0x00,0x00,0x00,0x00};

const BYTE cmd9[5] = {0x49,0x00,0x00,0x00,0x00};

const BYTE cmd16[5] = {0x50,0x00,0x00,0x02,0x00};

const BYTE cmd17[5] = {0x51,0x00,0x00,0x00,0x00};

const BYTE acmd6[5] = {0x46,0x00,0x00,0x00,0x02};

const BYTE acmd41[5] = {0x69,0x0f,0xf0,0x00,0x00};

const BYTE acmd51[5] = {0x73,0x00,0x00,0x00,0x00};

Định nghĩa các hàm con trong chương trình như hàm Ncr(void), Ncc(void),
response_R(BYTE), send_cmd(BYTE *), SD_read_lba(BYTE *, UINT32, UINT32 ),
SD_card_init(void), read_status, response_buffer[20], RCA[2], cmd_buffer[5]. Các
giá trị địa chỉ cố định của các lệnh như cmd0[5] = {0x40,0x00,0x00,0x00,0x00} ….

III.2.2 Các Chương Trình Con Và Các Hàm Con.

III.2.2.1 chương trình void Ncr(void)


void Ncr(void)
{
SD_CMD_IN;
SD_CLK_LOW;
SD_CLK_HIGH;
SD_CLK_LOW;
SD_CLK_HIGH;
}

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 73


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Hàm đưa câu lệnh vào thanh ghi địa chỉ của SD_CMD_BASE sau đó đưa xung
clock vào. Trong này có sự thay đổi giá trị xung clock.

III.2.2.2 chương trình void Ncc (void)

void Ncc(void)

int i;

for(i=0;i<8;i++)

SD_CLK_LOW;

SD_CLK_HIGH;

Hàm Void Ncc(void) chủ yếu dung để đưa xung clock vào.

III.2.2.3 Hàm Khởi Tạo SD Card

BYTE SD_card_init(void)

BYTE x,y;

SD_CMD_OUT;

SD_DAT_IN;

SD_CLK_HIGH;

SD_CMD_HIGH;

SD_DAT_LOW;

read_status=0;

for(x=0;x<40;x++)

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 74


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Ncr();

for(x=0;x<5;x++)

cmd_buffer[x]=cmd0[x];

y = send_cmd(cmd_buffer);

do

for(x=0;x<40;x++);

Ncc();

for(x=0;x<5;x++)

cmd_buffer[x]=cmd55[x];

y = send_cmd(cmd_buffer);

Ncr();

if(response_R(1)>1) //response too long or crc error

return 1;

Ncc();

for(x=0;x<5;x++)

cmd_buffer[x]=acmd41[x];

y = send_cmd(cmd_buffer);

Ncr();

} while(response_R(3)==1);

Ncc();

for(x=0;x<5;x++)

cmd_buffer[x]=cmd2[x];

y = send_cmd(cmd_buffer);

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 75


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Ncr();

if(response_R(2)>1)

return 1;

Ncc();

for(x=0;x<5;x++)

cmd_buffer[x]=cmd3[x];

y = send_cmd(cmd_buffer);

Ncr();

if(response_R(6)>1)

return 1;

RCA[0]=response_buffer[1];

RCA[1]=response_buffer[2];

Ncc();

for(x=0;x<5;x++)

cmd_buffer[x]=cmd9[x];

cmd_buffer[1] = RCA[0];

cmd_buffer[2] = RCA[1];

y = send_cmd(cmd_buffer);

Ncr();

if(response_R(2)>1)

return 1;

Ncc();

for(x=0;x<5;x++)

cmd_buffer[x]=cmd7[x];

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 76


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

cmd_buffer[1] = RCA[0];

cmd_buffer[2] = RCA[1];

y = send_cmd(cmd_buffer);

Ncr();

if(response_R(1)>1)

return 1;

Ncc();

for(x=0;x<5;x++)

cmd_buffer[x]=cmd16[x];

y = send_cmd(cmd_buffer);

Ncr();

if(response_R(1)>1)

return 1;

read_status =1; //sd card ready

return 0;

Khởi tạo một hệ thống SD card gồm các dữ liệu vào, xuất câu lệnh, xung
clock…

III.2.2.4 Hàm Đọc SD Card

BYTE SD_read_lba(BYTE *buff,UINT32 lba,UINT32 seccnt)

BYTE c=0;

UINT32 i,j;

lba+=101;

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 77


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

for(j=0;j<seccnt;j++)

Ncc();

cmd_buffer[0] = cmd17[0];

cmd_buffer[1] = (lba>>15)&0xff;

cmd_buffer[2] = (lba>>7)&0xff;

cmd_buffer[3] = (lba<<1)&0xff;

cmd_buffer[4] = 0;

lba++;

send_cmd(cmd_buffer);

Ncr();

while(1)

SD_CLK_LOW;

SD_CLK_HIGH;

if(!(SD_TEST_DAT))

break;

for(i=0;i<512;i++)

BYTE j;

for(j=0;j<8;j++)

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 78


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

SD_CLK_LOW;

SD_CLK_HIGH;

c <<= 1;

if(SD_TEST_DAT)

c |= 0x01;

*buff=c;

buff++;

for(i=0; i<16; i++)

SD_CLK_LOW;

SD_CLK_HIGH;

read_status = 1; //SD data next in

return 0;

III.2.2.5 Hàm Response

BYTE response_R(BYTE s)

BYTE a=0,b=0,c=0,r=0,crc=0;

BYTE i,j=6,k;

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 79


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

while(1)

SD_CLK_LOW;

SD_CLK_HIGH;

if(!(SD_TEST_CMD))

break;

if(crc++ >100)

return 2;

crc =0;

if(s == 2)

j = 17;

for(k=0; k<j; k++)

c = 0;

if(k > 0) //for crc culcar

b = response_buffer[k-1];

for(i=0; i<8; i++)

SD_CLK_LOW;

if(a > 0)

c <<= 1;

else

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 80


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

i++;

a++;

SD_CLK_HIGH;

if(SD_TEST_CMD)

c |= 0x01;

if(k > 0)

crc <<= 1;

if((crc ^ b) & 0x80)

crc ^= 0x09;

b <<= 1;

crc &= 0x7f;

if(s==3)

if( k==1 &&(!(c&0x80)))

r=1;

response_buffer[k] = c;

if(s==1 || s==6)

if(c != ((crc<<1)+1))

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 81


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

r=2;

return r;

III.2.2.6 Hàm Gửi Đi Câu Lệnh.

BYTE send_cmd(BYTE *in)

int i,j;

BYTE b,crc=0;

SD_CMD_OUT;

for(i=0; i < 5; i++)

b = in[i];

for(j=0; j<8; j++)

SD_CLK_LOW;

if(b&0x80)

SD_CMD_HIGH;

else

SD_CMD_LOW;

crc <<= 1;

SD_CLK_HIGH;

if((crc ^ b) & 0x80)

crc ^= 0x09;

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 82


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

b<<=1;

crc &= 0x7f;

crc =((crc<<1)|0x01);

b = crc;

for(j=0; j<8; j++)

SD_CLK_LOW;

if(crc&0x80)

SD_CMD_HIGH;

else

SD_CMD_LOW;

SD_CLK_HIGH;

crc<<=1;

return b;

III.2.2.7 Chương Trình Khởi Tạo LCD

#include <unistd.h>

#include <string.h>

#include <io.h>

#include "system.h"

#include "LCD.h"

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 83


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

void LCD_Init()

lcd_write_cmd(LCD_16207_0_BASE,0x38);

usleep(2000);

lcd_write_cmd(LCD_16207_0_BASE,0x0C);

usleep(2000);

lcd_write_cmd(LCD_16207_0_BASE,0x01);

usleep(2000);

lcd_write_cmd(LCD_16207_0_BASE,0x06);

usleep(2000);

lcd_write_cmd(LCD_16207_0_BASE,0x80);

usleep(2000);

III.2.2.8 Chương Trình Hiển Thị Text Lên Trên LCD

void LCD_Show_Text(char* Text)

int i;

for(i=0;i<strlen(Text);i++)

lcd_write_data(LCD_16207_0_BASE,Text[i]);

usleep(2000);

void LCD_Line2()

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 84


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

lcd_write_cmd(LCD_16207_0_BASE,0xC0);

usleep(2000);

void LCD_Test()

char Text1[16] = "Altera DE2 Board";

char Text2[16] = "SD Music Player.";

// Initial LCD

LCD_Init();

// Show Text to LCD

LCD_Show_Text(Text1);

// Change Line2

LCD_Line2();

// Show Text to LCD

LCD_Show_Text(Text2);

Hàm xuất chuỗi ký tự lên màn hình LCD. Khởi tạo một LCD sau đó xuất ra
chuổi Text1 và Text2 lên màn hình LCD của board DE2. Khai báo hai biến là Text1 và
Text2. Ghi từng ký tự của chuỗi lên địa chỉ thanh ghi của LCD.

III.2.3 Chương Trình Chính

#include "basic_io.h"

#include "LCD.h"

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 85


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

#include "SD_Card.h"

int main(void)

UINT16 i=0,Tmp1=0,Tmp2=0;

UINT32 j=720;

BYTE Buffer[512]={0};

while(SD_card_init())

usleep(500000);

LCD_Test();

while(1)

SD_read_lba(Buffer,j,1);

while(i<512)

if(!IORD(AUDIO_0_BASE,0))

Tmp1=(Buffer[i+1]<<8)|Buffer[i];

IOWR(AUDIO_0_BASE,0,Tmp1);

i+=2;

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 86


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

if(j%64==0)

Tmp2=Tmp1*Tmp1;

IOWR(LED_RED_BASE,0,Tmp2);

IOWR(LED_GREEN_BASE,0,Tmp1);

IOWR(SEG7_DISPLAY_BASE,0,j);

j++;

i=0;

return 0;

Khởi tạo SD card. Xuất ký tự lên LCD. Đọc SD card từ bộ nhớ đệm buffer. Khi
I nhỏ hơn 512. Nếu không đọc được dữ liệu từ thanh ghi AUDIO_0_BASE. Đặt biến
Tmp1 là dịch trái 8 bit buffer or với buffer [i]. Ghi Tmp1 vào thanh ghi
AUDIO_0_BASE. Tăng i lên 2. Nếu j chia hết cho 64 Tmp2 = Tmp1* Tmp1. Ghi
Tmp2 vào thanh ghi LED_RED_BASE. Ghi Tmp1 vào thanh ghi
LED_GREEN_BASE. Ghi j vào thanh ghi SEG7_DISPLAY_BASE.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 87


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Kết luận :

Lập trình hệ thống nhúng ngày nay rất phổ biến và ngày càng phát triễn mạnh
mẽ. Đề tài tập trung nghiên cứu xây dụng hệ thống SD Music Player. Hệ thống có thể
áp dụng cho các thiết bị nghe nhạc phổ biến hiện nay như máy nghe nhạc MP3, hay
tích hợp vào trong điện thoại di động.

Các ứng dụng của SOPC Builder rất rộng. SOPC Builder có thể được sử dụng
để tạo ra nhiều hệ thống khác nhau cho những mục đích khác nhau. Tuy nhiên trong
giới hạn của đề tài chúng em chỉ có thể trình bày về một phần trong các ứng dụng của
SOPC.

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 88


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Tài liệu tham khảo


Các sách tham khảo

1) tut_sopc_introduction_verilogDE2.pdf CD DE2 của altera.

2) tut_nios2_introduction.pdf CD DE2 của altera.

3) WM8731.pdf CD DE2 của altera.

4) Introduction to the Altera SOPC Builder Using Verilog Design CD DE2 của
Altera.
5) Proof that C can match or beat assembly.

6) The New C Standard, Derek M. Jones, 2005


7) C Programming for Embedded Systems, Kirk Zurell

8) Tự học lập trình Visual C++ MFC qua các ví dụ, Nguyễn Đình Tê, NXB Lao
động – Xã Hội.

Các website tham khảo

1) www.altera.com

2) www.dientuvienthong.net

3) http://www.dtvt.org

4) http://www.design-reuse.com

5) http://www.reuters.com

6) http://www.bytecraft.com

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 89


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Danh sách hình


Phụ Lục
Hình 1.1.1. Hiển thị chính Quartus II. .....................................................3
Hình 1.1.2. ví dụ file menu ......................................................................4
Hình 1.1.3. Thao tác thực hiện bằng Wizard Tasks ................................5
Hình 1.1.4. Tạo một project mới. .............................................................6
Hình 1.1.5. Phần mềm Quartus II sẽ tạo ra một thư mục cho project ......6
Hình 1.1.6. Wizard có thể bao gồm file thiết kế lý thuyết. ......................7
Hình 1.1.7. Chọn một họ thiết bị và một thiết bị cụ thể ...........................8
Hình 1.1.8. Công cụ EDA khác ...............................................................9
Hình 1.1.9. Tóm tắt của việc cài đặt project. .........................................10
Hình 1.1.10. Quartus II sau khi project được tạo ...................................11
Hình 1.2.1: Sơ đồ hệ thống SOPC tích hợp trên PLD của Altera ..........12
Hình 1.2.2: Các thành phần trong nhãn system contents .......................13
Hình 1.2.3. tạo mới một SOPC Builder. ................................................15
Hình 1.2.4. add cpu_0 vào để tạo kết nối. ..............................................16
Hình 1.2.5. thiết kế module cpu_0. ........................................................17
Hình 1.2.6. add các module cần thiết .....................................................17
Hình 1.2.7. liên kết cpu_0 với onchip_memory2_0 ...............................18
Hình 1.2.8. biên dịch thành công ...........................................................19
Hình 1.2.9. Gán pin ................................................................................19
Hình 1.2.10. Quartus II biên dịch thành công ........................................20
Hình 1.2.11. lập trình Nios II IDE .........................................................21
Hình 1.3.1 Tổ Chức Bộ Nhớ Và I/O ......................................................27
Hình 1.3.2 các định dạng của các tập lệnh NIOS II ...............................29
Hình 1.4.1 Board DE2 ...........................................................................30
Hình 1.4.2 Biểu Đồ Khối Của Board DE2 .............................................31
Hình 1.4.2. Board DE2 của Altera .........................................................32
Hình 1.4.3 Ứng Dụng TV Box ...............................................................34
Hình 1.4.5 Karaoke Machine và SD Music Player ................................35
Hình 2.1.1 Sơ Đồ Khối Chức Năng WM8731/L ...................................38
Hình 2.1.2 Lược Đồ Line Ngõ Vào. ......................................................39
Hình 2.2.1 Định Tuyến Tín Hiệu Trong Chế Độ Bypass .......................48
Hình 2.2.2 Lược Đồ Chế Độ Sidetone ...................................................49
Hình 2.3.1 Mạch Ứng Dụng Máy Tạo Dao Động Crystal. ....................52
Hình 2.5.1 sơ đồ FAT ............................................................................64
Hình 2.5.2 phân mãnh trong Fat ............................................................64
Hình 3.1 sơ đồ khối của thiết kế SD music player. ................................70

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 90


ĐỒ ÁN TỐT NGHIỆP GVHD : Th.S HUỲNH HỮU THUẬN

Danh sách bảng

Bảng 1 Các Thanh Ghi Đa Năng ...........................................................25


Bảng 2 Thanh Ghi Điều Khiển .............................................................. 26
Bảng 3 Điều Khiển Phần Mềm Line Ngõ Vào .......................................40
Bảng 4 Điều Khiển Phần Mềm Ngõ Vào Microphone. .........................41
Bảng 5 Điều Khiển Phần Mềm ADC .....................................................42
Bảng 6 Điều Khiển Phần Mềm ADC .....................................................43
Bảng 7 Điều Khiển Phần Mềm DAC..................................................... 44
Bảng 8 Điều Khiển Phần Mềm Line Output. .........................................45
Bảng 9 Điều Khiển Phần Mềm Ngõ Ra Headphone ..............................47
Bảng 10 Điều Khiển Phần Mềm Trong Chế Độ Bypass ........................48
Bảng 11 Chế Độ Sidetone ......................................................................49
Bảng 12 Điều khiển phần mềm của reset. ..............................................50
Bảng 13 Điều Khiển Phần Mềm Của Lõi Clock. ...................................51
Bảng 14 Lập Trình Của CLKOUT ........................................................53
Bảng 15 Giao Diện Lựa Chọn MODE ...................................................53
Bảng 16 Lựa Chọn Địa Chỉ Giao Diện MPU 2 – Wire ..........................54
Bảng 17 Điều Khiển Phần Mềm Chế Độ Bảo Tồn Năng Lượng ...........56
Bảng 18 Chế Độ Stanby .........................................................................58
Bảng 19 Chế Độ Poweroff .....................................................................58
Bảng 20Bản Đồ Thanh Ghi Chương Trình ............................................59
Bảng 21 Đặt Tính Của Bộ Lọc Số .........................................................61
Bảng 22 Lập Trình Chế Độ Master/Slave ..............................................61
Bảng 23. Bảng so sánh các định dạng FAT ...........................................68

SVTH: NGUYỄN MINH HIẾU – HUỲNH CÔNG PHÚ Trang 91

You might also like