Tải bản đầy đủ (.pdf) (80 trang)

Nghiên cứu và triển khai hệ thồng nhúng trên kit Spartan-3E

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.35 MB, 80 trang )




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 MỞ ĐẦU

Để đơn giản trong việc thiết kế số, người thiết kế cần một ngôn ngữ chuẩn để mô
tả các mạch điện. Từ đó Hardware Description Languages (HDLs) hay còn gọi là ngôn
ngữ mô tả phần cứng ra đời. Ngôn ngữ mô tả phần cứng (HDL) là một loại ngôn ngữ
để thể hiện các thiết kế phần cứng thông qua bằng các phát biểu bằng lời.
Có 2 ngôn ngữ thông dụng: Verilog HDL và VHDL. Ngôn ngữ mô tả phần cứng
ngày càng thông dụng được đánh dấu sự phát triển mạnh mẽ của hệ thống nhúng.
Nắm được tầm quan trọng của vấn đề cùng với định hướng giáo viên hướng dẫn
đề ra nhóm chúng em tiến hành nghiên cứu và triển khai hệ thồng nhúng trên kit
Spartan-3E, với mong muốn là xây dựng được mô hình “Giám sát và điều khiển thiết
bị theo nhiệt độ phòng ” và lấy đó làm đề tài tốt nghiệp cho mình.
Nội dung đề tài bao gồm những phần sau:
Tìm hiểu về cấu trúc kít
Vi điều khiển nhúng Microblaze
Tìm hiểu về phần mềm EDK
Thiết kế ứng dụng nhúng trên kit
Mặc dù đã cố gắng để hoàn thành tập đề tài, nhưng không tránh khỏi những thiếu
sót mong quí thầy cô thông cảm. Rất mong được sự góp ý của thầy cô.


Nhóm sinh viên thực hiện
Nguyễn Ngọc Vũ
Võ Xuân Văn





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

........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................


CHỮ KÝ CỦA GIẢNG VIÊN HƢỚNG DẪN
……….,Ngày … Tháng …Năm 2010


Phạm Trần Bích Thuận




NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN
Giáo viên phản biện: ....................................................................................................
Nhóm SVTH: NGUYỄN NGỌC VŨ MSSV: 06055861
VÕ XUÂN VĂN MSSV: 06052721
Lớp: DHDT2B

........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................

CHỮ KÝ CỦA GIẢNG VIÊN PHẢN BIỆN
.…….,Ngày … Tháng …Năm 2010






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

2.3.1 Giới thiệu Phần mềm EDK:.......................................................................27
2.3.2 Các tập lệnh trong EDK: ............................................................................27
2.3.3 Cách tạo Project với phần mềm EDK: .....................................................32
Chƣơng 3: PHẦN MỀM VB VÀ GIAO DIỆN ĐIỀU KHIỂN ..................................39
3.1 GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH VB.NET:...............................39
3.2 LẬP TRÌNH GIAO TIẾP CỔNG NỐI TIẾP VB.NET: ...............................39



