Một số kết quả đạt dược

Một phần của tài liệu ĐỒ án môn học THIẾT kế MẠCH TÍCH hợp số thiết kế máy phát nhạc MP3, WAV sử dụng KIT phát triển NB2DSK01 và phần mềm hỗ trợ altium designer (Trang 55)

-Xây dựng thành công việc kết nối Altium Designer và Kit FPGA NB2DSK01 với đầu vào là thẻ SD và đầu ra là âm thanh trên nền FPGA với khuôn dạng MP3 và Wav

-Tạo một dự án FPGA trong Altium Designer 38

-Sử dụng hệ thống phân cấp thiết kế trong một dự án FPGA

-Thực hiện một thiết kế FPGA dựa trên OpenBus, bao gồm cả nguồn và đặt các thành phần, kết nối chúng lại với nhau, và kết nối chúng với các 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

39

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.

3.4 Kết luận chương

Như vậy, thông qua phân tích bài toán thiết kế, ta đã lần lượt đưa ra các bước thực hiện cần thiết để xây dựng lên một hệ nhúng sử dụng công nghệ FPGA thông qua các công cụ hỗ trợ phần cứng và công cụ hỗ trợ phần mềm. Có 2 yếu tố quan trọng để xây dựng lên một hệ thống nhúng thành công đó là xây dựng phần cứng và xây dựng phần mềm cho dự án và phải liên kết 2 phần này lại với nhau một cách chính xác.

40

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.

Qua kết quả thực nghiệm có thể thấy rằng, phần mềm Altium Designer và Kit FPGA NB2DSK01 trong xây dựng hệ thống giải mã âm thanh số mp3, wav thiết kế trên nền FPGA cho phép tích hợp mạnh mẽ với các hệ thống ứng dụng sau:

-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.

Tuy nhiên, trong quá trình thực hiện nghiên cứu không tranh được những sai sót, rất mong nhận được ý kiến đóng góp của các thầy cô để kết quả nghiên cứu ngày càng chính xác hơn.

Hướng phát triển

Từ bài toán này, ta có thể nghiên cứu, phát triển thêm về phần điều khiển các kết nối I/O thông qua các GPIO, ta có thể nghiên cứu thêm về phần phát hình ảnh để có thể vừa phát nhạc, vừa 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.

41

TÀI LIỆU THAM KHẢO

[1] LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TRÊN FPGA_10253912052019_Luận Văn cao học_Đinh Văn Thắng

[2] Bài giảng môn học thiết kế mạch tích hợp số, Hệ thống trên chip- bộ môn Kỹ thuật điện tử - Trường Đại học Kỹ thuật Công nghiệp – Đại học Thái Nguyên.

[3] Đại học Bách Khoa. Hệ thống điều khiển nhúng_TS Lưu Hông Việt.

[4] Funtional Overview of the deesktop Nanoboard NB2DSK01 https://techdocs.altium.com/display/HWARE/ Functional+Overview+of+the+Desktop+NanoBoard+NB2DSK01 [5] https://manualzz.com/doc/14106804/tutorial---implementing-a-32-bit- processor? __cf_chl_jschl_tk__=pmd_5oJ1rkrVoUQxBamfTbOH_b5wscDxB8vJjH4Qpc6j 6SE-1630495224-0-gqNtZGzNAqWjcnBszQh9

Implenmenting a 32-bit Processor-based Design in a FPGA

Ngoài ra sinh viên còn tham khảo thêm nhiều tài liệu và một số trng web:

[6] Abdel-Gawad, “A full hardware implementation for an MP3 decoder chip using VHDL”, project report, University of California at Santa Barbara, December 2008.

[7] H. Popp, “An introduction to MPEG layer-3”, European Broadcasting Union Technical Review, pp. 1-15, June 2000

[8] P. Chandraiah, and R. D¨omer , “Specification and design of a MP3 audio decoder”, Technical Report CECS-05- 04 , University of California at Irvine, pp. 1-83, May 2005

