TỔNG QUAN BÀI TOÁN THIẾT KẾ MÁY PHÁT NHẠC SỐ
Giới thiệu chương
Âm thanh kỹ thuật số là một thuật ngữ phổ biến hiện nay, nhưng nhiều người vẫn chưa hiểu rõ về nó và sự khác biệt giữa âm thanh kỹ thuật số và âm thanh analog Chương này sẽ cung cấp kiến thức tổng quan về âm thanh số, giải thích âm thanh số là gì và các định dạng âm thanh hiện có Tiếp theo, chúng ta sẽ phân tích một số phương pháp thiết kế âm thanh và xác định phương pháp thiết kế phù hợp nhất Cuối cùng, chương sẽ tóm tắt lại bài toán thiết kế đã được trình bày.
1.1.1 Tổng quan về về âm thanh số
1.1.1.1 Âm thanh số là gì? Âm thanh kỹ thuật số là công nghệ có thể được sử dụng để ghi chép, lưu trữ, tạo ra, thao tác, và tái tạo âm thanh bằng cách sử dụng các tín hiệu âm thanh đã được mã hóa dưới dạng số (0 và 1) Sau những tiến bộ đáng kể trong công nghệ âm thanh kỹ thuật số những năm 1970, nó dần dần thay thế công nghệ âm thanh analog trong nhiều lĩnh vực sản xuất âm thanh, ghi âm (hệ thống băng đĩa được thay thế bằng hệ thống ghi âm kỹ thuật số), kỹ thuật âm thanh và viễn thông trong năm 1990 và 2000.
Hình 1.1 biểu diễn tín hiệu âm thanh dạng Analog và digital
Microphone chuyển đổi âm thanh từ ca sĩ hoặc nhạc cụ thành tín hiệu điện tương tự Sau đó, một ADC sử dụng điều chế mã xung để chuyển đổi các tín hiệu này thành tín hiệu số Tín hiệu kỹ thuật số có thể được ghi lại, chỉnh sửa và thay đổi bằng các công cụ âm thanh kỹ thuật số Khi kỹ sư âm thanh muốn nghe đoạn ghi âm qua tai nghe hoặc loa, một DAC thực hiện quá trình ngược lại, chuyển đổi tín hiệu kỹ thuật số trở lại tín hiệu tương tự, sau đó các mạch tương tự khuếch đại và phát ra loa.
Hệ thống âm thanh kỹ thuật số cho phép nén, lưu trữ, xử lý và truyền tải âm thanh một cách dễ dàng và thuận tiện Tín hiệu âm thanh này có thể được ghi lại, chỉnh sửa và thay đổi Với công nghệ âm thanh kỹ thuật số, người dùng có thể tạo ra nhiều bản sao mà không lo ảnh hưởng đến chất lượng âm thanh.
Một tín hiệu âm thanh kỹ thuật số có thể được mã hóa để sửa chữa lỗi phát sinh trong quá trình lưu trữ hoặc truyền tải Kỹ thuật này được gọi là mã hóa tín hiệu âm thanh.
Kênh mã hóa là yếu tố quan trọng trong việc phát sóng và ghi lại các hệ thống kỹ thuật số, giúp duy trì độ chính xác Việc sử dụng thời gian rời rạc và tín hiệu nhị phân cho phép bộ giải mã tái tạo lại tín hiệu tương tự khi phát lại Một ví dụ điển hình là mã kênh 8-14 bit, được áp dụng trong âm thanh của Compact Disc (CD).
1.1.1.2 Ưu nhược điểm của âm thanh số
So với tín hiệu Analog thì tín hiệu số có nhiều ưu điểm sau:
Việc ghi âm bài hát giúp chúng ta dễ dàng lưu giữ và xử lý thông tin Sau khi ghi âm, chúng ta có thể chỉnh sửa và khắc phục mọi lỗi để sản phẩm âm nhạc trở nên hoàn hảo hơn, phù hợp hơn với thị hiếu của người nghe.
- Việc lưu trữ âm thanh đa dạng có thẻ trên đĩa CD, máy nghe nhạc, ổ đĩa, USB hoặc một thiết bị lưu trữ kỹ thuật số nào đó.
Nén âm thanh giúp giảm kích thước tập tin, cho phép người dùng dễ dàng xem và nghe trực tiếp trên các thiết bị như điện thoại và máy tính.
- Việc sao chép thông tin dễ dàng không bị giới hạn số lần thao tác và không ảnh hưởng chất lượng âm thanh.
Việc lưu trữ âm thanh và âm nhạc trở nên dễ dàng và tiết kiệm chi phí hơn nhờ vào internet, giúp phân phối nội dung này một cách hiệu quả Trước đây, âm nhạc thường được phân phối thông qua việc bán các bản sao vật lý như băng đĩa.
- Âm thanh kỹ thuật số được giữ nguyên gốc.
- Âm thanh digital không bị biến dạng.
Bên cạnh những ưu điểm trên thì âm thanh số có một số nhược điểm sau:
- Âm thanh, tín hiệu dễ bị tổn thất do ở dạng số Tín hiệu âm thanh sẽ bị ảnh hưởng dù chỉ mất vài byte thôi.
- Hệ thống xử lý âm thanh digital hiện đại và phức tạp do đó tốn kém kinh phí đầu tư hơn.
1.1.2 Âm thanh số theo định dạng Mp3 và wav
Âm thanh số được chia thành ba nhóm định dạng chính: không nén (uncompressed), nén nhưng bảo toàn dữ liệu (lossless), và nén không bảo toàn dữ liệu (lossy) Nhóm không nén bao gồm các định dạng như WAV và AIFF, trong khi nhóm nén bảo toàn dữ liệu có các định dạng như FLAC, APE và ALAC Nhóm nén không bảo toàn dữ liệu bao gồm các định dạng phổ biến như Mp3, ACC, và WMA Trong số các định dạng này, bài viết sẽ tập trung vào hai định dạng âm thanh phổ biến nhất là Mp3 và WAV.
1.1.2.1 Âm thanh số theo định dạng Mp3 Định dạng mp3 là định dạng âm thanh phổ biến nhất để lưu trữ âm nhạc trên nền tảng máy vi tính và truyền tải âm nhạc qua Internet Tệp MP3 được tạo bởi nhóm chuyên gia hình ảnh chuyển động (MPEG) và được viết tắt từ MPEG-1 Audio Layer 3 hoặc MPEG-2 Audio Layer 3
MP3 là định dạng tệp âm thanh sử dụng thuật toán nén để giảm kích thước tệp, cho phép một đĩa nhạc CD 600MB có thể được nén xuống còn 50MB hoặc ít hơn Các bit rate phổ biến của tệp MP3 thường dao động từ 128 Kbps đến 320 Kbps, thấp hơn nhiều so với 1411 Kbps của CD hay định dạng PCM Mặc dù kích thước tệp nhỏ, chất lượng âm thanh của MP3 vẫn được duy trì ở mức cao hơn so với các phương pháp nén trước đó Điều này đã giúp việc truy cập và phân phối nhạc trên Internet trở nên dễ dàng và phổ biến hơn.
MP3 đã tạo ra một tên mới cho các thiết bị điện tử tiêu dùng, được gọi là máy nghe nhạc MP3 Định dạng MP3 được áp dụng rộng rãi trên các đĩa CD và DVD, với DVD là một loại đĩa quang kỹ thuật số có khả năng lưu trữ dữ liệu vượt trội hơn so với CD nhờ vào cách nén dữ liệu và cấu trúc lớp quang học Điều này cho phép DVD chứa nhiều dữ liệu hơn, làm cho nó trở thành lựa chọn phổ biến trong các hệ thống âm thanh nổi trên xe ô tô và các thiết bị âm thanh mới như mạng máy chủ âm nhạc.
MP3 là một chuẩn nén âm thanh số, được tối ưu hóa để loại bỏ dữ liệu dư thừa mà không làm mất thông tin quan trọng Tập tin âm thanh MP3 được xây dựng dựa trên bộ mã hóa thụ cảm, dựa vào mô hình cảm nhận âm học của tai người Quá trình mã hóa MP3 chuyển đổi tín hiệu âm thanh từ định dạng PCM sang định dạng âm thanh nén MP3, sử dụng phương pháp mã hóa Huffman để đảm bảo chất lượng âm thanh.
1.1.2.2 Âm thanh số theo định dạng wav
WAV là định dạng file âm thanh không nén, sử dụng công nghệ PCM để lưu trữ âm thanh ở dạng thô như bài hát hoặc diễn văn Sau khi thu âm, WAV thường được xử lý qua các thiết bị phòng thu hoặc phần mềm chuyên dụng, giúp chuyển đổi sang các định dạng file có kích thước nhỏ hơn.
Sơ đồ khối của hệ thống
Mục này trình bày tổng quan về cấu trúc vận hành của mạch và chức năng của từng khối.
Từ phần mô tả bài toán thiết kế, ta có thể xây dựng được một sơ đồ khối của hệ thống gồm những khối sau:
Hình 1.4 Sơ đồ khối của hệ thống
Sau khi nhận lệnh từ khối điều khiển, khối xử lý sẽ truy suất dữ liệu từ khối lưu trữ, nơi chứa file nhạc định dạng MP3 Dữ liệu nguồn này sẽ được xử lý và một phần nội dung, cụ thể là tiêu đề của file nhạc, sẽ được gửi lên khối hiển thị.
Khối hiển thị Khối giải mã
Khối Earphone Khối điều khiển
Dữ liệu được truyền tải từ khối lưu trữ đến khối giải mã thông qua lập trình phần mềm và sự điều khiển của khối xử lý Tại đây, dữ liệu sẽ được giải nén và chuyển đổi thành tín hiệu cần thiết thông qua khối Earphone.
1.2.1 Chức năng của từng khối
- Khối nguồn: cấp nguồn cho toàn bộ hệ thống hoạt động
- Khối lưu trữ: Lưu trữ file có định dạng *.MP3
- Khối điều khiển: Điều khiển khối xử lý hoạt động theo mục đích sử dụng của người dùng
Khối xử lý thiết lập kết nối với khối lưu trữ để chuyển thông tin file nhạc sang khối giải mã, đồng thời cấu hình cài đặt cho khối giải mã Sau đó, khối xử lý tiếp nhận và xử lý tín hiệu đã nhận, cuối cùng đưa tín hiệu ra khối hiển thị.
- Khối hiển thị: Hiển thị thông tin mà VĐK đưa ra (tên bài hát)
Khối giải mã là bộ phận quan trọng trong việc chuyển đổi file nhạc có định dạng mp3 và wave (trừ file wave không cần giải mã mà chỉ cần chuyển đổi DAC) thành tín hiệu tương tự Chức năng chính của khối này là giải mã tín hiệu số để tái tạo âm thanh chất lượng cao.
- Khối Earphone: chuyển tín hiệu điện thàn tín hiệu âm thanh.
Hình 1.5 Sơ đồ giải mã MP3 dựa trên FPGA
Phân tích một số giải pháp thiết kế
1.3.1 Xây dựng hệ nhúng sử dụng vi điều khiển cứng
Hình 1.6 Một số vi điều khiển cứng
Các vi điều khiển cứng như AT89, PIC, MSP430 hay ARM SoC (STM32) được thiết kế trên công nghệ ASIC, với kiến trúc phần cứng cố định không thể thay đổi Mặc dù được sử dụng rộng rãi trong các hệ thống nhúng, chúng gặp phải nhiều hạn chế, đặc biệt là khó khăn trong việc nâng cấp Khi cần thay thế, thiết bị host phải được xây dựng và lập trình lại, dẫn đến chi phí cao hơn so với việc thay thế toàn bộ thiết bị Hơn nữa, việc giải quyết sự cố trở nên phức tạp và hệ thống nhúng khó tái lập trình tại chỗ Đối với các ứng dụng yêu cầu bộ nhớ lớn và tốc độ tính toán cao, vi điều khiển cứng vẫn chưa đáp ứng được nhu cầu.
Hiện nay, vi điều khiển cứng được sử dụng rộng rãi trong hầu hết các thiết bị Nhiều nhà sản xuất ưu tiên lựa chọn vi điều khiển cứng cho sản phẩm của họ vì tính ổn định và hiệu suất cao mà chúng mang lại.
- Tính phổ biến: được sản xuất hàng loạt, đảm bảo được nhu cầu sử dụng
- Ngày càng được trang bị nhiều chức năng đáp ứng nhu cầu của nhà sản xuất
Tuy nhiên việc sử dụng VĐK cứng lại bị hạn chế:
- Bộ nhớ bị hạn chế
- Do số lượng chân có hạn nên việc thực hiện điều khiển phụ thuộc vào số chân mà chip có
- Mỗi loại VĐK có đặc tính khác nhau nên không thể sử dụng thay thế cho nhau.
1.3.2 Xây dựng hệ nhúng sử dụng vi điều khiển mềm
Vi điều khiển mềm đã được nhiều hãng sản xuất FPGA phát triển và ứng dụng trong công nghệ FPGA Một số vi điều khiển mềm phổ biến bao gồm TSK3000A, MicroBlaze, Spartan, TSK51x và TSK52x, được sản xuất bởi các nhà sản xuất chip nổi tiếng như Xilinx, Altium và Altera Quartus.
FPGA nói ngắn gọn là “lập trình phần cứng” hay “lập trình chip” Nó cũng là
FPGA mang lại tính linh động cao cho người dùng, cho phép phát triển các giải pháp tối ưu mà không bị ràng buộc bởi phần cứng của nhà sản xuất.
- Có khả năng tùy biến với bộ nhớ
- Có khả năng lập trình để thực hiện được chức năng của bất cứ vi điều khiển cứng nào khác
- Phát triển ngày càng mạnh mẽ, được nhiều tập đoàn lớn trên thế giới sử dụng để thiết kế điện tử - vi điện tử
- Vi điều khiển mềm hỗ trợ nhiều ngôn ngữ lập trình, dễ dàng được ứng dụng để thực hiện các chức năng từ đơn giản đến phức tạp nhất
Công nghệ FPGA vượt trội hơn so với ASIC và CPLD nhờ khả năng lập trình lại cho nhiều ứng dụng khác nhau FPGA sử dụng các khối logic nhỏ và dựa vào RAM, trong khi CPLD sử dụng các khối logic lớn và dựa vào EEPROM FPGA sử dụng bảng Lookup (LUTs) để thực hiện các hàm logic, trong khi CPLD sử dụng mạch cổng sea-of-gates Hầu hết FPGA được trang bị các mạch logic mức cao như bộ cộng, bộ nhân và bộ nhớ nhúng, điều mà CPLD không có Đặc biệt, FPGA có thể được tích hợp vào SoC, cho phép người dùng linh hoạt lập trình thêm các module phụ như module giao tiếp hoặc mã hóa bảo mật dữ liệu theo nhu cầu.
Công nghệ mạch tích hợp bán dẫn bao gồm các thành phần quan trọng như bộ nhớ, bộ vi xử lý, ASIC, PLD, FPGA và SoC, được thể hiện qua sơ đồ mối liên quan giữa chúng như mô tả trong hình 1.7.
Hình 1.7 Quan hệ giữ các công nghệ IC[1]
Lựa chọn phương án thiết kế
Việc lựa chọn thiết kế hệ thống nhúng trên FPGA là một giải pháp tiết kiệm chi phí và linh hoạt, phù hợp với yêu cầu của hệ thống Các nhà sản xuất chip FPGA như Xilinx và Altera đã cung cấp nhiều sản phẩm tại Việt Nam, giúp dễ dàng lựa chọn bảng phát triển cho thiết kế Đặc biệt, KIT phát triển NB2DSK01 rất phổ biến trong đào tạo và nghiên cứu thiết kế các hệ thống nhúng ứng dụng cho thiết bị xử lý tín hiệu audio và video.
Từ những đánh giá trên, em lựa chọn sử dụng công nghệ FPGA để giải quyết bài toán thiết kế máy phát nhạc định dạng MP3.
Kết luận chương
Định dạng âm thanh wav và mp3 là hai loại file khác nhau trên máy tính, trong đó WAV là file âm thanh không nén, còn MP3 là định dạng âm thanh nén mất dữ liệu, được mã hóa theo chuẩn MPEG để giảm dung lượng mà vẫn giữ được đặc trưng của file gốc FPGA cho phép thiết kế và lập trình hầu hết các chức năng của mạng số, đồng thời đáp ứng yêu cầu về bộ nhớ lớn và tốc độ xử lý cao, điều mà vi điều khiển cứng không thể làm Do đó, FPGA rất phù hợp cho các dự án SoPC và có thể ứng dụng trong thiết kế máy phát nhạc MP3, như sẽ được mô tả trong các chương tiếp theo.
THIẾT KẾ HỆ THỐNG NHÚNG SỬ DỤNG KIT PHÁT TRIỂN
Giới thiệu chương
Mảng cổng lập trình trường (FPGA) đang phát triển nhanh chóng trong thiết kế kỹ thuật số và thu hút sự quan tâm lớn trong chế tạo vi mạch Kit thí nghiệm Nanoboard NB2DSK0 là công cụ phát triển FPGA, vi xử lý và hệ nhúng Altium Desktop, cho phép cấu hình và tận dụng sức mạnh của các chip khả trình giá rẻ, dung lượng cao Kit này hỗ trợ thiết kế FPGA và hoàn toàn đồng bộ với Altium Designer, giúp phát triển và triển khai hệ thống một cách nhanh chóng Chương này sẽ giới thiệu công nghệ FPGA cùng Kit NB2DSK01 và phần mềm Altium.
Tổng quan về FPGA và VHDL
FPGA (Field-Programmable Gate Array) là thiết bị khả trình tiên tiến nhất trong ngành công nghệ chế tạo IC, cho phép người dùng tùy chỉnh thiết kế Công nghệ FPGA không phải là sự mở rộng của các chip khả trình như PAL hay PLA, mà có cơ chế tái cấu trúc độc đáo, với cấu hình được lưu trong bộ nhớ động (thường là SRAM) Quá trình tái cấu trúc tương tự như cách phần mềm máy tính hoạt động, cho phép lập trình lại FPGA dễ dàng như lập trình phần mềm FPGA board hay FPGA KIT là bo mạch có gắn chip FPGA cùng các thành phần như cổng giao tiếp, màn hình, và thiết bị ngoại vi, giúp người dùng nạp cấu hình và thử nghiệm các ứng dụng.
Công nghệ FPGA hiện nay đang được phát triển mạnh mẽ bởi nhiều công ty bán dẫn, trong đó Xilinx dẫn đầu với các sản phẩm như Virtex 3, 4, 5, 6 và Spartan, trong khi Altera cung cấp các dòng Stratix, Cyclone, Arria Ngoài ra, còn có các sản phẩm từ Lattice Semiconductor Company, Actel, Achronix, BlueSilicon Technology Mặc dù được cung cấp bởi nhiều hãng khác nhau, FPGA vẫn có cấu trúc tổng thể tương đồng.
- Hệ thống liên kết mạch
- Các phần tử tích hợp sẵn
Hình 2.8 Cấu trúc tổng thể của một FPGA
FPGA là một loại mạch tích hợp chứa từ 64 đến hơn 10,000 ô logic giống nhau, hoạt động như các thành phần chuẩn Mỗi ô logic có thể thực hiện một hoặc nhiều chức năng độc lập và được kết nối qua một ma trận đường dẫn và chuyển mạch khả trình Người thiết kế sử dụng các đặc trưng logic đơn của từng ô và chọn các chuyển mạch trong ma trận kết nối để xây dựng mạch Cấu trúc của các ô logic và kiểu kết nối tạo thành khối cơ bản trong mạch logic, cho phép tạo ra các thiết kế phức tạp bằng cách kết hợp các khối này.
Mô hình tổng quát của FPGA bao gồm một dãy các khối logic kết nối với nhau qua các nguồn kết nối có chiều dài khác nhau Bên trong các kết nối này là các chuyển mạch lập trình, cho phép kết nối các khối logic cấu hình (CLB) cần thiết Các khối CLB cung cấp các phần tử chức năng dựa trên logic, trong khi các khối vào ra (I/O block) tạo giao diện giữa các chân kết nối và đường tín hiệu bên trong Tài nguyên khối kết nối khả trình cung cấp các bộ phận truyền dẫn tới các đầu vào và ra của các CLB cũng như các IOB trong mạch.
Vậy cấu trúc FPGA gồm 3 phần tử chính là:
- Các khối logic cấu hình (logic block)
- Các khối vào/ra (IOB)
Các FPGA khác nhau có các khối logic và phần tử tích hợp khác nhau, phục vụ cho nhiều ứng dụng như SoC và DSP Ví dụ, dòng Virtex 4 và 5 của Xilinx tích hợp nhân xử lý PowerPC, trong khi Atmel FPSLIC có nhân ARV Đối với các ứng dụng xử lý tín hiệu số, FPGA được trang bị các DSP slices, cho phép thực hiện các phép toán như A*B+C với tốc độ cao Dòng Virtex của Xilinx chứa từ vài chục đến hàng trăm DSP slices, với các giá trị A, B, C có độ dài 18-bit.
Các khối logic cấu hình (logic block):
Hình 2.9 Khối Logic Bloc của FPGA
Cấu trúc và nội dung của khối logic phụ thuộc vào kiến trúc của nó, có thể được thiết kế theo nhiều cách khác nhau như cổng AND với 2 ngõ vào, bộ dồn kênh (Multiplexer) hoặc bảng tìm kiếm (Look-up Table) Bên cạnh đó, khối logic còn có thể tích hợp các flip-flop để thực hiện các thao tác một cách tuần tự.
Cấu trúc tổng thể của mảng LUT không chỉ bao gồm 4 đầu vào chính mà còn hỗ trợ thêm 2 đầu vào bổ sung từ các khối logic trước và sau, nâng tổng số đầu vào lên 6 chân Thiết kế này nhằm mục đích tăng tốc độ cho các bộ số học logic.
Các khối vào/ra (IOB)
Hình 2.10 Khối vào/ra của XC4000X
FPGA đã hỗ trợ rất nhiều cho các chuẩn ngoại vi Tương thích với mức điện áp TTL, CMOS, LVTTL…tuỳ theo từng họ FPGA
Hình 2.11 Các kết nối trong FPGA
Mạng liên kết trong FPGA bao gồm các đường kết nối theo hai phương ngang và đứng, được phân chia thành các nhóm khác nhau tùy thuộc vào loại FPGA Chẳng hạn, trong dòng XC4000 của Xilinx, có ba loại kết nối: ngắn, dài và rất dài Các đường kết nối này được kết nối thông qua các khối chuyển mạch lập trình được, trong đó mỗi khối chứa nhiều nút chuyển lập trình, cho phép tạo ra các dạng liên kết phức tạp khác nhau.
- Dựa trên nguyên tắc chập 2 điểm nằm ở 2 lưới dẫn khác nhau, (Antifuse EEPROM/EPROM).
SW CLB SW CLB SW
Kết nối đa năng Kết nối dài Kết nối trực tiếp
- Kết nối trực tiếp: liên kết các CLB hoặc IOB kề nhau.
- Kết nối dài: bỏ qua các SW.
- Kết nối đa năng gồm các đoạn nằm ngang và các đoạn nằm dọc, nối các SW và IOB.
FPGA với khả năng tái cấu trúc đơn giản và tài nguyên logic phong phú có thể giải quyết hiệu quả nhiều bài toán xử lý tín hiệu số lớn, vượt trội hơn so với các công nghệ trước đây về tốc độ và hiệu suất.
- Các ứng dụng chung về xử lý số như lọc tín hiệu, tìm kiếm, phân tích, giải mã, điều chế tín hiệu, trộn tín hiệu…
Các ứng dụng trong lĩnh vực mã hóa và giải mã giọng nói, nhận dạng giọng nói, cũng như tổng hợp giọng nói đóng vai trò quan trọng trong việc xử lý tín hiệu âm thanh Quá trình này bao gồm các kỹ thuật như lọc nhiễu, trộn âm thanh, mã hóa và giải mã tín hiệu, nén dữ liệu âm thanh, cùng với việc tổng hợp âm thanh để tạo ra trải nghiệm nghe tốt nhất.
- Ứng dụng trong xử lý ảnh số, nén và giải nén, các thao tác biến đổi, soạn thảo, nhận dạng ảnh số…
Ứng dụng của công nghệ trong các hệ thống thông tin rất đa dạng, bao gồm các hệ thống Voice IP và Voice mail Nó cũng được sử dụng trong modem, điện thoại di động, cũng như trong việc mã hóa và giải mã truyền thông trong mạng LAN và WIFI Ngoài ra, công nghệ này còn có vai trò quan trọng trong lĩnh vực truyền hình và radio.
- Ứng dụng trong điều khiển các thiết bị điện tử: ổ cứng, máy in, máy công nghiệp , dẫn đường, định vị, robots.
FPGA được ứng dụng rộng rãi trong nhiều lĩnh vực như xử lý tín hiệu số DSP, hệ thống hàng không và vũ trụ, quốc phòng, thiết kế mẫu ASIC, hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học và mô hình phần cứng máy tính.
FPGA với tính linh động cao trong thiết kế có khả năng giải quyết những bài toán phức tạp mà trước đây chỉ có thể thực hiện bằng phần mềm máy tính Bên cạnh đó, nhờ vào mật độ cổng logic lớn, FPGA được ứng dụng hiệu quả cho các bài toán yêu cầu khối lượng tính toán lớn và trong các hệ thống làm việc theo thời gian thực.
FPGA được ưa chuộng trong các hệ thống SDR (Software Defined Radio) nhờ vào khả năng tái cấu hình linh hoạt, cho phép thay đổi nhanh chóng các chức năng của thiết bị.
2.2.2.1 Giới thiệu chung về VHDL
VHDL, viết tắt của VHSIC Hardware Description Language, là ngôn ngữ mô tả phần cứng được sử dụng để thiết kế các mạch số, từ những kết nối đơn giản giữa các cổng cho đến các hệ thống phức tạp VHSIC có nghĩa là Very High Speed Integrated Circuits.
Giới thiệu về KIT phát triển NB2DSK01 và phần mềm Altium Designer 17
2.3.1 KIT Phát triển NB2DSK01
Bo mạch NanoBoard NB2DSK01 Altium là một nền tảng phần cứng tích hợp nhiều chức năng cho thiết kế kỹ thuật số, cho phép thực hiện, tương tác và gỡ lỗi trên một bo mạch duy nhất Với chi phí thấp nhưng hiệu suất mạnh mẽ, nó trở thành công cụ lý tưởng cho lập trình và mô phỏng Nhờ những ưu điểm này, NanoBoard NB2DSK01 Altium được sử dụng phổ biến trong các phòng thí nghiệm, trung tâm phát triển sản phẩm số và là modul thí nghiệm cho sinh viên tại các trường đại học.
Một số điểm nhấn kiến trúc của Desktop NanoBoard NB2DSK01 bao gồm:
Bộ công cụ phát triển FPGA Altium Desktop Nanoboard NB2 cung cấp khả năng cấu hình phần cứng linh hoạt, đáp ứng nhu cầu và mục đích thiết kế của người dùng.
- Hỗ trợ các chức năng thiết kế FPGA và hoàn toàn đồng bộ với hệ thống thiết kế điên tử hợp nhất Altium Designer.
Hình 2.12 Hình ảnh NanoBoard NB2DSK01
- Tự động nhận dạng và cấu hình các bo mạch FPGA con và các bo mạch ngoại vi.
- Các cổng kết nối Plug –in cho phép kết nối các thiết bị với bo mạch một cách đơn giản và nhanh chóng.
- Trang bị chuẩn kết nối USB 2.0 với máy tính, cho phép tải nhanh hơn tiết kiệm thời gian gỡ lỗi.
- Built-in, loa chất lượng cao cho chất lượng âm thanh tốt.
- Trang bị màn hình màu cảm ứng TFT đem lại khả năng tương tác hiệu quả.
- Altium “NanoTalk” - giao diện máy tính song song, giao diện USB 2.0 PC
- Kết nối NanoTalk Master và Slave 10 chiều
Giải pháp của chúng tôi hỗ trợ đa dạng các FPGA và vi xử lý từ nhiều nhà sản xuất chip khác nhau, nhờ vào việc sử dụng các daughter board có thể tháo rời và lắp vào dễ dàng.
- Tự động nhận daughter board và các bo mạch ngoại vi, cấu hình plug-and-play.
- Đường truyền kết nối với máy tính tốc độ cao qua cổng USB 2.0 cho phép nạp và debug nhanh hơn.
Bộ điều khiển NanoTalk cho phép quản lý thời gian thực trong truyền thông riêng với Altium Designer, bo mạch và firmware NanoBoard Nó sử dụng bộ điều khiển Xilinx Spartan-3 (XC3S1500-4FG676C) với PROM cấu hình Flash và hỗ trợ chuẩn JTAG.
- Tích hợp màn hình cảm ứng màu TFT, tương tác trực tiếp với bộ điều khiểnNanoBoard và firmware.
Hình 2.13 Sơ đồ khối của KIT NB2DSK01[4]
- Đầu cắm đôi User Board hỗ trọ JTAG để tương tác và phát triển với các bo mạch khác.
- Đầu cắm Master-Slave để phát triển chuỗi NanoBoard, cho phép phát triển hệ thống đa FPGA.
- Đồng hồ xung nhịp có thể điều chỉnh, từ 6 đến 200 MHz, cho các FPGA.
- Đồng hồ thời gian thực SPI Real-Time Clock với pin 3V back-up.
Hệ âm thanh analog Stereo được trang bị bộ khuếch đại chất lượng cao và mixer tích hợp, mang đến trải nghiệm âm thanh sống động Với công suất 2W, thiết bị có jack cắm đầu vào 3,5 mm cho phép kiểm tra và điều chỉnh âm lượng DC Ngoài ra, hệ thống còn hỗ trợ đầu vào/ra và loa, giúp kết nối dễ dàng với loa Desktop Stereo và NB2DSK-SPK01.
- Bốn kênh ADC 8 bit và DAC 10 bit, tương thích I2C.
- Trang bị đầu đọc thẻ SD (Secure Digital), thẻ nhớ 512MB SD – hỗ trợ thêm các cổng vào ra, khả năng nạp vào nhiều file để sử dụng.
- Nguồn – 5V DC đôi có thể nối cho một chuỗi các Nanoboard Các điểm test trên board, 4 điểm đất.
- Bộ nhớ onboard cho bộ điều khiển NanoTalk – bao gồm hai SRAM 256K x 16chung bus, hai SDRAM 256M (16M x 16) chung bus, một bộ nhớ Flash 3.0V 256M (32M x 16) chung bus, hai SRAM 256K x 16 độc lập.
- Một số giao tiếp truyền thông chuẩn: nối tiếp RS-232, CAN, PS/2 mini-DIN.
- Các đèn LED và công tắc đa mục đích.
- Các nút ấn kiểu PDA, có thể định nghĩa sử dụng như các đầu vào chức năng trong thiết kế.
- Nút Home/ Reset – Home cho phép firmware điều khiển TFT panel; Reset sẽ khởi động lại chức năng Nanoboard.
- Hệ cảm biến công suất cho phép giám sát công suất tiêu thụ của hệ thống và của chip.
- Bộ nhớ nhận dạng bo mạch (Board ID) – Hệ 1-Wire® ID cho phép nhận dạng các bo mạch FPGA con và các bo mạch ngoại vi.
- Trang bị 1 thiết bị nhớ được sử dụng để lưu trữ bảng ID và thông tin liên quan
- Trang bị 20 chân kết nối I/O
Altium hiện nay là phần mềm vẽ mạch điện tử phổ biến và mạnh mẽ tại Việt Nam, không chỉ hỗ trợ hiệu quả trong việc thiết kế mạch mà còn giúp quản lý mạch và trích xuất file thống kê linh kiện một cách dễ dàng.
Hình 2.14 Giao diện phần mềm Altium Designer
Altium Designer là phần mềm thiết kế mạch tự động, cung cấp một môi trường thiết kế điện tử đồng nhất Phần mềm này tích hợp đầy đủ các chức năng thiết kế nguyên lý, thiết kế mạch in PCB, lập trình hệ thống nhúng và FPGA, giúp tối ưu hóa quy trình thiết kế cho các kỹ sư điện tử.
Các điểm đặc trưng của Altium Designer:
- Giao diện thiết kế, quản lý và chỉnh sửa thân thiện, dễ dàng biên dịch, quản lý file, quản lý phiên bản cho các tài liệu thiết kế.
Hệ thống cung cấp hỗ trợ mạnh mẽ cho thiết kế tự động và đi dây tự động dựa trên thuật toán tối ưu, đồng thời phân tích lắp ráp linh kiện Nó giúp tìm kiếm các giải pháp thiết kế hoặc chỉnh sửa mạch, linh kiện và netlist có sẵn theo các tham số mới.
- Mở, xem và in các file thiết kế mạch dễ dàng với đầy đủ các thông tin linh kiện, netlist, dữ liệu bản vẽ, kích thước, số lượng…
- Hệ thống các thư viện linh kiện phong phú, chi tiết và hoàn chỉnh bao gồm tất cả các linh kiện nhúng, số, tương tự…
Đặt và sửa đối tượng trên các lớp cơ khí là bước quan trọng trong thiết kế PCB, giúp xác định các luật thiết kế cần thiết Việc tùy chỉnh các lớp mạch in và chuyển đổi từ sơ đồ nguyên lý (schematic) sang PCB đảm bảo sự chính xác trong quy trình thiết kế Cuối cùng, việc đặt vị trí linh kiện trên PCB cần được thực hiện một cách cẩn thận để tối ưu hóa hiệu suất và tính khả thi của sản phẩm.
- Mô phỏng mạch PCB 3D, đem lại hình ảnh mạch điện trung thực trong không gian
3 chiều, hỗ trợ MCAD-ECAD, liên kết trực tiếp với mô hình STEP, kiểm tra khoảng cách cách điện, cấu hình cho cả 2D và 3D
- Hỗ trợ thiết kế PCB sang FPGA và ngược lại.
Altium Designer là một ứng dụng tích hợp toàn diện, cung cấp tất cả công nghệ và chức năng cần thiết cho việc phát triển sản phẩm điện tử, bao gồm thiết kế bo mạch, FPGA và phần mềm nhúng Với khả năng quản lý toàn bộ quy trình phát triển trong một môi trường duy nhất, Altium Designer giúp người kỹ sư dễ dàng thiết kế hệ thống nhúng dựa trên FPGA thông qua các loại board như NanoBoard NB2 và NanoBoard 3000 Điều này cho phép họ thực hiện thiết kế và thử nghiệm thực tế trên nền tảng FPGA, từ đó rút ngắn thời gian phát triển sản phẩm hiệu quả.
Quy trình thiết kế hệ nhúng sử dụng KIT phát triển NB2DSK01 và phần mềm Altium Designer
- Bước 3: Tạo file nguyên lý từ file Openbus, thêm các thành phần vào/ra trên KIT NB2SDK01
- Bước 4: Tạo các ràng buộc cho project
- Bước 5: Tạo project nhúng, thiết lập các đặc tính cho project, đưa project vào project FPGA
- Bước 6: Tạo file Software platform và file chương trình
- Bước 7: Nạp vào KIT NB2SDK01
Thiết kế hệ SoPC đơn giản thực hiện hiển thị chữ Hello trên màn hình TFF.
Hình 2.15 Các thao tác tạo một Poject FPGA mới
Hình 2.16 Thao tác tạo file OpenBus và không gian làm việc của OpenBus
Hình 2.17 Hoàn thành kết nối cho OpenBus
- Bước 3: tạo file mạch nguyên lý
Hình 2.18 Thao tác tạo file Schematic
Hình 2.19 Sơ đồ nguyên lý của dự án “Hello word”
- Bước 4: Tạo các ràng buộc cho FPGA project
Hình 2.20 Thao tác tạo file constraint và ràng buộc cho FPGA project
Hình 2.21 Thao tác tạo file nhúng Embeded
Click vào Compile => Synthetize => Build => Program FPGA
Hình 2.24 Màn hình sau khi nạp kit thành công
Ngoài ví dụ đã đề cập, bạn có thể tham khảo thêm về bài toán thiết kế mạch logic tổ hợp trong phụ lục A và thiết kế mạch logic tuần tự trong phụ lục B.
Kết luận chương
Bài viết đã cung cấp cái nhìn tổng quan về công nghệ FPGA và ngôn ngữ mô tả phần cứng VHDL một cách đầy đủ Các công cụ hỗ trợ phần cứng như KIT phát triển NB2DSK01 và phần mềm Altium Designer hiện đang được sử dụng phổ biến cho các dự án FPGA Để minh chứng cho điều này, một ví dụ nhỏ đã được thực hiện, tạo cơ sở cho việc lựa chọn giải pháp triển khai hệ thống nhúng trên FPGA, mà chương sau sẽ trình bày chi tiết.
ỨNG DỤNG THỰC HIỆN BÀI TOÁN MÁY PHÁT NHẠC SỐ SỬ DỤNG ALTIUM DESIGNER VÀ KIT NB2DSK01
Đặt vấn đề
Mảng cổng lập trình trường đang phát triển nhanh chóng trong thiết kế kỹ thuật số, với mục tiêu ứng dụng kiến thức về FPGA để xây dựng máy nghe nhạc MP3 sử dụng bo mạch FPGA Altium NB2DSK01 Dự án sử dụng ngôn ngữ mô tả phần cứng VHDL kết hợp với các thiết bị ngoại vi như audio codec trong PB01 âm thanh nổi và bộ điều khiển màn hình TFT.
Thiết kế dựa trên NB2 thông qua triển khai bộ giải mã MP3, để phát lại các tệp
Bài viết này mô tả cách phát nhạc MP3 từ thẻ SD bằng cách sử dụng bảng mạch ngoại vi PB02 của Altium's Mass Storage, gắn vào bo mạch chủ NB2 Người dùng chỉ cần cắm thẻ SD chứa tệp MP3 vào đầu đọc thẻ SD của PB02, và danh sách các tệp sẽ được hiển thị trên màn hình TFT Để phát nhạc, chỉ cần chạm vào tệp mong muốn Âm thanh có thể được nghe qua loa stereo gắn trên bo mạch NB2DSK-SPK01 hoặc thông qua bộ thu âm thanh bên ngoài kết nối với giắc cắm LINE OUT của NB2 Thiết kế này bao gồm TSK3000 cùng với các thành phần bộ điều khiển TFT, MP3 và thẻ.
Dự án nhúng này tập trung vào việc sử dụng các giao thức như SD, SPI, I2S, TSPENDOWN và SRAM để xử lý âm thanh Nó bao gồm việc phát triển trình điều khiển bộ giải mã MP3, quản lý ngữ cảnh hệ thống lưu trữ, thiết kế giao diện người dùng (GUI) và xử lý ngữ cảnh I/O cho thiết bị nối tiếp, nhằm cung cấp đầu ra nối tiếp qua thiết bị đầu cuối.
Các bước thực hiện
3.2.1 Tạo dựng một Project FPGA mới
Mỗi thiết kế trong môi trường Altium được lưu trữ dưới dạng một tập tin dự án Đối với thiết kế FPGA, cần tạo một dự án FPGA mới với định dạng tập tin * PrjFpg Tập tin dự án này là mã ASCII, chứa thông tin quan trọng như tài liệu dự án, cài đặt đầu ra, cấu hình trình biên dịch và thiết lập kiểm tra lỗi.
- Từ File menu, chọn New ằ Design Workspace để tạo khoảng trống làm việc.
- Từ File menu, chọn New ằ Project ằ FPGA project để tạp một project FPGA mới.
- Project mới lấy tên là "FPGA_Project1.PrjFpg" được thêm vào bảng Project.
Để lưu dự án FPGA, hãy nhấp chuột phải vào tên của Project (FPGA_Project1.PrjFpg) trong bảng Projects và chọn lệnh Save Project Lưu dự án với tên MP3_Player.PrjFpg tại một vị trí trên máy tính trong thư mục mới có tên MP3 player.
Bước tiếp theo trong quy trình thiết kế FPGA là bổ sung các tài liệu nguồn cần thiết Mặc dù thiết kế sẽ được lưu trữ trong OpenBus, mỗi dự án FPGA đều yêu cầu một tài liệu sơ đồ tổng quát Vì vậy, chúng ta sẽ thêm một tài liệu OpenBus mới cùng với một sơ đồ mới cho dự án này.
- Từ File menu, chọn New ằ Schematic để tạo tài tạo tài liệu Schematic mới
A new schematic document has been added to the Projects table, named "Sheet1.SchDoc." This document represents a new component of the FPGA data Save this document (File > Save) as Sheet1.SchDoc in the main directory of the Project.
Để thêm một tài liệu OpenBus mới, bạn hãy nhấp chuột phải vào mục dự án FPGA trong bảng dự án và chọn lệnh "Add New to Project" rồi chọn "OpenBus System Document" Một tài liệu OpenBus trống sẽ được mở ra, tương tự như các tài liệu khác trong cửa sổ thiết kế chính.
- Lưu tài liệu này với tên MP3_OB.OpenBus, trong cùng thư mục mẹ của Project.
Dự án sẽ được hiển thị như một biến đổi trong bảng điều khiển dự án Để lưu lại, hãy nhấp chuột phải vào tên của dự án và chọn "Lưu Dự Án".
3.2.2 Xây dựng kiến trúc theo OpenBus
OpenBus là một giải pháp mới cho thiết kế FPGA cấp hệ thống, cung cấp giao diện nhẹ hơn so với các phương pháp triển khai dựa trên sơ đồ Với khả năng tự động kiểm soát nhiều chi tiết cấp thấp, OpenBus giúp người dùng tập trung vào các hệ thống cấp cao và kết nối các thành phần chính Tất cả các thành phần cần thiết đều có trong OpenBus Palette, có thể hiển thị bằng cách nhấp vào điều khiển bảng OpenBus ở góc dưới bên phải của Tùy chỉnh chính và chọn OpenBus Palette từ menu popup.
Hầu hết các thành phần trong OpenBus Palette tương ứng trực tiếp với các thành phần có tên tương tự trong thư viện FPGA Peripherals và FPGA Processor, được sử dụng để thiết kế sơ đồ FPGA cơ bản.
Trong không gian làm việc của OpenBus, bạn có thể nhấp chuột vào biểu tượng OpenBus ở góc dưới bên phải màn hình Sau đó, chọn OpenBus palette, bảng chứa tất cả các thành phần cần thiết sẽ xuất hiện, cho phép bạn lựa chọn các thành phần mà mình cần.
Bảng dưới đây xác định các thành phần OpenBus theo yêu cầu thiết kế.
Bảng 3.1 Các thành phần OpenBus
Ký hiệu Tên thành phần Miêu tả Số lượng
TSK3000A TSK3000A 32-Bit, bộ xử lý
TFT Màn hình TFT trên NB2DSK01 1
Giao diện chủ SPI cho phép bộ xử lý máy chủ giao tiếp hiệu quả với thiết bị ngoại vi SPI khách bên ngoài, như các Audio CODEC trong PB01, được kết nối với thiết bị FPGA vật lý.
Chip giải mã tệp tin âm thanh khuôn dạng MP3 có sẵn trên NB2DSK01
Công cụ Wishbone hỗ trợ gỡ lỗi bộ xử lý hiệu quả thông qua giao diện điều khiển IO, cho phép thực hiện việc đọc và ghi dữ liệu qua JTAG Thông tin được nhập và hiển thị dưới dạng văn bản thông qua bảng điều khiển công.
Cung cấp một giao diện đơn giản giữa một bộ xử lý 32-bit và SRAM tĩnh không đồng bộ (Asynchronous Static SRAM).
SD Card Khe cắm thẻ nhớ SD trên
TSPENDOWN TSPEN trên KIT NB2DSK01 1
Liên kết, là phương tiện để truy cập vào một hoặc nhiều thiết bị khách trên một giao diện Wishbone đơn.
Vi điều khiển TSK3000A là bộ xử lý trung tâm tích hợp trong KIT NB2DSK01, nổi bật với thiết kế gọn nhẹ Nó bao gồm các thiết bị ngoại vi rõ ràng, như bộ phận nhân/phân chia phần cứng, đồng hồ bên trong, bộ điều khiển gián đoạn, bộ điều khiển bộ nhớ và một số logic gỡ lỗi dựa trên JTAG.
TSK3000A là lõi bộ xử lý mềm có thể cấu hình lại, yêu cầu người dùng chỉ định một số thông số quan trọng trước khi sử dụng, bao gồm kích thước bộ nhớ xử lý nội bộ, việc sử dụng phần cứng bộ nhân/chia, sự hiện diện của hệ thống gỡ lỗi trên chip và cách quản lý các điểm dừng khi cài đặt lại.
- Kích chuột phải vào thành phần MCU và chọn Configure MCU (TSK3000A) từ menu chuột phải.
- Trong hộp thoại Configure (32-bit Processors):
• Thiết lập Internal Processor Memory để 32 K Bytes (8K x 32-Bit Words)
Đặt Multiply/Divide Unit (MDU) để Hardware MDU
Đặt On-Chip Debug System để Include JTAG-Based On-Chip Debug System
• Đặt tùy chọn cuối cùng để Disable Breakpoints on Hard Reset
- Nhấn OK để lưu các thay đổi.
You may encounter an error message stating, "2 Nexus JTAG Parts Found but no NEXUS_JTAG_CONNECTOR was found on the top sheet." This indicates that while two Nexus JTAG components have been detected, the required NEXUS_JTAG_CONNECTOR is missing from the schematic layout.
Thông báo "Nexus JTAG nhưng không có NEXUS_JTAG_CONNECTOR đã được tìm thấy trên trang đầu" có thể được bỏ qua, vì sơ đồ cấp trên vẫn chưa hoàn thành.
Một số kết quả đạt dược
Kết nối thành công Altium Designer với Kit FPGA NB2DSK01 cho phép sử dụng thẻ SD làm đầu vào và phát âm thanh định dạng MP3 và Wav từ FPGA.
- Tạo một dự án FPGA trong Altium Designer
- Sử dụng hệ thống phân cấp thiết kế trong một dự án FPGA
Thiết kế FPGA dựa trên OpenBus bao gồm việc tạo nguồn, sắp xếp các thành phần và kết nối chúng với nhau, đồng thời kết nối với các thiết bị ngoại vi trên Desktop NanoBoard.
Dưới đây là một số hình ảnh kết quả trong quá trình chạy ứng dụng:
Sau khi đã thực hiện xong các bước ta nạp chương trình cho chip trắng của KIT FPGA NB2DSK01
Hình 3.29 Hình ảnh KIT đã được nạp chương trình
Hình 3.30 Tên các bài hát được hiển thị lên màn hình
Sau khi nạp chương trình, file âm thanh đọc từ thẻ nhớ hiển thị trên màn hình và có thể phát âm thanh ra loa.
Kết luận chương
Thông qua phân tích bài toán thiết kế, chúng ta đã xác định các bước cần thiết để xây dựng hệ thống nhúng sử dụng công nghệ FPGA, kết hợp giữa công cụ hỗ trợ phần cứng và phần mềm Hai yếu tố quan trọng để đảm bảo thành công của hệ thống nhúng là phát triển phần cứng và phần mềm, đồng thời phải liên kết chúng một cách chính xác.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận chung
Qua thời gian tìm hiểu và thực hiện đề tài, em đã đạt được một số kết quả sau:
- Hiểu hơn về chuẩn gia tiếp SPI, I2S
- Hiểu rõ kiến trúc của Board NB2DSK01 và cách thức thực hiện một dự án nhúng trên KITNB2DSK01.
- Vận dụng kiến thức được học về FPGA và ngôn ngữ lập trình để hoàn thành đề tài được giao.
Kết quả thực nghiệm cho thấy phần mềm Altium Designer kết hợp với Kit FPGA NB2DSK01 có khả năng xây dựng hệ thống giải mã âm thanh số mp3 và wav trên nền FPGA, cho phép tích hợp hiệu quả với các hệ thống ứng dụng khác.
- Tốc độ thực nhanh, thao tác đơn giản.
- Có thể tùy chỉnh được các thiết bị, trạng thái và các chế độ làm việc.
- Ứng dụng hoạt động ổn định và có độ chính xác cao.
Trong quá trình thực hiện nghiên cứu, không thể tránh khỏi những sai sót Chúng tôi rất mong nhận được ý kiến đóng góp từ các thầy cô để cải thiện độ chính xác của kết quả nghiên cứu.
Bài toán này mở ra cơ hội nghiên cứu và phát triển các điều khiển kết nối I/O thông qua GPIO Chúng ta có thể mở rộng nghiên cứu về khả năng phát hình ảnh, cho phép đồng thời phát nhạc và hiển thị hình ảnh, video.
Nghiên cứu để tạo ra các thiết bị có thể tích hợp nhiều chức năng và tối ưu hơn về mặt kích thước.