3.2.1 Tự động dò tìm cổng COM: ......................................................................39
3.2.2 Đóng mở cổng COM: .................................................................................39
3.2.3 Nhận dữ liệu từ cổng COM: ......................................................................40
3.2.4 Gửi dữ liệu ra cổng COM: .........................................................................40
3.2.5 Cài đặt tham số cho cổng COM: ...............................................................41
3.2.6 Viết chương trình: .......................................................................................41
Chƣơng 4: TRIỂN KHAI XÂY DỰNG HỆ THỐNG NHÚNG TRÊN KIT
SPARTANT 3E.....................................................................................................................53
4.1 SƠ ĐỒ TỔNG QUÁT VỀ ỨNG DỤNG NHÚNG: ......................................53
4.2 XÂY DỰNG CÁC CHIP NHÚNG: ................................................................54
4.2.1 Khối cảm biến nhiệt: ..................................................................................54
4.2.2 Khối điều khiển Camera: ...........................................................................58
4.3 XÂY DỰNG CÁC ỨNG DỤNG NHÚNG: ...................................................61
4.3.1 Sơ đồ giải thuật: ..........................................................................................61
KẾT LUẬN............................................................................................................................70
PHỤ LỤC CÁC TỪ VIẾT TẮC ......................................................................................71
DANH MỤC TÀI LIỆU THAM KHẢO.........................................................................72





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ình 4.1: Sơ đồ tổng quát về ứng dụng nhúng .................................................................53
Hình 4.2: Sơ đồ giải thuật Khối cảm biến nhiệt ................................................................54
Hình 4.3: Sơ đồ giải thuật khối điều khiển Camera...........................................................58
Hình 4.4: Sơ đồ giải thuật khối điều khiển camera giao tiếp vb ......................................61
Hình 4.5: Sơ đồ giải thuật khiển điều khiển nhiệt độ giao tiếp vb ..................................61
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 1
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
Chƣơng 1: GIỚI THIỆU VỀ CHIP FPGA VÀ NGÔN NGỮ ĐẶC TẢ
PHẦN CỨNG VHDL
1.1 KHÁI QUÁT VỀ CHIP FPGA:
1.1.1 Khái niệm:
FPGA (Field Programmable Gate Arrays) là một thiết bị bán dẫn bao gồm các
khối logic lập trình được gọi là "Logic Block", và các kết nối khả trình. Các khối logic
có thể được lập trình để thực hiện các chức năng của các khối logic cơ bản như AND,
XOR, hoặc các chức năng kết hợp phức tạp hơn như decoder hoặc các phép tính toán
học. Trong hầu hết các kiến trúc FPGA, các khối logic cũng bao gồm cả các phần tử
nhớ. Đó có thể là các Flip-Flop hoặc những bộ nhớ hoàn chỉnh hơn.
Các kết nối khả trình cho phép các khối logic có thể nối với nhau theo thiết kế
của người xây dựng hệ thống, giống như một bảng mạch khả trình. Một kiến trúc
khác tương tự nhưng đơn giản hơn FPGA, là CPLD (Complex Programmable Logic
Device). Thực chất đây là tiền thân của FPGA. Năm 1984, Ross Freeman, một đồng
sáng lập của Xilinx đã phát minh ra FPGA. FPGA và CPLD đều bao gồm một số
lượng khá lớn các phần tử logic khả trình. Mật độ cổng logic (Logic Gate) của CPLD
nằm trong khoảng từ vài nghìn cho đến 10 nghìn cổng. Trong khi đó FPGA thông
thường chứa từ 10 nghìn cho đến vài triệu cổng.
Khác biệt cơ bản giữa FPGA và CPLD là ở kiến trúc của chúng. CPLD có một
kiến trúc bị giới hạn trong một hoặc một vài dãy logic khả trình cùng với một lượng
nhỏ thanh ghi định thời. Do đó nó kém linh hoạt hơn, nhưng lại có ưu điểm là khả
năng dự đoán trễ lớn hơn và tỉ lệ logic-kết nối cao hơn. Ngược lại, trong kiến trúc của
FPGA lại có sự trội hơn về số lượng kết nối. Điều này làm cho nó trở nên linh hoạt

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

cao (Very high speed integrated circuit Hardware Description Language). Đây là một
ngôn ngữ dùng để mô tả các hệ thống điện tử số, bao gồm những đặc điểm của các
ngôn ngữ lập trình thông thường như Pascal, C, hay của các ngôn ngữ mô tả logic như
ABEL – HDL. VHDL cũng bao gồm cả những đặc điểm quản lí thiết kế, và những đặc
điểm mà cho phép nó mô hình hóa một cách chính xác các biến cố xảy ra. VHDL ra
đời nhằm hoàn thiện một số yêu cầu về quy trình thiết kế, hỗ trợ cho sự phát triển,
hiệu chỉnh, tổng hợp và kiểm tra của việc thiết kế phần cứng, cũng như hỗ trợ cho sự
liên kết dữ liệu trong thiết kế, và cho sự duy trì, thay đổi, cải tiến phần cứng. Thứ nhất,
nó cho phép mô tả cấu trúc của một thiết kế, đó là cách thức phân chia ra thành những
cấp độ thấp hơn, và các mức chi tiết này liên kết với nhau theo phương thức nào. Thứ
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 3
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
hai, nó cho phép đặc tả theo chức năng những thiết kế được viết theo bất kì dạng ngôn
ngữ lập trình thông thường nào. Thứ ba, nó cho phép thiết kế được mô phỏng lại,
nhằm kiểm tra hoạt động của sản phẩm trước khi sản xuất.
1.2.2 Cấu trúc một file VHDL:

Hình 1.1: Cấu trúc một file VHDL
Bao gồm ba phần nhƣ sau:
Phẩn khai báo thƣ viện (LIBRARY declarations):
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
Thực thể (Entity):
entity NAME_OF_ENTITY is [ generic generic_declarations);]
port (signal_names: mode type;
signal_names: mode type;
signal_names: mode type);
end [NAME_OF_ENTITY] ;

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.

1.2.3 Cấu trúc từ vựng:
Tên định nghĩa: là những từ được người dùng sử dụng để đặc tên cho những đối
tượng, khi sử dụng một tên định nghĩa cần tuân theo qui tắc cơ bản sau:
Chỉ sử dụng các ký tự :A tới Z hoặc a tới z hoặc 0 tới 9 và kí tự gạch dưới ( _ )
Kí tự đầu tiên phải là một chữ cái và kí tự cuối cùng không được là kí tự ( _ )
Một tên định nghĩa không thể bao gồm hai dấu ( _ ) liên tiếp
Tên định nghĩa trong ngôn ngữ VHDL không phân biệt chữ hoa hay chữ thường và
không qui định chiều dài
Ví dụ:
Tên định nghĩa hợp lệ X10, x_10, My_gate1.
Tên định nghĩa không hợp lệ: _X10, x_@10, My-gate1.
Từ khóa (keywords ): là những tên định nghĩa được hệ thống sử dụng cho những
cấu trúc cụ thể. Từ khóa không thể trùng với tên định nghĩa của tín hiệu hay của đối
tượng. Sau đây là một số từ khóa thường gặp in, out, or, end, port map, and..
Số : mặc định là chữ số thập phân, trong VHDL cho phép dùng số nguyên và số
thực. Số nguyên bao gồm tất cả các số không có dấu chấm thập phân, số thực là những
số bao gồm cả những số có dấu chấm thập phân
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 5
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
Ví dụ :
Số nguyên: 12 10 25E3 12e+6
Số thực: 1.2 10 2.5E3 1.2e+6
Biểu diển số theo những hệ khác ta tuân theo qui tắc sau hệ số#số#
Hệ nhị phân : 2#10010# (là con số “18” trong hệ thập phân )
Hệ thập lục phân : 16#12#
Hệ bát phân 8: 8#22#
Ký tự sử dụng trong VHDL phải được đặt trong dấu nháy đơn ( „‟ ) : „B‟. „c‟,
Chuỗi ký tự phải đặt trong dấu nháy kép “ ” “string“
Chuỗi bít: khi biểu diển phải tuân theo qui tắc nếu là số nhị phân phải có “B‟
hoặc “b” đứng trước chuỗi bít tương tụ ta có đối với số octal là “O” hoặc “o”, đối với

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);