[9]https://sourceforge.net/directory/language:cpp/os:windows/? q=mp3+decode+delphi

42

PHỤ LỤC A THIẾT KẾ MẠCH LOGIC TỔ HỢP A.1 Mô tả bài toán

Cho môt hê thông giam sat nhiêt đô, nếu nhiệt độ nằm trong giải từ (30 ÷80)

thì led sáng. Hãy thiết kế hệ thống dựa trên VDHL và chạy trên KIT NB2DSK01. Biết đầu ra của hệ thống được mô tả bằng hàm F sau:

F=X3X2+X3X2X1+X3X2X0

A.2 Các bước thực hiện

- Bước 1: Tạo Project mới

Khởi động phần mềm altium designer => chọn file => new = > project= > chọn VHDL project. Sửa tên và đường dẫn lưu file.

Hình 0.31 Các thao tác để add file chương trình VHDL

Bước 2: Add File VHDL

Với VHDL project đã có ta add thêm file VHDL bằng cách kích chuột phải vào tên project chọn add new to project => chọn VHDL document.

43

Hình 0.1. Các thao tác add file VHDL

Nếu ta có sẵn một file VHDL ta cũng có thể thêm vào file có sẵn bằng cách ấn chọn “add exit file”

Bước 3: Viết mã VHDL

Sau khi có file VHDL document ta bắt đầu soạn thảo code.

Hình 0.2. Thao tác viết chương trình VHDL trên altium designer

Bước 4: Biên dịch chương trình

Sau khi soạn thảo code xong ta lưu file lại sau đó ấn chuột phải vào tên file và ấn Compile.

44

Hình 0.3. Thao tác biên dịch kiểm tra chương trình xem có lỗi hay không

Bước 5 : Tạo file nguyên lý

-Chọn add new to project => Schematic. Sau đó ở cửa sổ shematic ta ấn chuột phải chọn Sheet Action => Create Sheet Symbol From Sheet HDL.

Hình 0.4. Thao tác tạo file nguyên lý cho bài toán thiết kế

45

Hình 0.5. Giao diện của Project mạch nguyên lý FPGA trong Altium Designer

-Chọn file HDL đã lưu trước đó ta thu được Symbol và đồng thời ta sẽ lấy các Deepswit và LED trong thư viện của Altium. Sửa tên của các DW, LED và nối với các chân trên symbol.

Hình 0.6. Thao tác tạo symbol từ file VHDL

46

Hình 0.7. Thao tác lấy dipswitch và đặt tên cho dipswitch

Hình 0.8. Sơ đồ nguyên lý vỏ và thiết bị ngoại vi của hệ thống điều khiển nhiệt độ

-Lưu file Schematic lại và chuột phải vào tên file Schematic ấn compile. Sau đó lưu project và chuột phải vào project và ấn compile

Bước 6: Nạp chương trình lên KIT Nanoboard NB2DSK01

-Kết nối kit NB2 với máy tính, trên phần mềm altium ấn vào tab device tích vào live ta thấy kit đã kết nối với máy tính

47

-Kích chuột phải vào biểu tượng kit chuột phải chọn đúng loại kit

Hình 0.9. Chọn đúng kit thực hiện

-Kích chuột phải vào Nanoboard NB2 chọn configure FPGA projetct => chọn project đã có sau đó chọn OK

Hình 0.10. Thao tác chọn project khi nạp code

-Chọn ok

48

-Tích check program FPGA. Ta dã thành công nạp code vào kit.

Hình 0.11. Hình ảnh nạp thành công chương trình

-Kết quả mô phỏng

49

Hình 0.12. KIT khi chưa nạp code

Hình 0.13. KIT khi đã nạp code

Hình 0.14. Kết quả thực hiện trên KIT 50

A.3 Đoạn mã VHDL

--- CT chinh Bai tap thiet ke mach logic to hop---

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity ND30to80 is

