Nghiên cứu và triển khai hệ thồng nhúng trên kit Spartan-3E
Trang 1BỘ CÔNG THƯƠNG
KHOA CÔNG NGHỆ ĐIỆN TỬ
Trang 2LỜ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
Trang 3LỜ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
Trang 4NHẬ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
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
Trang 5NHẬ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
Trang 6MỤC LỤC
Trang
Chương 1: GIỚI THIỆU VỀ CHIP FPGA VÀ NGÔN NGỮ ĐẶC TẢ P HẦ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Ả P HẦ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 SP ARTANT-3E, VI ĐIỀU KHIỂN MICROB LAZE 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À G IAO 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
Trang 73.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 SP ARTANT 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
Trang 8DANH 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
Trang 9Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 1
Chương 1: GIỚI THIỆU VỀ CHIP FPGA VÀ NGÔN NGỮ ĐẶC TẢ
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
Trang 10Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 2
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 VH DL 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ứ
Trang 11Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 3
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
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)
Trang 12Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 4
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
Trang 13Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 5
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 )
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
Trang 14Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 6
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
Trang 15Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 7
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 (231
-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 đó
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à:
SIZE : integer range 0 to 200;
DATA : bit_vector (15 downto 0);
end record;
Trang 16Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 8
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
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
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
Trang 17Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 9
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ả
& Nối Kiểu dải hoặc
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ử Nhân:
Toán tử Mô tả Toán hạng trái Toán hạng phải Kiểu kết quả
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
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:
Trang 18Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 10
toán hạn trái Dấu chấm động Kiểu số nguyên Cùng kiểu toán
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]
Trang 19Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 11
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
branches are allowed
[w hen 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
Trang 20Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 12
Ví dụ: Cấu trúc một con mux 4 sang 1
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] [w hen 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 ];
Trang 21Chương 1: Giới thiệu về chip FPGA và ngôn ngữ đặc tả phần cứng VHDL 13
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] [w hen 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
Trang 22Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 14
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 SP ARTANT–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 gain
pre-amplifier
Rotary-encoder with push-button shaft
Eight discrete LEDs
Four slide switches
Trang 23Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 15
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
Trang 24Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 16
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
Trang 25Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 17
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
Trang 26Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 18
Chân cho phép E được sử dụng bởi LCD để chốt thông tin hiện hữu trên chân dữ liệu của nó Khi dữ liệu được cấp đến chân dữ liệu thì một xung mức cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liêu Xung này phải rộng tối thiểu là 450ns
2.1.5 Bộ biến đổi tương tự sang số:
6 Header kết nối đến ADC
LTC1407A_ 2 Kênh A/D
SPI_SCK : U16 AD_CONV : P11 SPI_MOSO : N10
LTC6912_2 Kênh Amp
SPI_MOSI : T4 AMP_CS : N7 SPI_SCK : U16 AMP_SHDN : P7 AMP_DOUT : A18
Hình 2.4: Khối ADC trên kit Spartan 3e
Kit Spartan_3E cung cấp hai kênh tín hiệu Analog, vi mạch LTC1407A là loại biến đổi tưong tự sang số gồm hai bộ biến đổi riêng biệt, vi mạch LTC6912 gồm hai
bộ khuyếch đại có thể thay đổi được hệ số Cả hai vi mạch này đều đuợc điều khiển bởi chip FPGA
Trang 27Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 19
Hình 2.5: Sơ Đồ chân khối ADC
Tín hiệu tương tự được đưa vào VinA và VinB sẽ được biến đổi thành một số nhị phân 14bit D[13:0] với điện áp so sánh 1 65V
D[13:0] =
1.65
8192 1.25
Gain
V
Gain : Độ lợi của bộ khuyếch đại
Vin : Điện áp ngỏ vào
D[13:0] : Số nhị phân 14bit
Cách tạo độ lợi cho vi mạch LTC6912 được cho trong bảng data sheet sau:
Trang 28Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 20
Giao diện kết nối giữa chip FPGA với vi mạch LTC6912 :
Tạo 8bit data điều khiển độ lợi cho LTC6912
Tín hiệu chọn chip LTC6912 hoạt động khi chân này ở mức 0
LTC6912
Dữ liệu 8bit ở ngỏ ra của LTC6912 Tín hiệu hồi tiếp
FPGA sẽ gởi dữ liệu nối tiếp 8 bit ra LTC6912 thông qua chân SPI_MOSI Giữ liệu 8 bit này sẽ được dùng để cài đặt cho hai bộ khuyếch đại A và B mỗi bộ trên cơ sỡ 4bit
Hình 2.6: Tám bit ra LTC6912
2.1.5.2 Giới thiệu hai IC LTC6912 và LTC1407A
IC LTC6912:
Đây là loại IC có thể điều khiển được độ khuyếch đại bằng cách nạp vào thanh
ghi trong nó một giá trị 8bit nối tiếp IC LTC6912 có hai kênh điều khiển độ khuyếch
đại độc lập nhau
Trang 29Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 21
Hình 2.7: Cấu trúc IC LTC6912
Qúa trình ghi nhận dữ liệu của LTC6912
AMP_CS : chân chọn chip
SCK : chân clock khoảng 2.5Mhz
SDI : chận dữ liệu vào
AMO_DO : chân dữ liệu ra
Ta nhận thấy rằng với mổi bit truyền đều t ương xứng với tần số xung clock Với LTC6912 tần số xung clock tối đa cho phép là 10Mhz nếu lớn hơn giá trị này thì hệ thống sẽ bị nhiễu do đó tần số xung clock thích hợp là 2.5MHz Cách điều khiển như
Trang 30Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 22
sau trước tiên chân AMP_CS phải ở mức thấp lúc này thanh ghi trong IC sẽ tiếp nhận
dữ liệu nối tiếp từ FPGA dựa trên cạnh lên của tần số xung clock trong khi đó dữ liệu nhận được sẽ được gởi ngược trở về FPGA kể kiểm tra lúc này dữ liệu bám theo cạnh xuống của xung clock Cách thức giao tiếp được chỉ ra ở giản đồ thời gian ghi nhận
dữ liệu
Hình 2.8: Giản đồ thời gian ghi nhận dữ liệu
LTC1407A:
Đây là IC thực hiện biến đổi tín hiệu tương tự sang tín hiệu số, nó cung cấp cho
ta hai bộ biến đổi riêng biệt tương tự như LTC6912 cả hai bộ biến đổi này hoạt động một cách độc lập Kết nối giao tiếp giữa FPGA và LTC1407A được trình bày ở hình 5, FPGA giao tiếp với LTC1407A thông qua các chân SPI_MOSI, SPI_MISO và SPI_CLK Ý nghĩa của các chân đựơc chú thích ra như sau :
Khi chân AD_CONV ở mức cao thì bộ AD sẽ thực hiện biến đổi các tín hiệu tương tự ở cả hai ngỏ vào của bộ biến đổi nhưng lúc này các kết quả sẽ không được chuyển đến ngỏ ra chỉ khi nào tín hiệu ỏ trên nhân AD_CONV chuyển xuống mức
Trang 31Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 23
thấp Tốc độ lấy mẫu nằm trong khoảng 1.5 Mhz Kết nối được chỉ ra ở giản đồ giao tiếp LTC1407A
Hình 2.9: Giản đồ giao tiếp LTC1407A
Sau khi có tín hiệu ra thì chân SPI_MISO sẽ đưa tín hiệu đến FPGA Tín hiệu được biến đổi được đưa ra dựa trên chu kỳ xung clock Chu kỳ xung clock lúc này vào khoảng 19.6nm
2.2 VI ĐIỀU KHIỂN NHÚNG MICROBLAZE:
2.2.1 Giới thiệu về vi điều khiển Microblaze:
Các bộ vi xử lý có sẵn dùng cho dòng FPGA (Field Programmable Gate Arrays) của Xillinx sử dụng với các công cụ phần mềm có trong phần mềm EDK (Embedded Development kit) được phân thành 2 loại:
Bộ vi xử lý mềm MicrroBlaze
Bộ vi xử lý cứng đã được nhúng sẵn PowerPC
MicrroBlaze là bộ vi xử lý được dùng hầu hết trong FPGA các dòng như
Spartan-II, Spartan-III, Virtex của hãng Xillinx MicroBlaze là một vi điều khiển ảo,
Trang 32Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 24
nó tồn tại dưới dạng phần mềm đã được phát triển của hãng Xillinx, chúng ta có thể thiết lập các thông số để sử dụng đối với vi điều khiển này (UART, các cổng vào ra ngoại vi, ) thông qua phần mềm EDK
MicroBlaze là bộ xử lý mềm nhúng 32-bit của Xillinx Tập lệnh thu gọn RISC
(Reduced Instruction Set Computer), với các bus riêng biệt để truy xuất dữ liệu và
lệnh từ bộ nhớ on-chip và bộ nhớ ngoài tại cùng một thời điểm
2.2.2 Kiến trúc cơ bản của MicrroBlaze:
Kiến trúc của MicroBlaze có các đặc điểm sau:
Từ lệnh 32 bit với 3 toán hạng và 2 chế độ định địa chỉ
Đường bus 32 bit địa chỉ
1 khối ghi dịch
2 cấp độ ngắt
Khối ALU(Arithmetic Logic Unit): gồm các bộ cộng/trừ, ghi dịch/logic, nhân
Hình 2.10: Kiến trúc cơ bản của vi điều khiển MicroBlaze
Trang 33Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 25
Program Counter: bộ đếm chương trình
Add/Sub: khối cộng/trừ; Shift/Logical: khối ghi dịch/lôgic; Multiply: khối nhân
Register File: thanh ghi dữ liệu 32thanh x 32bit
2.2.3 Kiến trúc Pipeline của vi điều khiển MicroBlaze:
Vi điều khiển MicroBlaze xử lý lệnh theo kiến trúc pipeline song song, hầu hết các lệnh của nó, mỗi giai đoạn mất 1 chu kỳ đồng hồ để thực hiện xong Quá
trình xử lý lệnh được chia làm 3 giai đoạn: nhận lệnh (Fetch), giải mã lệnh (Decode), thi hành lệnh (Execute)
Hình 2.11: Kiến trúc Pipeline của vi điều khiển MicroBlaze
Thông thường, nếu bỏ qua thời gian trễ nghỉ “stall” thì mỗi giai đoạn trên
chỉ mất 1 chu kỳ đồng hồ, khi đó 3 lệnh có thể được xử lý cùng một lúc, mỗi lệnh được thi hành trong 1 đường ống gồm 3 giai đoạn MicroBlaze có 1 bộ đệm
tiền nhận lệnh (Instruction Prefetch Buffer) để làm giảm xung đột tiềm ẩn
trong bộ nhớ khi thực hiện các lệnh đa chu kỳ
Khi Pipeline được tạo trễ nghỉ “stall” do thực hiện lệnh đa chu kỳ trong giai đoạn thi hành, bộ đệm tiền nhận lệnh sẽ tiếp tục nhận các lệnh ngay sau đó Và khi Pipeline thi hành trở lại, giai đoạn nhận lệnh có thể lấy lệnh trực tiếp từ bộ đệm tiền nhận lệnh, thay vì đợi cho bộ nhớ lệnh truy cập để thi hành
2.2.4 Giao tiếp tính hiệu trong MicroBlaze:
MicroBlaze cung cấp 3 giao tiếp bộ nhớ:
LMB: Local Memory Bus
PLB: Processor Local Bus
Fetch Decod
e
Execute
e Fetch Decod
e
Execute Execute Execute Fetch Decod
e
Stall Stall Execute
Cycle 1 Cycle 2 Cycle 3 Cycle 4
Trang 34Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 26
OPB (On-Chip Peripheral Bus) và XCL (Xillinx Cache Link)
Hình 2.12: một hệ thống Bus điển hình
Trong đó:
IXC: Instruction side Xillinx Cache Link Interface (cặp liên kết đơn FSL chủ/tớ) DXCL: Data side Xillinx Cache Link Interface (cặp liên kết đơn FSL chủ/tớ) ILMB: Instruction interface, Local Memory Bus: giao tiếp lệnh theo chuẩn bus LMB, chỉ dùng cho giao tiếp BRAM
DLMB: Data interface, Local Memory Bus: giao tiếp dữ liệu theo chuẩn bus LMB, chỉ dùng cho giao tiếp BRAM
IOPB: Instruction interface, On-chip Peripheral Bus: giao tiếp lệnh theo chuẩn bus OPB
DOPB: Data interface, On-chip Peripheral Bus: giao tiếp dữ liệu theo chuẩn bus OPB
Trang 35Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 27
MicroBlaze có kiến trúc kết nối lõi theo chuẩn IBM, chuẩn này cung cấp 3 loại
bus giành cho kết nối liên tục đa lõi, các thư viện macro và logic người dùng:
+ Bus lõi xử lý nội PLB (Processor Local Bus)
+ Bus ngoại vi on-chip OPB (On-chip Peripheral Bus)
+ Bus thanh ghi điều khiển thiết bị DCR (Device Control Register)
2.3 PHẦN MỀM EDK:
2.3.1 Giới thiệu Phần mềm EDK:
EDK là phần mềm của hãng xilinx được thiết kế tương thích với các chip FPGA của hãng
Chương trình EDK là một chương trình thân thiện với người sử dụng, giúp chú ng
ta có thể dễ dàng thiết kế một hệ thống phức tạp mà chỉ thao tác đơn giản, vì thực chất EDK sử dụng các chương trình VHDL viết sẵn (gọi là các IP) nên ta không cần viết các IP đó, mà chỉ sử dụng nó, phần quan trọng là chúng ta phải viết phần mềm điều khiển chip nhúng đã được viết sẵn đó, và điều này cũng thực sự không phải là khó khăn vì chúng ta không cần sử dụng tập lệnh Asembly của chip nhúng ( được đặc tên
là MicroBlaze) mà chúng ta sẽ sử dụng ngôn ngữ Standard C hay C++ để viết chương trình điều khiển MicroBlaze (tương đương với một vi xử lý 32 bit, đối với version 4.0 còn có thêm FPU/đơn vị xử lý dấu chấm động) và các thư viên hỗ trợ sẵn với các hàn điều khiển ngoại vi rất nhiều)
BaseAddress: chứa địa chỉ nền của thiết bị GPIO
Channel: bao gồm 2 kênh (1 hoặc 2)
Data: giá trị để ghi lên thanh ghi dữ liệu
XGpio_SetDataDirection(XGpio * InstancePtr, unsigned Channel,
u32 DirectionMask)
Chức năng:
Định dạng hướng vào hay ra của dữ liệu cho kênh GPIO được xác định
Trang 36Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 28
Các thông số:
InstancePtr: là con trỏ chỉ tới ngoại vi đang làm việc
Channel: bao gồm 2 kênh (1 hoặc 2)
DirectionMask: là một mặt nạ bit, xác định hướng của dữ liệu là hướng vào hay
ra, khi các bit được set lên 1 thì đó là ngõ vào, khi các bit được set về 0 thì đó
InstancePtr: là con trỏ chỉ tới ngoại vi đang làm việc
Channel: bao gồm 2 kênh (1 hoặc 2)
Chú ý:
Hàm trả về giá trị 32 bits chứa trong thanh ghi mà con trỏ đang chỉ tới
Nếu hàm này không sử dụng kênh 1, thì phần cứng phải được xây dựng ở chế
InstancePtr: là con trỏ chỉ tới một ngoại vi nhất định Vùng nhớ của con trỏ
phải được phân phát bởi người dùng
DeviceId:là tên riêng duy nhất của thiết bị được đặt bởi người dùng để phân
biệt với các thiết bị khác Thiết bị này được điều khiển bởi con trỏ
Chú ý:
Mọi thao tác muốn thực hiện trên thiết bị thì đầu tiên phải khởi động con trỏ, trỏ tới thiết bị đó, nếu không chương trình sẽ báo lỗi
Trang 37Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 29
InstancePtr: là con trỏ chỉ tới ngoại vi đang làm việc
Channel: bao gồm 2 kênh (1 hoặc 2)
Data: giá trị để ghi lên thanh ghi dữ liệu tạ vị trí con trỏ đang trỏ tới
InstancePtr: là con trỏ chỉ tới ngoại vi đang làm việc
Channel: bao gồm 2 kênh (1 hoặc 2)
Mask:set các bit ngõ ra lên mức cao, các bit khác của thanh ghi dữ liệu không
InstancePtr: là con trỏ chỉ tới ngoại vi đang làm việc
Channel: bao gồm 2 kênh (1 hoặc 2)
Mask:set các bit ngõ ra xuống mức thấp, các bit khác của thanh ghi dữ liệu
không bị ảnh hưởng
Trang 38Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 30
XGpio_mGetDataReg(BaseAddress, Channel)
Chức năng:
Lấy dữ liệu của một thanh ghi của một kênh đã được xác định
Thông số:
BaseAddress: chứa địa chỉ nền của thiết bị GPIO
Channel: bao gồm 2 kênh (1 hoặc 2)
Thông số:
BaseAddress: chứa địa chỉ nền của thiết bị GPIO
RegOffset: địa chỉ của thanh ghi được đọc cách địa chỉ nền một khoảng
XGpio_mWriteReg(BaseAddress, RegOffset, Data)
Chức năng:
Ghi một giá trị từ thanh ghi GPIO, một dữ liệu 32bits được ghi Nếu thiết bị
hoạt động với độ rộng bit nhỏ hơn 32bits thì chỉ có lấy những bit có trọng số nhỏ hơn mới được ghi
Thông số:
BaseAddress: chứa địa chỉ nền của thiết bị GPIO
RegOffset: địa chỉ của thanh ghi được ghi cách địa chỉ nền một khoảng
Data: dữ liệu được ghi vào thanh ghi
Trang 39Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 31
Hàm này cho phép các ngắt được hoạt động trong quá trình nhận và truyền dữ
liệu nối tiếp Đối với một thiết bị có chứa 16 byte để truyền nhận dữ liệu theo kiểu FIFO thì bất cứ lúc nào cũng có thể có ngắt được cho phép trong quá trình truyền nhận
Hàm sẽ xác định liệu thiết bị truyền dẫn nối tiếp được chỉ ra có đang gửi dữ liệu
hay không Nếu thanh ghi truyền dẫn không bỏ trống tức là nó đang gửi dữ liệu
Hàm có tác dụng reset bộ nhớ FIFO, việc truyền và nhận dữ liệu sẽ bị xóa Hàm
này có thể được sử dụng trong các ứng dụng nhằm xóa các dữ liệu không mong muốn trong bộ nhớ FIFO
Thông số:
InstancePtr: con trỏ chỉ tới thiết bị truyền dẫn nối tiếp
Trang 40Chương 2: Cấu trúc kit SPARTANT-3E, vi điều khiển MICROBLAZE và phần mềm EDK 32
Hàm trả lại giá trị byte mong muốn
XUartLite_RecvByte(u32 BaseAddress, u8 Data )
Chức năng:
Hàm gửi đi một byte đơn qua cổng truyền dẫn nối tiếp Hàm sẽ ghi giá trị 8 bits
vào thanh ghi truyền
Thông số:
BaseAddress: là địa chỉ nền của thiết bị được xác định
Data : byte dữ liệu gửi đi
Tạo hệ thống phần cứng cơ bản trong XP S (Xilinx Platform Studio): khi các bạn cho chạy chương trình EDK thì một cửa sổ xuất hiên gọi là cửa sổ XPS, chúng ta sẽ bắt đầu tạo Project ở đây, màn hình khởi đông chương trình như sau :
2.3.3 Cách tạo Project với phần mềm EDK:
Hình 2.10: Cửa sổ XPS
Trong hôp thoại đầu tiên xuất hiện, cho phép chúng ta thao tác cơ bản :