1.2.4.3 Tín hiệu( signal ):
Một tín hiệu lưu trữ một danh sách giá trị bao gồm các giá trị hiện hành và tập
các giá trị tương lai có thể có, sẽ xuất hiện trên tín hiệu. Tín hiệu miêu tả dây và có thể
kết nối các thành phần linh kiện. khai báo một tín hiệu như sau:
signal list_of_signal_names: type [:= initial value];
Ví dụ:
signal SUM, CARRY: std_logic;
signal CLOCK: bit;
signal TRIGGER: integer :=0;
signal DATA_BUS: bit_vector (0 to 7);
signal VALUE: integer range 0 to 100;
1.2.5 Ki ểu dữ liệu:
Mỗi đối tượng dữ liệu có một kiểu tương ứng của nó, định dạng giá trị và các
phép toán mà đối tượng có thể có.
1.2.5.1 Ki ểu dữ liệu liệt kê:
Chứa một tập các giá trị được người sử dụng định nghĩa. Mỗi một giá trị có thể là
một định danh (identifier). Cú pháp khai báo kiểu liệt kê là:
type type_name is (identifier list or character literal);
Ví dụ:
type my_3values is („0‟, „1‟, „Z‟);
type PC_OPER is (load, store, add, sub, div, mult, shiftl, shiftr);
type hex_digit is („0‟, „1‟, „2‟, „3‟, „4‟, „5‟, „6‟, „7‟, 8‟, „9‟, „A‟, „B‟, „C‟,
„D‟, „E‟, „F‟);
type state_type is (S0, S1, S2, S3);
Kiểu liệt kê phải được định nghĩa trong phần khai báo kiến trúc hoặc trong khai
báo gói
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 7
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
1.2.5.2 Ki ểu dữ liệu nguyên:
Để định nghĩa một tầm các số nguyên từ (2

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

end record;
Ví dụ:
type MY_MODULE is
record
RISE_TIME :time;
FALL_TIME : time;
SIZE : integer range 0 to 200;
DATA : bit_vector (15 downto 0);
end record;
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 8
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
Toán tử:
VHDL hỗ trợ các lớp toán tử khác nhau, được thực thi trên tín hiệu, biến, hằng
số. các lớp toán tử được miêu tả bên dưới:
Toán tử logic: Bao gồm : and, or, nand, no, xor, xnor được định nghĩa cho kiểu bit
boolean, std_logic và std_ulogic và các vector của chúng
Chú ý: X nand Y nand Z sẽ lỗi cấu trúc bạn nên viết (X nand Y) nand Z.
Toán tử quan hệ:
Toán tử Mô tả Kiểu toán hạng Kiểu kết quả
= Bằng Kiểu bất kỳ Boolean
/= Khác Kiểu bất kỳ Boolean
< Nhỏ hơn Kiểu vô hướng và dải
rời rạc
Boolean
<= Nhỏ hơn bằng Kiểu vô hướng và dải
rời rạc
Boolean
> Lớn hơn Kiểu vô hướng và dải
rời rạc
Boolean

>= 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 + -

6. . toán tử nhân * / Mod rem
7. . toán tử tạp ** abs Not
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 9
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
sra Dịch phải số học Như trên Giống như toán hạng
bên trái
rol Xoay trái Như trên Giống như toán hạng
bên trái
ror Xoay phải Như trên Giống như toán hạng
bên trái
Toán tử cộng:
Dùng để biểu diễn cho các phép toán số học(cộng, trừ) trên các toán hạng thuộc
kiểu số.
Toán tử Mô tả Toán hạng trái Toán hạng phải Kiểu kết quả
+ Cộng Kiểu số Kiểu số Kiểu số
- Trừ Kiểu số Kiểu số Kiểu số
& Nối Kiểu dải hoặc
phần tử
Kiểu dải hoặc phần
tử
Kiểu dải hoặc phần
tử
Toán dấu:
Gồm các toán tử cộng và trừ được sử dụng để xác định kiểu dấu của một số
Toán tử Mô tả Kiểu toán hạng Kiểu kết quả
+ Đồng nhất Kiểu số Kiểu số
- Phủ định Kiểu số Kiểu số
Toán tử Nhân:
Toán tử Mô tả Toán hạng trái Toán hạng phải Kiểu kết quả
* Nhân Số nguyên hoặc 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

Dấu chấm động Kiểu số nguyên Cùng kiểu toán
hạng trái
abs Giá trị tuyệt
đối
Kiểu số Cùng kiểu
not Phủ định
logic
Kiểu bít hoặc luận lý Cùng kiểu
1.2.6 Các lệnh tuần tự:
1.2.6.1 Lệnh Process:
Là một cấu trúc chính trong kiểu behavioral cho phép bạn sử dụng các lệnh tuần
tự để mô tả hành vi của hệ thống theo thời gian. Cú pháp như sau:
[process_label:] process [ (sensitivity_list) ] [is]
[ process_declarations]
begin
list of sequential statements such as:
signal assignments
variable assignments
case statement
exit statement
if statement
loop statement
next statement
null statement
procedure call
wait statement
end process [process_label];
Ví dụ:
Viết chương trình tạo D flip-flop tích cực cạnh lên với tín hiệu clear bất đồng bộ.
library ieee;

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ả

các trường hợp làm phát biểu luận lí cho kết quả đúng sai.
Khi cho kết quả đúng, chuỗi các phát biểu theo sau được thực thi, nếu kết quả sai
chuỗi phát biểu sau mệnh đề else được thực thi.
1.2.6.1 Phát biểu Case:
Lệnh case thực thi một trong một vài phát biểu tuần tự, dựa vào giá trị của một
biểu thức đơn. Cú pháp là:
case expression is
when choices =>
sequential statements
when choices =>
sequential statements
-- branches are allowed
[when others => sequential statements ]
end case;
Phát biểu case gồm từ khóa case được theo sau bởi một biểu thức và từ khóa is
biểu thức trả về một giá trị tương thích với một trong các phần phát biểu when hoặc
tương thích với mệnh đề other

Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 12
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
Ví dụ: Cấu trúc một con mux 4 sang 1
entity MUX_4_1 is
port ( SEL: in std_logic_vector(2 downto 1);
A, B, C, D: in std_logic;
Z: out std_logic);
end MUX_4_1;
architecture behav_MUX41 of MUX_4_1 is
begin
PR_MUX: process (SEL, A, B, C, D)
begin

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];