port ( X_3,X_2,X_1,X_0:

end ND30to80;

architecture dataflow of ND30to80 is begin elseF <= else '1' '1' when (X_3='0'and X_2='1' '1' '1' '1' when '1'(X_3='1'and X_2='0' '1' '0'; end dataflow; --- library---

Testbench cua Bai tap thiet ke mach logic to hop---

IEEE;

use IEEE.STD_LOGIC_1164.ALL;

--- entity ND30to80_test is end ND30to80_test; --- architecture type sample X_3,X_2,X_1,X_0

end record sample;

type sample_array is array

constant ( ('0','0','0','0','0'),('0','0','0','1','0'),('0','0','1','0','0'), ('0','0','1','1','0'),('0','1','0','0','1'),('0','1','0','1','1'), ('0','1','1','0','1'),('0','1','1','1','1'),('1','0','0','0','1'), ('1','0','0','1','1'),('1','0','1','0','1'),('1','0','1','1','1'), ('1','1','0','0','1'),('1','1','0','1','0'),('1','1','1','0','0'), ('1','1','1','1','0') ); 51

component ND30to80 is port (X_3,X_2,X_1,X_0

F : out std_logic

);

end component;

--- khai bao cac tin hieu vao ra cho DUT---

signal X_3in,X_2in,X_1in,X_0in,Fout : std_logic;

begin

process begin

for i in test_data'range loop

X_3in <= test_data(i).X_3;

X_2in <= test_data(i).X_2;

X_1in <= test_data(i).X_1;

X_0in <= test_data(i).X_0;

wait for 10 ns;

end loop;

wait;

end process;

DUT:ND30to80 port map(X_3in, X_2in,X_1in, X_0in, Fout);

---

52

download by : skknchat@gmail.com

PHỤ LỤC B THIẾT KẾ MẠCH LOGIC TUẦN TỰ

B.1 Mô tả bài toán

Thiết kế mạch tích hợp số thực hiện chức năng của một T-FF đầy đủ các chân T, Q, Qnot, CLK sườn dương, CLR và PR tích cực mức cao bằng công nghệ FPGA.

B.2 Các bước thực hiện

Đối với bài toán thiết kế mạch logic tuần tự, ta đi thực hiện các bước tương tự như bài toán thiết kế mạch logic tổ hợp để thu được kết quả cuối cùng.

Bước 1: Tạo một dự án FPGA mới

-Đầu tiên, mở Altium, để tạo một Project mới ta vào File → New → Project.

-Chọn FPGA project đặt tên cho Project, chọn vị trí lưu → nhấn OK

Bước 2: Tạo File VHDL

-Nếu chưa có file sẵn trong thư mục, ta đi tạo một file VHDL mới bằng Với cách cách kích chuột phải vào dự án FPGA vừa tạo add new to project VHDL document.

-Nếu đã có sẵn file bạn chỉ việc thêm file đó vào dự án bằng cách kích chuột phải vào dự án FPGA vừa tạo → add Exiting to project →đi đến thư mục bạn lưu file và ấn chọn

Bước 3: Tạo đoạn mã VHDL

Gõ đoạn mã chương trình sau vào không gian làm việc của file VHDL

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

---thuc the---

entity T_FF is

Port ( T, CLK, CLR,PR : in STD_LOGIC;

Q, Qnot : out STD_LOGIC);

end T_FF;

---kien truc---

architecture BHV of T_FF is begin

process (T, CLK, CLR, PR)

VARIABLE TEMP:STD_LOGIC:='0';

begin

if (CLR = '1') then

TEMP := '0';

elsif( PR = '1') then

TEMP := '1';

elsif (rising_edge(CLK)) then if(T ='1') then

53

TEMP := not TEMP; end if; end if; Q<= NOT TEMP; Qnot<= TEMP; end process; end BHV;

Bước 4: Biên dịch chương trình

-Sau khi soạn thảo code xong ta lưu file lại sau đó ấn chuột phải vào tên file và ấn Compile để kiểm tra xem file lỗi hay không.

Bước 5: Tạo file Nguyên lý

-Chọn add new to project => Schematic. Sau đó ở cửa sổ shematic ta ấn chuột phải chọn Sheet Action => Create Sheet Symbol From Sheet HDL.

-Chọn file HDL đã lưu trước đó ta thu được Symbol và đồng thời ta sẽ lấy các Deepswit và LED trong thư viện của Altium. Sửa tên của các DW, LED và nối với các chân trên symbol.

-Từ thư viện FPGA NB2DSK01 Port-Plugin.InLib, lấy ra các nút bấm và các Led

Hình B 1. Thao tác lấy các nút bấm và Led

-Từ thư viện FPGA Generic.InLib, lấy ra bộ chia tần CDIV256

54

Hình B 2. Thao tác lấy bộ chia tần

Hình B 3. Sơ đồ nguyên lý hoàn chỉnh của T_FF

-Lưu file Schematic lại và chuột phải vào tên file Schematic ấn compile. Sau đó lưu

project và chuột phải vào project và ấn compile

Bước 6: Nạp KIT B.3 Đoạn mã VHDL

---CT chinh T_FF--- ---khai bao thu vien---

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

---thuc the---

entity T_FF is

Port ( T, CLK, CLR,PR : in STD_LOGIC;

Q, Qnot : out STD_LOGIC);

end T_FF;

---kien truc---

architecture BHV of T_FF is begin

process (T, CLK, CLR, PR)

VARIABLE TEMP:STD_LOGIC:='0';

begin

if (CLR = '1') then

TEMP := '0';

elsif( PR = '1') then

TEMP := '1';

elsif (rising_edge(CLK)) then if(T ='1') then

TEMP := not TEMP;

end if; end if; Q<= NOT TEMP; Qnot<= TEMP; end process; end BHV; ---Test T_FF--- library ieee;

use ieee.std_logic_1164.all;

---

entity testbench is end testbench;

---

architecture test of testbench is type sample is record

CLR : std_logic;

PR: std_logic;

clk: std_logic;

T: std_logic;

end record;

type sample_array is array (natural range <>) of sample;

constant test_data: sample_array := ( ('1','0','0','0'), ('0','1','1','0'), ('0','0','0','1'), ('0','0','1','1'), ('0','0','0','0'), ('0','0','1','0'), 56 download by : skknchat@gmail.com

('0','0','0','1'), ('0','0','1','1'), ('0','0','0','0'), ('0','0','1','0') ); signal clk,T,PR, CLR: std_logic;

signal Q, Qnot: std_logic;

begin

connect: entity work.T_FF

port map ( clk => clk, PR =>PR, CLR => CLR, T=>T, Q=>Q, QNOT => Qnot ); process begin

for i in test_data'range loop

CLR <=test_data(i).CLR; PR <=test_data(i).PR; clk <=test_data(i).clk; T <=test_data(i).T; wait for 10 ns; end loop; wait; end process; end test; 57 download by : skknchat@gmail.com

PHỤ LỤC C CODE MP3 DECODER ---MAIN C--- #include <stdlib.h> #include <stdio.h> #include <string.h> #include <time.h> #include <fs.h> #include <unistd.h> #include <sys/stat.h>

/ Application Stack interface

#include "swplatform.h" #include "form1.h" #define DIR_SEP #define FAILED() #define INPUT_SIZE #define ERROR_LIMIT 3 sdcard_t *drv_sdcard;

static int audio_samplerate;

static uint16_t *mp3_output_pos;

static int mp3_input_bufnr;

static int mp3_input_count;

static int mp3_output_count;

static int mp3_error_count;

/ these buffers must be allocated in external memory uint32_t mp3_input_buf[2][INPUT_SIZE / 4]; uint32_t mp3_output_buf[576];

static int mp3_open(const char *filename);

static int mp3_skip_id3(int infile); static

bool mp3_process(int infile); static bool

mp3_errorreport(void); static void init(

Một phần của tài liệu ĐỒ án môn học THIẾT kế MẠCH TÍCH hợp số thiết kế máy phát nhạc MP3, WAV sử dụng KIT phát triển NB2DSK01 và phần mềm hỗ trợ altium designer (Trang 55)