Thiết kế hệ SoPC đơn giản thực hiện hiển thị chữ Hello trên màn hình TFF.
-Bước 1: tạo FPGA project
Hình 2.15 Các thao tác tạo một Poject FPGA mới 22
-Bước 2: Tạo file OpenBus
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ý
23
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
24
Hình 2.20 Thao tác tạo file constraint và ràng buộc cho FPGA project
-Bước 5: Tạo project nhúng
Hình 2.21 Thao tác tạo file nhúng Embeded
Hình 2.22 Màn hình Platfrom 25
Hình 2.23 Chương trình C
-Bước 6: Nạp vào KIT
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ụ trên, chúng ta có thể xem thêm ví dụ về bài toán thiết kế mạch logic tổ hợp (xem phụ lục A) và thiết kế mạch logic tuần tự (xem phụ lục B).
2.5 Kết luận chương
Như vậy các kiến thức tổng quan về công nghệ FPGA, ngôn ngữ mô tả phần cứng VHDL được đưa ra một cách khá đầy đủ. Các công cụ hỗ trợ phần cứng (KIT phát triển NB2DSK01) và công cụ hộ trợ phần mềm Altium Designer là một trong những công cụ phổ biến nhất hiện nay trong việc phục vụ thực hiện các dự án FPGA. Để chứng minh cho điều đó, một ví dụ nhở được thực hiện, đó là 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.
26
CHƯƠNG 3 Ứ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 3.1 Đặt vấn đề
Mảng cổng lập trình trường là lĩnh vực phát triển nhanh chóng trong thiết kế kỹ thuật số ngày nay. Mục tiêu của dự án là ứng dụng các kiến thức được học về FPGA vào bài toán thực hiện một máy nghe nhạc MP3 sử dụng bo mạch FPGA Altium NB2DSK01. Ngôn ngữ mô tả phần cứng như VHDL được sử dụng thông qua các thiết bị ngoại vi bên ngoài ổ đĩa, bao gồm audio codec trong PB01 âm thanh nổi và bộ điều khiển mà 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
*.mp3 được lưu trữ trên thẻ SD. Bài toán này yêu cầu bảng mạch ngoại vi PB02 của Altium's Mass Storage phải được gắn vào bo mạch chủ NB2. Cắm thẻ SD có chứa một hoặc nhiều tệp * .mp3 vào đầu đọc thẻ SD của PB02. Danh sách tập tin MP3 sẽ được hiển thị trên màn hình TFT của bo mạch. Chỉ cần chạm vào tệp cần thiết để phát lại. Nghe nhạc qua loa stereo (trên bo mạch NB2DSK-SPK01 đính kèm) hoặc qua bộ thu âm thanh bên ngoài được kết nối với giắc cắm LINE OUT của NB2. Thiết kế bao gồm TSK3000, cũng như các thành phần bộ điều khiển TFT, MP3, thiết bị đầu cuối, Thẻ SD, SPI, I2S, TSPENDOWN và SRAM. Dự án nhúng liên quan thể hiện việc sử dụng ngữ cảnh âm thanh, Trình điều khiển bộ giải mã MP3, ngữ cảnh hệ thống lưu trữ, ngữ cảnh GUI và ngữ cảnh I / O của thiết bị nối tiếp cho đầu ra nối tiếp thông qua thiết bị đầu cuối.
3.2 Các bước thực hiện
3.2.1 Tạo dựng một Project FPGA mới
Các cơ sở cho mỗi thiết kế được tạo ra trong môi trường thiết kế Altium là một tập tin dự án. Đối với một thiết kế FPGA, chúng ta cần phải tạo ra một dự án FPGA mới (tập tin có định dạng * .PrjFpg). Các tài liệu dự án là một tập tin mã ASCII mà tích trữ thông tin dự án như các tài liệu thuộc về dự án đó, các cài đặt đầu ra, các cài đặt trình biên dịch, các thiết lập kiểm tra lỗi, v.v...[5]
-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.
-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 này tại một vị trí nào đó trên máy tính với tên là MP3_Player.PrjFpg, và trong một thư mục mới tên là MP3 player.
Bước tiếp theo là thêm các tài liệu nguồn theo yêu cầu của thiết kế FPGA. Mặc dù thiết kế sẽ được nắm bắt trong OpenBus, nhớ lại rằng mỗi dự án FPGA đòi hỏi một tài liệu sơ đồ cấp cao nhất. Do đó, sẽ thêm cả một tài liệu OpenBus mới và Schematic mới cho Project này.
-Từ File menu, chọn New » Schematic để tạo tài tạo tài liệu Schematic mới .
-Schematic document mới được thêm bảng Projects tên là "Sheet1.SchDoc". Đó là tài liệu mới của một phần trong dữ liệu FPGA. Lưu tài liệu này (File»Save) với tên Sheet1.SchDoc, trong thư mục lớn của Project.
-Thêm một tài liệu OpenBus mới bằng cách kích 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»OpenBus System Document . Một tài liệu OpenBus trống sẽ mở ra như các tài liệu hoạt động 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 chứa chúng sẽ xuất hiện như là biến đổi trong bảng điều khiển dự án. Lưu Project (nhấp chuột phải vào tên của Project và chọn Save Project ).
3.2.2 Xây dựng kiến trúc theo OpenBus
OpenBus là một cách mới để làm việc với thiết kế FPGA ở cấp hệ thống. Cung cấp một giao diện nhẹ hơn nhiều so với việc triển khai dựa trên sơ đồ, OpenBus là hầu như rất nhẹ trong khả năng của nó. Bằng cách tự động kiểm soát nhiều chi tiết cấp thấp, OpenBus cho phép 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. Ta sẽ tìm thấy tất cả các thành phần cần dùng trong OpenBus Palette. Có thể hiển thị các Palette bằng cách nhấp vào OpenBus panel control ở góc dưới bên phải của Tùy chỉnh chính và sau đó chọn OpenBus Palette từ menu popup.
Phần lớn các thành phần được tìm thấy trong OpenBus Palette dịch trực tiếp với các thành phần có tên tương tự được tìm thấy trong các thư viện FPGA Peripherals và FPGA Processor sử dụng để thiết kế sơ đồ FPGA cơ bản.
Trong không gian làm việc của OpenBus, ta kích chuột vào OpenBus ở góc dưới bên phải màn hình, rồi chọn OpenBus palette, một bảng chứa tất cả các thành phần OpenBus sẽ hiện ra cho phép ta lựa chọn các thành phần mà ta 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ế.
28
Bảng 3.1 Các thành phần OpenBus
3.2.2.1 Vi điều khiển TSK3000A
Vi điều khiển TSK3000A là bộ xử lý trung tâm được tích hợp trong KIT NB2DSK01. TSK3000A khá gọn nhẹ với một bộ thiết bị ngoại vi được xác định rõ ràng: nó chứa một 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 dựa trên gỡ lỗi JTAG.
TSK3000A là một lõi bộ xử lý mềm có thể cấu hình lại và như vậy đòi hỏi chỉ định một vài thông số quan trọng trước khi sử dụng nó. Điều này bao gồm các kích
thước của bộ nhớ xử lý nội bộ, có hoặc không sử dụng một phần cứng bộ nhân/chia, cho dù nó đã bao gồm một hệ thống gỡ lỗi trên chip và làm thế nào để quản lý các điểm dừng khi cài đặt lại. Để cấu hình bộ xử lý:
-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.
Có thể nhận được một thông báo lỗi chỉ ra rằng có "2 Nexus JTAG Parts Found
but no NEXUS_JTAG_CONNECTOR was found on the top sheet" ( " Tìm thấy 2 phần
Nexus JTAG nhưng không có NEXUS_JTAG_CONNECTOR đã được tìm thấy trên trang đầu". Thông báo này có thể thể bỏ qua như chưa hoàn thành sơ đồ cấp trên.
3.2.2.2 WB_MP3DEC
Thành phần bộ giải mã MP3 wishbon (WB_MP3DEC) hỗ trợ giải mã dữ liệu âm thanh được mã hóa dưới dạng MPEC-lớp 3 thành các mẫu có dấu 16 bít kênh đôi.
MP3DEC có thể giải mã tất cả các dữ liệu MP3 với tốc độ lấy mẫu 32/44/48Khz và tốc dộ bit là 32-320Kbit/s
WB_MP3DEC có giao diện DMA để đọc đầu vào và đầu ra ghi, có quyền truy cập riêng biệt với bộ nhớ Scratch.
3.2.2.3 SD Card
Khe cắm thẻ nhớ SD card trên board NB2. Khi thẻ được đưa vào khe cắm, thẻ sẽ giao tiếp thông qua chuẩn truyền thông SPI…
3.2.2.4 Thiết bị đầu cuối (Terminal Instrument)
Các thiết bị đầu cuối cung cấp một cách đơn giản xuất ra dữ liệu trong một thiết kế FPGA.
-Bấm đúp vào các thành phần GPIO để mở hộp thoại Configure OpenBus
Terminal Instrument.
-Trong hộp thoại:
• Đặt Component Designator để TERM 31
• Đặt Interface Type để to Signal Harness
-Nhấn OK để lưu các thay đổi.
3.2.2.5 Chuẩn giao diện bus nối tiếp I2S
I2S là một giao thức truyền thông nối tiếp hiệu quả, đơn giản, tuyệt vời cho âm thanh số hóa. I2S tạo điều kiện phát triển thiết bị điện tử âm thanh bằng giao diện được tiêu chuẩn hóa để truyền dữ liệu số giữa các ADC, DAC, bộ lọc kỹ thuật số, bộ xử lý tín hiệu số và các loại IC khác được sử dụng trong các hệ thống âm thanh.
Nó là một giao thức hai kênh, bởi vì nó được thiết kế cho âm thanh nổi (một phần của hệ thống âm thanh chất lượng cao), NanoBoard bao gồm một CS4270 24-bit, 192kHz stereo audio CODEC (từ Cirrus Logic). CODEC phục vụ cho cả I/O âm thanh tương tự (analog) và âm thanh kỹ thuật số (digital). Audio Streaming Controller truyền dữ liệu âm thanh qua bus âm thanh inter-IC (I2S).
-Bấm đúp vào các thành phần TERM để mở hộp thoại Configure OpenBus Audio
Streaming Controller.
-Trong hộp thoại:
• Thiết lập I2S Channels để Receive and Transmit
• Thiết lập I2S Hardware Buffer để Include Hardware Buffer, 1K samples
• Đặt Component Designator để AUDIO
• Đặt Interface Type để Signal Harness
-Nhấn OK để lưu các thay đổi.
3.2.2.6 Giao thức SPI
SPI (Serial Peripheral Bus) là một chuẩn truyền thông nối tiếp tốc độ cao do hãng Motorola đề xuất. Đây là kiểu truyền thông Master-Slave, trong đó có 1 chip Master điều phối quá trình tuyền thông và các chip Slaves được điều khiển bởi Master vì thế truyền thông chỉ xảy ra giữa Master và Slave. SPI là một cách truyền song công (full duplex) nghĩa là tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng thời.
Thanh ghi nội bộ cho các Audio CODEC được sử dụng để xác định các chức năng cần thiết của thiết bị, được truy cập trên bus SPI.
-Bấm đúp vào các thành phần GPIO để mở hộp thoại Configure OpenBus SPI.
-Trong hộp thoại:
• Đặt Component Designator để SPI
• Đặt Interface Type để Signal Harness 32
-Nhấn OK để lưu các thay đổi.
3.2.2.7 Màn hình tinh thể lỏng TFT
Là màn hình được tích hợp sẵn trên KIT NB2. Nó cũng giống như một màn hình LCD cho phép hiển thị các thông tin liên quan.
3.2.2.8 SRAM Controller
SRAM controller đại diện cho bộ điều khiển bộ nhớ khi được cấu hình để kết nối với 2 thiết bị SRAM vật lý rộng 16 bit, với kích thước 1MB (256K x 32 bit). Bố cục và kích thước bộ nhớ được chỉ định như một phần của cấu hình bộ điều khiển
SRAM controller 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).
SRAM Controller cung cấp một giao diện chung, đơn giản là Asynchronous Static RAM. Như vậy, nó đòi hỏi cấu hình các thành phần cho số lượng và loại bộ nhớ bên ngoài, có ý định sử dụng.
-Kích chuột phải vào thành phần SRAM và chọn Configure SRAM (SRAM Controller) từ menu chuột phải.
-Trong hộp thoại Configure (Memory Controller):
• Đặt Memory Type để Asynchronous SRAM
• Đặt Size of Static RAM array để 1MB (256K x 32-bit)
• Đặt Memory Layout để 2 x 16-bit Wide Devices
-Nhấn OK để lưu các thay đổi.
Sau khi kết nối các thành phần OpenBus lại với nhau ta được sơ đồ hoàn chỉnh sau:
33
Hình 3.25 Hoàn thành OpenBus cho dự án MP3 FPGA
3.2.3 Xây dựng mạch nguyên lí
Sau khi xây dựng xong OpenBus ta đi xây dựng mạch nguyên lý dựa trên OpenBus.
Đầi tiên, ta tạo mới một sơ đồ mạch Schematic bằng cách kích chuột phải vào tên Project chọn Add new to Project -> Schematic. Tiếp theo, tạo đối tượng Symboy từ sơ đồ openbus bằng chách chọn Design trên thanh menu -> Create Sheet Symboy from sheet or HDL .Trong cửa sổ hiện ra , chúng ta chọn tới file OpenBus và nhấn OK, Khi đó, một đối tượng sẽ xuất hiện, chúng ta chỉ cần đặt lên Schematic và kết nối các thiết bị ngoại vi theo yêu cầu cho đối tượng.
34
Hình 3.26 Sơ đồ nguyên lý tổng thể của hệ thống
3.2.4 Xây dựng hệ nhúng
3.2.4.1 Tạo một project nhúng mới
Các phần mềm nền tảng là một khung phần mềm đó tạo điều kiện viết phần mềm để truy cập các thiết bị ngoại vi trên NanoBoard là một phần của thiết kế FPGA. Nó cũng tạo điều kiện cho việc thực hiện các giao thức phần mềm và cung cấp các chức năng bổ sung có thể sử dụng trong các ứng dụng, chẳng hạn như xử lý đa luồng. Về bản chất, nó là một bộ sưu tập các module phần mềm, làm việc như mã nguồn. Những module này sẽ được tự động thêm vào dự án nhúng để làm việc với các cấp thấp khác nhau được yêu cầu để kiểm soát hay thiết bị ngoại vi truy cập. Các mô-đun cũng cung cấp một giao diện cho các ứng dụng, cung cấp chức năng cụ thể (Ví dụ: set_baudrate
(), một chức năng để tự động thay đổi tốc độ truyền).
Đầu tiên ta đi tạo một project nhúng mới bằng cách: Chọn File»New»Project»Embedded Project từ các menu, hoặc bấm Dự án Trống (Embedded) trong phần mới của bảng điều khiển tập tin Files panel.
Các bảng điều khiển dự án sẽ hiển thị một dự án nhúng mới với tên mặc định Embedded_Project1.PrjEmb. Chọn File»Save Project hoặc kích chuột phải vào dự án trong bảng dự án và chọn Save Project . Lưu tập tin thành Embedded_MP3.PrjEmb. Nếu muốn giữ lại các tài liệu dự án nhúng tách từ các tài liệu dự án FPGA, có thể muốn lưu dự án nhúng Embedded Project trong một thư mục con gọi là Embedded
35
dưới thư mục dự án FPGA. Một dự án nhúng có thể được phát triển một cách độc lập nhưng rất nhanh chóng, sẽ muốn chạy nó trên một bộ xử lý đích. Altium Designer có khả năng liên kết dự án nhúng vào một dự án FPGA có chứa một bộ xử lý nhúng.
Hình 3.27 Thao tác tạo dự án nhúng và kéo thả liên kết giữa phần nhúng và MCU
Để liên kết một dự án nhúng đến Bộ xử lý đích của nó, ta thực hiện các bước sau:
-Chắc chắn rằng cả hai dự án nhúng và Dự án (FPGA Embedded Project và FPGA Project) có chứa Bộ xử lý được nạp trong bảng điều khiển dự án.
-Kích hoạt tính năng lựa chọn Structure Editor ở phía trên cùng của bảng điều khiển dự án để chuyển sang chế độ Structure Editor.
-Nhấp chuột trái và kéo Embedded Project trên đầu trang của các dự án FPGA. Bất kỳ mục tiêu Bộ xử lý hợp lệ sẽ được tô màu xanh nhạt. Thả dự án về Bộ xử lý MCU (TSK3000A).
3.2.4.2 Xây dựng Software Platform
Các Software Platform Builder là giao diện người dùng đồ họa sử dụng để cấu hình và thêm mô-đun vào dự án, xây dựng phần mềm nền tảng. Software Platform
Builder xuất hiện khi thêm một tài liệu đặc biệt đến dự án của nhúng: một tập tin Software Platform với phần mở rộng .SwPlatform. Tập tin này đại diện cho cả phần mềm nền tảng cho dự án và cung cấp một giao diện đồ họa để chọn và cấu hình các