end loop[ loop_label ];
Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 13
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
1.2.6.3 Phát biểu Next:
Phát biểu Next cho phép người lập trình dừng việc xử lí thao tác lặp này và nhảy
sang thao tác lặp kế tiếp, cú pháp là:
next [label] [when condition];
Phát biểu next được thực thi, việc xử lí được dừng lại tại điểm hiện tại và chuyển
đến nơi bắt đầu của phát biểu loop. Từ khóa when là tùy chọn
Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 14
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn
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
2.1 CẤU TRÚC KIT SPARTANT–3E CỦA XILINX:
2.1.1 Các thành phần chính của kit SPARTANT – 3E:
Xilinx XC3S500E Spartan-3E FPGA là con chính của KIT
- Số chân I/O sử dụng lên đến 232.
- 320 chân FBGA package.
- Trên 10,000 cell logic.
Xilinx 4 Mbit Platform Flash configuration PROM
Xilinx 64-macrocell XC2C64A CoolRunner CPLD
64 MByte (512 Mbit) of DDR SDRAM, x16 data interface, 100+ MHz
16 MByte (128 Mbit) of parallel NOR Flash (Intel StrataFlash)
16 Mbits of SPI serial Flash (STMicro)
2-line, 16-character LCD
PS/2 mouse or keyboard port
VGA display port
10/100 Ethernet PHY (requires Ethernet MAC in FPGA)
Two 9-pin RS-232 ports (DTE- and DCE-style)
On-board USB-based FPGA/CPLD download/debug interface

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


Hình 2.2: Khối SW trên kit Spartan 3e
Nút nhấn: theo thứ tự là BTN_EAST (phải), BTN_NORTH (trên)
BTN_SOUTH (dưới), BTN_WEST (trái) kết nối tương ứng với các chân H13, K14,
V17, D18 , là các chân input của FPGA. Khi nhấn các nút trên thì chân tương ứng với
nó sẽ lên mức cao. Khi không nhấn, cần dùng 1 điện trở nội pull-down để tạo mức
thấp.
Nút Encoder : có 3 ngõ ra: ROT_A, ROT_B, ROT_CENTER : nối với chân
K18, G18, V16 của FPGA. Nút Encoder có hai chức năng là nhấn và xoay.Như nút
nhấn: nhấn xuống sẽ đưa chân V16 của FPGA lên mức cao. Xoay phải hay trái sẽ tạo
xung encoder ngõ ra tương ứng . Cả 3 chân ngõ ra của encoder điều cần dùng điện trở
pull-up nội.

Hình 2.3: Dạng xung Encoder
Tám Led (góc dưới cùng bên phải) LD0, …, LD7 nối với 8 chân tương ứng F9,
E9, D11, C11, F11, E11, E12,F12 của FPGA. Đầu còn lại của các Led nối với GND
thông qua điện trở 290 ohm.
Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 17
GVHD: Phạm Trần Bích Thuận SVTH: Nguyễn Ngọc Vũ – Võ Xuân Văn

Hình 2.4: Khối Led trên kit Spartan 3e
2.1.4 Khối LCD:
Trên kit Spartan-3E Starter có hổ trợ một LDC với 2 dòng , 16 ký tự được ghép
nối với chip FPGA như sơ đồ sau:

Hình 2.5: Khối LCD trên kit Spartan 3e
Đối với LCD có hai chế độ hoạt động là tám bit dữ liệu hoặc bốn bit dữ liệu. Ở
đây ta thấy trên kít ghép mối LCD hoạt động ở chế độ bốn bit dữ liệu. Quá trình hoạt
động được mô tả như sau:
Chân RS = 0 thanh ghi lệnh được chọn cho phép chúng ta gửi một lệnh như xóa

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.

×