BỘ CÔNG THƢƠNG
TRƢỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HCM
KHOA CÔNG NGHỆ ĐIỆN TỬ
ĐỒ ÁN TỐT NGHIỆP
Tên đề tài :
Giảng viên hƣớng dẫn: Th.S PHẠM TRẦN BÍCH THUẬN
Sinh viên thực hiện: NGUYỄN NGỌC VŨ
VÕ XUÂN VĂN
Lớp: DHDT2B TP. Hồ Chí Minh, tháng 7 năm 2010
LỜI CẢM ƠN
Chúng em xin gửi lời cảm ơn đến các thầy cô trong khoa Công Nghệ Điện Tử
trường đại học Công Nghiệp Thành Phố Hồ Chí Minh, đã tạo điều kiện cho mượn
phòng thí nghiệm và giúp đỡ động viên để em có thể hoàn thành được đề tài này.
Chúng em xin chân thành cảm ơn Cô Phạm Trần Bích Thuận, đã hướng dẫn tận
tình và tạo điều kiện cho chúng em trong suốt thời gian làm đề tài.
Nhóm sinh viên thực hiện
Nguyễn Ngọc Vũ
Võ Xuân Văn
NHẬN XÉT CỦA GIẢNG VIÊN HƢỚNG DẪN
Giáo viên hướng dẫn: PHẠM TRẦN BÍCH THUẬN
Nhóm SVTH: NGUYỄN NGỌC VŨ MSSV: 06055861
VÕ XUÂN VĂN MSSV: 06052721
Lớp: DHDT2B
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
MỤC LỤC
Trang
Chƣơng 1: GIỚI THIỆU VỀ CHIP FPGA VÀ NGÔN NGỮ ĐẶC TẢ PHẦN
CỨNG VHDL ........................................................................................................................1
1.1 KHÁI QUÁT VỀ CHIP FPGA: .........................................................................1
1.1.1 Khái niệm: .....................................................................................................1
1.1.2 Ứng dụng: ......................................................................................................2
1.2 NGÔN NGỮ ĐẶC TẢ PHẦN CỨNG VHDL: ..............................................2
1.2.1 Giới thiệu: ......................................................................................................2
1.2.2 Cấu trúc một file VHDL: .............................................................................3
1.2.3 Cấu trúc từ vựng: ..........................................................................................4
1.2.4 Các đối tượng dữ liệu trong VHDL: ..........................................................5
1.2.5 Kiểu dữ liệu: ..................................................................................................6
1.2.6 Các lệnh tuần tự: .........................................................................................10
Chƣơng 2: CẤU TRÚC KIT SPARTANT-3E, VI ĐIỀU KHIỂN MICROBLAZE
VÀ PHẦN MỀM EDK CỦA HÃNG XILINK ..............................................................14
2.1 CẤU TRÚC KIT SPARTANT–3E CỦA XILINX: ......................................14
2.1.1 Các thành phần chính của kit SPARTANT – 3E:...................................14
2.1.2 Bộ tạo xung clock cho FPGA: ..................................................................15
2.1.3 Các nút chuyển nút nhấn và Led:..............................................................15
2.1.4 Khối LCD: ...................................................................................................17
2.1.5 Bộ biến đổi tương tự sang số:....................................................................18
2.2 VI ĐIỀU KHIỂN NHÚNG MICROBLAZE:.................................................23
2.2.1 Giới thiệu về vi điều khiển Microblaze: ..................................................23
2.2.2 Kiến trúc cơ bản của MicrroBlaze:...........................................................24
2.2.3 Kiến trúc Pipeline của vi điều khiển MicroBlaze: ..................................25
2.2.4 Giao tiếp tính hiệu trong MicroBlaze: .....................................................25
2.3 PHẦN MỀM EDK: ............................................................................................27
DANH MỤC CÁC BẢNG,SƠ ĐỒ, HÌNH
Hình 1.1: Cấu trúc một file VHDL ........................................................................................3
Hình 2.1: Bộ tạo xung trên kít Spartan 3e ..........................................................................15
Hình 2.2: Khối SW trên kit Spartan 3e ...............................................................................16
Hình 2.3: Dạng xung Encoder ..............................................................................................16
Hình 2.4: Khối Led trên kit Spartan 3e ...............................................................................17
Hình 2.5: Khối LCD trên kit Spartan 3e .............................................................................17
Hình 2.4: Khối ADC trên kit Spartan 3e .............................................................................18
Hình 2.5: Sơ Đồ chân khối ADC .........................................................................................19
Hình 2.6: Tám bit ra LTC6912.............................................................................................20
Hình 2.7: Cấu trúc IC LTC6912 ..........................................................................................21
Hình 2.8: Giản đồ thời gian ghi nhận dữ liệu .....................................................................22
Hình 2.9: Giản đồ giao tiếp LTC1407A..............................................................................23
Hình 2.10: Kiến trúc cơ bản của vi điều khiển MicroBlaze .............................................24
Hình 2.11: Kiến trúc Pipeline của vi điều khiển MicroBlaze...........................................25
Hình 2.12: một hệ thống Bus điển hình ..............................................................................26
Hình 2.10: Cửa sổ XPS .........................................................................................................32
Hình 2.11: Hộp thoại Create New XPS Project .................................................................33
Hình 2.12: Hộp thoại Select Board ......................................................................................34
Hình 2.13: Hộp thoại Select Processor................................................................................34
Hình 2.14: Hộp thoại Configure MicroBlaze Processor ...................................................35
Hình 2.15: Hộp thoại Configure IO Interfaces ...................................................................35
Hình 2.16: Hộp thoại Software Setup..................................................................................36
Hình 2.17: Hộp thoại Configure Memory Test Application ............................................36
Hình 2.18: Hộp thoại System Created .................................................................................37
Hình 2.19: Cửa sổ System Assembly View.......................................................................37
Hình 2.20: Block Diagram View of the Generated Project ..............................................38
Hình 3.1: Giao diện điều khiển và giám sát trên máy tính ...............................................42
Hình 3.2: Giao diện form setting Com ................................................................................52
hơn (về số lượng thiết kế được thực thi bên trong) nhưng cũng đồng nghĩa với việc
phức tạp hơn trong quá trình thiết kế.
Một khác biệt đáng chú ý nữa giữa FPGA và CPLD là: hầu hết các FPGA hiện
nay đều bao có các phần tử chức năng tích hợp cao hơn (như bộ cộng, nhân tích hợp),
và bộ nhớ tích hợp. Một số kiến trúc FPGA hiện nay còn có thể cho phép cấu hình lại
từng phần (partial re-configuration). Có nghĩa là cho phép một phần của thiết kế được
cấu hình lại trong khi những thiết kế khác vẫn tiếp tục hoạt động.
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 2
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
Một ưu điểm khác của FPGA, là người thiết kế có thể tích hợp vào đó các bộ xử
lý mềm (soft processor) hay vi xử lý nhúng (embedded processor). Các vi xử lý này có
thể được thiết kế như các khối logic thông thường, mà mã nguồn do các hãng cung
cấp, thực thi các lệnh theo chương trình được nạp riêng biệt, và có các ngoại vi được
thiết kế linh động (khối giao tiếp UART, vào/ra đa chức năng GPIO, ethernet...). Các
vi xử lý này cũng có thể được lập trình lại (re-configurable computing) ngay trong khi
đang chạy.
1.1.2 Ứng dụng:
FPGA được ứng dụng điển hình trong các lĩnh vực như: xử lý tín hiệu số, xử lý
ảnh, thị giác máy, nhận dạng giọng nói, mã hóa, mô phỏng (emulation)...FPGA đặc
biệt mạnh trong các lĩnh vực hoặc ứng dụng mà kiến trúc của nó yê u cầu một lượng
rất lớn xử lý song song, đặc biệt là mã hóa và giải mã. FPGA cũng được sử dụng trong
những ứng dụng cần thực thi các thuật toán như FFT, nhân chập (convolution), thay
thế cho vi xử lý.
Hiện nay công nghệ FPGA đang được sản xuất và hỗ trợ phần mềm bởi các
hãng như: Xilinx, Altera, Actel, Atmel... Trong đó Xilinx và Altera là 2 hãng hàng
đầu. Xilinx cung cấp phần mềm miễn phí trên nền Windows, Linux, trong khi Altera
cung cấp những công cụ miễn phí trên nền Windows, Linux, Solaris.
1.2 NGÔN NGỮ ĐẶC TẢ PHẦN CỨNG VHDL:
1.2.1 Giới thiệu:
VHDL là tên viết tắt của ngôn ngữ đặc tả phần cứng mạch tích hợp ở tốc độ rất
Một entity bắt đầu bằng từ khóa entity và sau đó là tên của nó và từ khóa is, tiếp
theo là khai báo các port sử dụng từ khóa port. Một entity luôn kết thúc bằng từ khóa
end [tên entity]
Khai báo entity mô tả giao diện của một thực thẻ thiết kế, qua đó thực thể này
truyền thông với các thực thể khác trong cùng một môi trường. Giao diện điển hình
bao gồm tất cả các tín hiệu ngõ vào(input) và ngõ ra(output) và hai chiều
(bidirectional) được định nghĩa trong phần khai báo port, các thông số của mô hình
được định nghĩa bằng cách sử dụng các khai báo chung (generic). Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 4
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
Kiến trúc (Architecture):
architecture architecture_name of NAME_OF_ENTITY is
-- Declarations
-- components declarations
-- signal declarations
-- constant declarations
-- function declarations
-- procedure declarations
-- type declarations
begin
-- Statements
end architecture_name;
Một thực thể thiết kế bao gồm hai đơn vị thiết kế; một cặp entity-architecture.
Entity cung cấp thông tin port của một đơn vị thiết kế cụ thể, trong khi architecture
cung cấp mô tả chức năng của một thực thể thiết kế. Thực thể thiết kế này có thể sử
dụng kiểu dữ liệu chung chứa trong một package.
Chứa mã VHDL, mà mô tả sự hoạt động (chức năng) của mạch.
số hexagonal là “X” hoặc “x”
Ví dụ:
Binary: B”1100_1001”, b”1001011”
Hexagonal: X”C9”, X”4b”
Octal: O”311”, o”113”
1.2.4 Các đối tƣợng dữ liệu trong VHDL:
Bao gồm ba đối tượng dưz liệu chính: tín hiệu - signal, biến - variable, hằng -
constant, mỗi đối tượng được khai báo dựa vào từ khóa tương ứng.
1.2.4.1 Hằng (constant):
Một hằng lưu dữ một giá trị cụ thể có kiểu dữ liệu được chỉ rõ. Một hằng được
khai báo như sau:
constant list_of_name_of_constant: type [ := initial value];
Một khi đã khai báo giá trị của một hằng không thể thay đổi.
Ví dụ:
constant DATA_BUS: integer:= 16;
1.2.4.2 Biến: (variable):
Một biến lưu dữ một giá trị bất kỳ có kiểu được chỉ rõ, thường được sử dụng để
lưu trữ giá trị tạm thời trong một process. Không giông như hằng giá trị của biến có
thể bị thay đổi trong quá trình miêu tả thiết kế. Khác với tín hiệu, biến không miêu tả
kết nối hoặc các phần tử của bộ nhớ. Không giống với tín hiệu các giá trị được định
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 6
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
thời, tất cả các phép gán cho các biến xảy ra tức thời.Biến thường được sử dụng trong
tính toán. Biến được khai báo như sau
variable list_of_variable_names: type [ := initial value] ;
ví dụ:
variable CNTR_BIT: bit :=0;
variable VAR1: boolean :=FALSE;
variable SUM: integer range 0 to 256 :=16;
variable STS_BIT: bit_vector (7 downto 0);
-31
+1) đến (2
31
-1) cú pháp khai báo
type type_name _identifier is range integer_range;
Ví dụ:
type small_int is range 0 to 1024;
type my_word_length is range 31 downto 0;
subtype data_word is my_word_length range 7 downto 0;
Một kiểu con (subtype) là một định dạng con của kiểu được khai báo trước đó.
Ví dụ:
Cuối khai báo một kiểu con, kiểu data_word là kiểu con của kiểu
my_word_length đã được khai báo trước đó.
1.2.5.3 Ki ểu dữ liệu hỗn hợp:
Được sử dụng để định nghĩa các tập giá trị (phần tử ), các tập phần tử này tạo
thành dải (Array) hoặc bản ghi (Record)
Kiểu dải: thường hữu dụng đối với việc mô hình các cấu trúc tuyến tính như
Ram, Rom. Những phần tử của một dải có thể có bất kỳ kiểu nào miễn là các phần
phải có cùng một kiểu, cú pháp khai báo như sau:
type array_name is array (indexing scheme) of element_type;
Ví dụ:
type MY_WORD is array (15 downto 0) of std_logic;
type YOUR_WORD is array (0 to 15) of std_logic;
type VAR is array (0 to 7) of integer;
type STD_LOGIC_1D is array (std_ulogic) of std_logic
Kiểu bản ghi: thường hữu dụng với việc mô hình các gói dữ liệu. một bản ghi có
thể chứa các giá trị cùng kiểu hoặc khác kiểu, cú pháp khai báo là:
type name is
record
identifier :subtype_indication;
>= Lớn hơn bằng Kiểu vô hướng và dải
rời rạc
Boolean
Chú ý: toán tử “<= “ ( nhỏ hơn bằng ) giống với toán tử gán được sử dụng trong phép
gán giá trị cho tín hiệu hoặc cho biến.
Toán tử dịch
Toán tử Mô tả Kiểu toán hạng Kiểu kết quả
sll Dịch trái logic (thêm
vào các bit 0 phía bên
phải)
Toán hạng trái: kiểu
mảng một chiều với
các phần tử là bit hoặc
Boolean; Toán hạng
phải: integer
Giống như toán hạng
bên trái
srl Dịch phải logic (thêm
vào các bit 0 phía bên
trái)
Như trên Giống như toán hạng
bên trái
sla Dịch trái số học Như trên Giống như toán hạng
bên trái
Lớp
1. toán tử Logical And or Nand nor xor xnor
2. toán tử quan hệ = /= < <= > >=
3. toán tử dịch Sll srl Sla sra rol ror
4. . toán tử cộng + = &
5. . toán tử dấu + -
chấm động
Cùng kiểu Cùng kiểu
Kiểu physical Số nguyên hoặc
số thực
Cùng kiểu toán
hạng trái
Số nguyên hoặc số
thực
Kiểu physical Cùng kiểu toán
hạng phải
/ Chia Số nguyên hoặc dấu
chấm động
Số nguyên hoặc
dấu chấm động
Cùng Kiểu
Kiểu physical Số nguyên hoặc
số thực
cùng kiểu toán trái
Kiểu physical Cùng kiểu Số nguyên
mod Modulus Số Nguyên Cùng Kiểu
rem Phần dư Số Nguyên Cùng Kiểu
Chú ý:
A rem B = A –(A/B)*B (trong đó A/B là số nguyên)
A mod B = A – B * N (trong đó N là số nguyên)
Toán tử tạp:
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 10
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
Toán tử Mô tả Toán hạng trái Toán hạng phải Kiểu kết quả
** Hàm mũ Kiểu số nguyên Kiểu số nguyên Cùng Kiểu
toán hạn trái
use ieee.std_logic_1164.all;
entity DFF_CLEAR is
port (CLK, CLEAR, D : in std_logic;
Q : out std_logic);
end DFF_CLEAR;
architecture BEHAV_DFF of DFF_CLEAR is
begin
DFF_PROCESS: process (CLK, CLEAR)
begin
if (CLEAR = „1‟) then
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 11
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
Q <= „0‟;
elsif (CLK‟event and CLK = „1‟) then
Q <= D;
end if;
end process;
end BEHAV_DFF;
1.2.6.2 Lệnh if:
Cấu trúc if thực lệnh tuần tự,có cú pháp như sau:
if condition then
sequential statements
[elsif condition then
sequential statements ]
[else
sequential statements ]
end if;
Phát biểu if bắt đầu bằng từ khóa if và kết thúc bằng từ khóa end if. có hai mệnh
đề tùy chọn: Mệnh đề elseif và else. Mệnh đề elseif có thể sử dụng lặp lại nhiều lần
còn mệnh đề else là tùy chọn và chỉ sử dụng một lần. Cấu trúc điều kiện trong tất cả
case SEL is
when “00” => Z <= A;
when “01” => Z <= B;
when “10” => Z <= C;
when “11” => Z <= D;
when others => Z <= „X‟;
end case;
end process PR_MUX;
end behav_MUX41;
1.2.6.2 Lệnh lặp(Loop):
Một phát biểu Loop được sử dụng khi càn lặp lại thao tác. Cú pháp
[ loop_label :]iteration_scheme loop
sequential statements
[next [label] [when condition];
[exit [label] [when condition];
end loop [loop_label];
Phát biểu loop có một nhãn tùy chọn, nhãn này có thể sử dụng để nhận biết phát
biểu loop. Phát biểu có một iteration_scheme tùy chọn xác định phát biểu loop đang
được lựa chọn. Có hai loại phát biểu loop:
Phát biểu while-Loop.cú pháp là:
[ loop_label :] while condition loop
sequential statements
[next [label] [when condition];
[exit [label] [when condition];
end loop[ loop_label ];
Phát biểu for-loop. Cú pháp là:
[ loop_label :] for identifier in range loop
sequential statement
[next [label] [when condition];
[exit [label] [when condition];
50 MHz clock oscillator
SHA-1 1-wire serial EEPROM for bitstream copy protection
Hirose FX2 expansion connector
Three Digilent 6-pin expansion connectors
Four-output, SPI-based Digital-to-Analog Converter (DAC)
Two-input, SPI-based Analog-to-Digital Converter (ADC) with programmable-
gain
pre-amplifier
Rotary-encoder with push-button shaft
Eight discrete LEDs
Four slide switches
Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 15
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
2.1.2 Bộ tạo xung clock cho FPGA:
Có ba nguồn cấp xung clock cho chip FPGA: dùng thạch anh 50MH có sẵn trên
board, ngỏ ra của thạch anh này nối với chân C9 của chip FPGA. Cấp xung thông qua
đế cắm tám chân trên board, ngỏ ra được nối với chân B8 của chip FPGA.Cấp xung
clock thông qua chân cắm SMA, chân cắm này chỉ nhận clock từ máy phát clock,
không dùngtrực tiếp thạch anh được ngõ ra clock nối với chân A10 của chip. Hình 2.1: Bộ tạo xung trên kít Spartan 3e
2.1.3 Các nút chuyển nút nhấn và Led:
Nút chuyển: theo thứ tự là : SW0, SW1, SW2, SW3 kết nối với chân tương ứng
của chip là: L13, L14, H18, N17 của chip FPGA.
Chú ý: đây là các chân ngõ vào của FPGA. Trên Chip chỉ có 232 chân I/O tùy
chọn. Khi các nút SWx (x =0,3) ON (bật lên) thì chân FPGA tương ứng ở mức ca
(3.3V) và ngược lại.
Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 16
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
màn hình, đưa con trỏ về đầu dòng…, khi chân RS = 1 thanh ghi dữ liệu được chọn
cho phép chúng ta gửi dữ liệu lên màn hình LCD.
Chân R/W =1 cho phép chúng ta đọc thông tin từ LCD, R/W =0 cho phép chúng
ghi thông tin lên LCD.