TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÁO CÁO GRADUATION RESEARCH 1
Giáo viên hướng hướng dẫn:
TS. Nguyễn Kim Khánh Sinh viên thực hiện :
Nguyễn Trường Giang MSSV: 20100228
Lớp: Việt Nhật IS2 K55
HÀ N ỘI, 5/2014
M ụ c l ục 1. Tìm hiểu về DE2i-150 Development Kit .............................................................. 1 1.1. Giới thiệu chung v ề DE2i-150................................................................. ....................................................................................................... ...................................... 1 1.2. C ấ u tạo của DE2i-150 ................................................................................................................. ................................................................................................................... .. 1 1.2.1. Sơ đồ kh ối ................................................................. ............................................................................................................................. ............................................................ 1 ............................................................................................................................. ............................................................ 2 1.2.3. Bộ vi xử lý................................................................. 1.2.3. Bộ FPGA..................................................................... ................................................................................................................................. ............................................................ 3 1.3.Những điểm ưu việ t của DE2i-150.......................................................... ................................................................................................ ...................................... 4
2. Tìm hiểu phần mềm Quartus II, ModelSim và ngôn ngữ lập trình VHDL ......... 5 2.1. Quartus II................................................... II...................................................................................................................... ................................................................................... ................ 5 2.1.1. Giới thiệu v ề Quartus II ......................................................................................................... ......................................................................................................... 5 2.1.2. Tạo project ............................................................................................................................ ............................................................................................................................ 6 ................................................................................................................... 9 2.1.3. Biên dịch và nạ p. ................................................................................................................... ....................................................................................................................... ........... 11 2.2. ModelSim Altera. ............................................................................................................
2.2.1. Giớ i thiệu về ModelSim Altera ...........................................................................................11 ................................................................................ ........... 11 2.2.2. Tạo một project vớ i ModelSim Altera .....................................................................
2.2.3. Biên dịch và chạy mô phỏng. ..............................................................................................14 ................................................................................. ........... 16 2.3. Sử dụng k ết hợ p Quartus II và và ModelSim ...................................................................... 2.4. VHDL...................................................................... ........................................................................................................................................... ..................................................................... 17 2.4.1. Giới thiệu v ề VHDL .............................................................................................................. .............................................................................................................. 17 2.4.2. C ấu trúc chương trình viế t b ằng VHDL ............................................................................... 17
ểu dữ liệu: ............................................................. 2.3.3. Ki ể ........................................................................................................................ ........................................................... 19 2.3.4. SIGNAL và VARIABLE ........................................................................................................... ........................................................................................................... 20 2.3.4. Toán tử ................................................................................................................................20 2.4.5. GENERIC .............................................................................................................................. .............................................................................................................................. 21 2.4.6. Mã song song ...................................................................................................................... ...................................................................................................................... 22 2.4.7. Mã tu ần tự ............................................................... .......................................................................................................................... ........................................................... 22
3.Tìm hiểu về FPGA ................................................................................................ 24 3.1. Khái niệm ............................................................. ................................................................................................................................... ...................................................................... 24 3.2. So sánh FPGA với các loại vi mạch khác ..................................................................................... ..................................................................................... 24
3.3. C ấ u tạo của FPGA ....................................................................................................................... ....................................................................................................................... 24 ....................................................................................................................... ........................................................... 25 3.3.1. Logic Blocks ............................................................ .............................................................................................. 26 3.3.2. Programmable Programmable Interconnects. .............................................................................................. ........................................................................................................................... .......................................................... 26 3.3.3. I/O Blocks ................................................................. ........................................................................................................... ............................................... 27 3.3.4. Các khối thiết k ế sẵn ............................................................ 3.4. Ứng dụng của FPGA ................................................................................................................... 27
4. Hướng nghiên cứu ............................................................................................. 28 4.1. Hướng nghiên cứu: ......................................................... .................................................................................................................... ........................................................... 28 4.2. Lí do chọn đề tài: ............................................................................................................. ........................................................................................................................ ........... 28 4.2. Mục tiêu nghiên cứu ................................................................... .................................................................................................................. ............................................... 28 4.4. Các v ấn đề sẽ nghiên cứu............................................................ u........................................................................................................... ............................................... 28
Danh mụ mục tài liệ liệu tham khả khảo ..................................................................................... 29
Danh m ục h ìn h v ẽ
Hình 1.1: Sơ đồ khối của kit DE2i-150 ....................................................................... 1 Hình 2.1: Giao diện của Quartus II 12.0 ..................................................................... 5 Hình 3.1: Sơ đồ khối FPGA ...................................................................................... 25 Hình 3.2. Một số ví dụ của logic cell ......................................................................... 25 Hình 3.3. Sơ đồ khối chuyển mạch lập trình được ................................................... 26 Hình 3.4. Cấu trúc PIP ............................................................................................. 26 Hình 3.5. Một ví dụ mô hình I/O cell ......................................................................... 27
1. Tìm hi ểu v ề DE2i-150 Development Kit 1.1. Giới thiệu chung về DE2i-150 DE2i-150 là một n ền t ảng đột phá, vớ i sự k ết hợ p của b ộ vi xử lí nhúng Intel N2600 và bộ Altera Cyclone IV GX FPGA c ủa hãng Altera. Chính nh ờ sự k ết hợ p này, DE2i150 tr ở thành một h ệ thống máy tính đầy đủ tính năng, và có hiệu năng xử lý r ất cao. Đặc biệt, bộ Altera Cyclone IV GX FPGA n ằm trên board DE2i-150 có thể tăng tốc khả năng đáp ứng của hệ thống mà vẫn giữ nguyên chi phí giải pháp và hiệu quả năng lượ ng. DE2i-150 có đến 150.000 phần tử logic, vớ i sự mền dẻo, linh hoạt của khả cấu trúc phần cứng, nó có thể đáp ứng cho bất cứ nhiệm vụ nào.
năng tái
Bộ vi xử lí của Intel và bộ thiết bị FPGA đượ c liên k ết vớ i nhau thông qua 2 luồng PCIe tốc độ cao, đảm bảo cho việc truyền dữ liệu giữa chúng đạt tốc độ cao. Chính nhờ nh ững điều này, DE2i-150 sẽ là một công cụ tuyệt v ời đặc biệt, cũng như thiết k ế phần cứng.
1.2. Cấu t ạo của DE2i-150 1.2.1. Sơ đồ khối
Hình 1.1: Sơ đồ khối của kit DE2i-150
1
để x ử lý các tác v ụ
Qua sơ đồ trên, ta có thể nhận thấy, kit DE2i-150 gồm 2 khối: khối bên trái là Intel Atom Processor, khối bên phải là FPGA Altera Cyclone GX. Hai kh ối liên k ết vớ i nhau bởi 2 đườ ng PCIe. 1.2.3. Bộ vi xử lý Các thông số kĩ thuật: CPU : Intel® Atom™ Dual Core Processor N2600( 1M Cache, 1.6GHz ) Intel® Hyper-Threading Technology Intel SpeedStep® Technology Instruction Set : 64-bit Instruction Set Extensions : SSE2, SSE3, SSSE3 Integrated Graphics Graphics Base Frequency : 400MHz Chipset : Intel® NM10 Express Chipset DMI x2 to CPU Intel® High Definition Audio Serial ATA (SATA) 3 Gb/s Universal Serial Bus(USB) Hi-Speed USB 2.0 PCI Express Gen 1 Memory DDR3 SO-DIMM SDRAM Display VGA HDMI 1.3a Intel® Centrino® Wireless-N 135 802.11b/g/n Bluetooth 4.0 Wi-Fi Direct Audio Codec Realtek ALC272VA3-GR BIOS DIP package Bios Flash : GD25Q16 Programming Interface for Bios : Dedi-Prog Interface Debug Interface XDP header Clock System CK505 : 9VRS4339B 32768 Hz RTC crystal 27MHz VGA clock source Ethernet
2
Intel® 82583V GbE Controller 10/100/1000 Mb/s RJ45 3 status indicting LEDs
Others
Power header for hard-disk Current limit for USB Buzzer Mini PCIE header (Default for Intel® Centrino® Wireless-N 135 WiFi module) mSATA header RTC battery : CR2032
1.2.3. Bộ FPGA Các thông tin chi ti ết của bộ FPGA: Featured Devices Cyclone IV EP4CGX150DF31 device 149,760 Les 720 M9K memory blocks 6,480 Kbits embedded memory 8 PLLs FPGA configuration JTAG and AS mode configuration EPCS64 serial configuration device On-board USB Blaster circuitry Memory devices 128MB (32Mx32bit) SDRAM 4MB (1Mx32) SSRAM 64MB (4Mx16) Flash with 16-bit mode SD Card socket Provides SPI and 4-bit SD mode for SD Card access Connectors Ethernet 10/100/1000 Mbps ports High Speed Mezzanine Card (HSMC) 40-pin expansion port VGA-out connector VGA DAC (high speed triple DACs) DB9 serial connector for RS-232 port with flow control Clock Three 50MHz oscillator clock inputs SMA connectors (external clock input/output)
3
Display 16x2 LCD module Switches and indicators 18 slide switches and 4 push-buttons switches 18 red and 9 green LEDs Eight 7-segment displays Other features Infrared remote-control receiver module TV decoder (NTSC/PAL/SECAM) and TV-in connector
1.3.Những điểm ưu việt của DE2i-150 Sự k ết h ợ p giữa b ộ vi xử lí Intel Atom và b ộ FPGA của Altera giúp cho kit tr ở thành một hệ thống hoàn chỉnh, mạnh mẽ và đầy đủ các chức năng.
Số lượ ng thành phần logic lớ n (150.000 phần tử logic) vớ i khả năng tái cấu trúc linh hoạt, mềm dẻo.
Đượ c nhà sản xuất cung cấ p các phần mềm, môi trườ ng phù hợ p trên cả windown và linux
Có đầy đủ các hệ thống vào ra và k ết nối mạng
4
2. Tìm hiểu phần mềm Quartus II, ModelSim và ngôn ng ữ lập trình VHDL 2.1. Quartus II 2.1.1. Giới thiệu về Quartus II Quartus II là một sản phẩm phần mềm của hãng Altera . Nó cung c ấp môi trườ ng thiết k ế hoàn thiện, đa nề n tảng, dễ dàng đáp ứng các nhu cầu thiết k ế cụ thể. Nó là m ột môi trườ ng toàn diện cho việc thiết k ế SOPC(system-on-a-programmable-chip). Quartus II bao gồm các giải pháp cho cả quá trình thiết k ế FPGA và CPLD. Quartus II cung cấ p các khả năng thiết k ế sau: Công cụ soạn thảo: VHDL, AHDL và Verilog HDL. Là công cụ mạnh mẽ trong tổng hợ p logic Phân tích thờ i gian (timming analysis) Tự động định vị lỗi Place & Route Có giao diện đồ họa và giao di ện dòng lệnh tiện dụng Tự động nhận diện các linh kiện khi k ết nối Phân tích logic nhúng vớ i công cụ phân tích SignalTap II
….
Hình 2.1: Giao diện của Quartus II 12.0
5
2.1.2.Tạo project Từ giao diện chính của Quartus II, chọn File > New Project Winzard
Chọn Next để tiế p tục, sau đó điền vào nởi lưu trữ project, nhậ p tên project
6
Chọn next để chọn file cần include vào project nếu có. Nếu không có thể ấn next ngay
Sau khi add file thành công, ấn next Settings), chọn FPGA mà ta dùng.
để tiế p tục thiết lậ p linh kiện (Family & Device
7
Ấn next để tiế p tục thiết lậ p bộ công cụ EDA, thườ ng thì Quartus II sẽ mặc định công cụ mô phỏng là ModelSim-Altera, và ngôn ngữ VHDL. Bạn có thể ch ọn ngôn ngữ và bộ phỏng tùy ý, ngoài ra còn cung c ấ p bộ Timming, Symbol …
Ấn next để tiế p tục, một màn hình sẽ hiện ra ghi lại những thông số ta đã thiết lậ p cho project.
Ấn Finish để hoàn thành, hoặc back để chỉnh sửa các thông số. 8
Sau khi project đượ c tạo, chọn file > New file để tạo một file mớ i và bắt đầu lậ p trình. Ấn file > Save để lưu file.
2.1.3.Biên dịch và nạp Sau khi code xong một file, chỉ định chân pin cho đầu ra và đầ u vào. Chọn Processing > Start > Start Analysis & Elaboration. Sau đó chọ n Assignments > Pins Planner, chọn các chân cho đầu vào và đầ u ra tùy vào từng thiết bị
9
Để biên dịch file ta chọn Processing > Start Compilation. Nếu file có lỗi sẽ hiện thông báo ở dưới như hình dướ i.
Có thể ấn tr ực ti ế p vào lỗi để hi ện th ị đọa code bị l ỗi. Quá trình biên dịch hoàn thành khi không có lỗi, và ta b ắt đầu nạp chương trình chạy vào phần cứng. Trướ c tiên có thể nạp chương trình chạ y vào phần cứng, ta phải k ết nối phần cứng vớ i máy tính. Sau đó chọn Tools > Programmer, cửa sổ Programmer xuất hiện.
10
Click vào Hardware Setup, trong mục currently selected hardware chọn USB-Blaster [USB-0]
Sau đó click vào Close. Nếu trong Programmer chưa có file cầ n nạ p thì chọn Add file để chọn file. Chọn file cần nạ p và ấn Start để bắt đầu nạ p vào phần cứng.
2.2. ModelSim Altera 2.2.1. Giớ i thiệu về ModelSim Altera ModelSim Altera cũng là một sản phẩm phần mềm do hãng Altera cung cấ p, là một công cụ vừa có khả năng lậ p trình phần cứng, vừa có khả năng chạ y mô phỏng. 2.2.2. Tạo một project vớ i ModelSim Altera Từ giao diện chính, chọn File>New project, điề n tên project và chọn đườ ng dẫ để lưu project.
11
Cửa sổ Add items to the Project hi ện ra, yêu cầu Chọn Create New File.
12
thêm đối tượ ng vào cho Project.
Trong cửa sổ Create Project File, nh ậ p tên của file, chọn kiểu file.
Sau khi tạo xong file, cửa sổ editor hiện ra, cho phép ta l ậ p trình.
13
2.2.3. Biên dịch và chạy mô phỏng. Sau khi đã tạo xong file, để biên dịch, chọn Compile>Compile All
Nếu không có lỗi gì xảy ra trong quá trình biên dịch, ta có thể bắt bằng cách chon Simulate > Start Simulate.
14
đầu chạy mô phỏng
Cửa sổ Start Simulation hiện ra, ch ọn vào tab Design > work > ten_file và ấn OK:
Để chọn dạng mô phỏng wave, chọn Add>To Wave>All items in region:
15
Trong tab Wave, chuột phải vào các biến tục chọn Simulate > Run 100
đầu vào,chọn force để thiết lậ p giá tr ị, tiế p
2.3. Sử dụng k ết hợ p Quartus II và ModelSim Chúng ta có thể sử dụng k ết hợp Quartus II và ModelSim để thiết k ế mạch và chạy mô phỏng.Trong đó Quartus II đóng vai trò là công cụ lậ p trình, và vẽ sơ đồ thiết k ế mạch,ModelSim đóng vai trò là công cụ chạy mô phỏng để kiểm tra tính đúng đắ n của mạch đã đượ c thiết k ế bằng Quartus II. Để sử dụng k ết hợ p Quartus II và ModelSim, ta cần chọn ModelSim là công cụ mô phỏng trong bướ c tạo project trong Quartus II(Xem m ục 2.1.2.Tạo project) hoặc chuột phải vào thiết bị trong Entity > Settings… > Simulation, trong mục Tool name > ModelSim-Altera.
16
2.4. VHDL 2.4.1. Giới thiệu về VHDL VHDL(Very high speed integrated circuit Hardware Description Language) là một trong các ngôn ngữ mô tả ph ần c ứng đượ c s ử d ụng r ộng rãi hiện nay. VHDL là ngôn ngữ mô tả phần cứng cho các vi mạch tích hợ p có tốc độ cao như FPGA , CPLD …VHDL cũng đượ c sử dụng như một ngôn ngữ lậ p trình song song. VHDL là ngôn ngữ mô phỏng phần cứng đượ c phát triển dùng cho chương trình VHSIC (Very High Speed Intergrated Circuit) c ủa bộ quốc phòng Mỹ. Mục tiêu của việc phát triển VHDL là có đượ c một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho phép phát triển th ử nghiệm các hệ th ống s ố nhanh hơn, cũng như cho phép dễ dàng đưa các hệ thống đó vào ứng dụng trong thực tế
2.4.2. Cấu trúc chương trình viết bằng VHDL Một đoạn Code VHDL chuẩn cần có tối thiểu 3 mục sau: LIBRARY(thư viện): chứa một danh sách của tất c ả các thư viện đượ c s ử dụng trong thiết k ế. Ví dụ: ieee, std, work, … VD: LIBRARY library_name; USE library_name.package_name.package_parts;
ENTITYI(thực thể): Mô tả các chân vào ra (I/O pins) c ủa mạch. sau:
Cú pháp như
ENTITY entity_name IS PORT ( port_name : signal_mode signal_type; port_name : signal_mode signal_type; ...); END entity_name; Signal_mode: có thể là IN, OUT, INOUT, ho ặc BUFFER Signal_type: kiểu dữ liệu, có thể là BIT, STD_LOGIC, INTERGER… Port_name: tên của cổng, có thể là bất cứ gì, ngoại tr ừ các từ khóa của VHDL Vd:
ENTITY nand_gate IS PORT (a, b : IN BIT; x : OUT BIT); END nand_gate;
ARCHITECTURE(kiến trúc): chứa mã VHDL, mô t ả mạch sẽ họat thế nào. Cú pháp như sau: 17
động như
ARCHITECTURE architecture_name OF entity_name IS [declarations] BEGIN (code) END architecture_name; [declarations]: phần mô tả, nơi các tín hiệ u và các h ằng đượ c khai báo Vd:
ARCHITECTURE tg OF nand_gate IS BEGIN x <= a NAND b; END tg;
Các mô hình kiến trúc: Mô hình hoạt động : mô tả các hoạt động của hệ thống, hệ thống đáp ứng vớ i tín hiệu đầu và o như thế nào, đưa ra kế t quả gì ở đầu ra, dướ i d ạng ngôn ngữ lậ p trình bậc cao. Cấu trúc có thể có Process, wait, if, case, for,
loop… Vd:
ARCHITECTURE behavioral of decode2x4 is BEGIN Process (A,B,ENABLE) Variable ABAR,BBAR: bit; Begin ABAR := not A; BBAR := not B; If ENABLE = ‘1’ then Z(3) <= not (A and B); Z(0) <= not (ABAR and BBAR); Z(2) <= not (A and BBAR); Z(1) <= not (ABAR and B); Else Z <= not (ABAR and B); End if; End process; END behavioral;
Mô hình cấ u trúc: có thể gồm nhiều cấ p cấu trúc, từ cổng logic đơn giản đến xây dựng một hệ thống hoàn thiện. Thực chất việc mô tả cấu trúc là mô tả các phần tử bên trong một hệ thống và sự k ết hợ p của các phần tử
đó Khai báo các thành ph ần: Component 18
Tên_componemt port [ danh sách ]; End component;
Mô hình k ế t hợ p: là sự k ết hợ p của hai mô hình trên
2.3.3. Kiểu dữ liệu: Các kiểu dữ liệu tiền định nghĩa: BIT và BIT_VECTOR: 2 mức logic “0” và “1” STD_LOGIC và STD_LOGIC_VECTOR Hệ logic 8 giá tr ị sau đây đượ c giớ i tiệu trong chuẩn IEEE 1164: - ‘X’ không xác định ( bắt buộc) - ‘0’ mức thấ p ( bắt buộc) - ‘1’ mức cao ( bắt buộc) - ‘Z’ tr ở kháng cao không xác định (yếu) - ‘W’ - ‘L’ mức thấ p ( yếu) - ‘H’ mức cao ( yếu) - ‘-’ không quan tâm STD_ULOGIC và STD_ULOGIC_VECTOR: là mở r ộng của STD_LOGIC và STD_LOGIC_VECTOR, thêm một giá tr ị logic là ‘U’
Các kiểu dữ liệu người dùng định nghĩa: Vd: TYPE integer IS RANGE -2147483647 TO +2147483647; -- định nghĩa kiểu interger TYPE my_logic IS ('0', '1', 'Z'); -- Một tậ p con của std_logic mà người dùng định nghĩa
Các kiểu con: là kiểu dữ liệu đi kèm theo điề u kiện dàng buộc Vd: SUBTYPE natural IS INTEGER RANGE 0 TO INTEGER'HIGH; -- natural là một kiểu con (tậ p con) của INTEGER, vớ i giá tr ị từ 0->INTERGER’HIGH
Mảng: là một tậ p hợ p các giá tr ị cùng kiểu. M ảng có thể là mảng 1 chiều (1D), hai chiều (2D), hoặc là mảng 1 chiều của 1 chiều(1Dx1D) và có thể là các mảng có chiều cao hơn. Để chỉ định một kiểu mảng mớ i: TYPE type_name IS ARRAY (specification) OF data_type; Để tạo sử dụng kiểu mảng mớ i: SIGNAL signal_name: type_name [:= initial_value];
Mảng cổng Kiểu bản ghi: tương tự như mảng, nhưng chứa những kiểu giá tr ị khác nhau
19
TYPE birthday IS RECORD day: INTEGER RANGE 1 TO 31; month: month_name; END RECORD; Kiểu dữ liệu có dấu và không dấu: được định nghĩa trong gói std_logic_arith của thư viện ieee, dùng để biểu diễn số có dấu và không dấu. Vd: SIGNAL x: SIGNED (7 DOWNTO 0); SIGNAL y: UNSIGNED (0 TO 3); Vd:
Chuyển
đổi dữ liệu: VHDL không cho phép các phép toán tr ực tiế p ( số học, logic, …) tác độ ng lên các dữ liệu khác kiểu nhau. Nhiều hàm chuyển đổi dữ liệu có thể đượ c tìm trong gói std_logic_arith của thư viện ieee: conv_integer(p):chuyển đổi một tham số p của kiểu INTEGER, UNSIGNED, SIGNED, hoặc STD_ULOGIC thành một giá tr ị INTEGER. Lưu ý rằ ng STD_LOGIC_VECTOR không đượ c k ể đến. conv_unsigned(p, b): chuyển đổi một tham số p của kiểu INTEGER, UNSIGNED, SIGNED, hoặc STD_ULOGIC thành một giá tr ị UNSIGNED vớ i kích cỡ là b bit. conv_signed(p, b): chuyển đổi một tham số p của kiểu INTEGER, UNSIGNED, SIGNED, hoặc STD_ULOGIC thành một giá tr ị SIGNED vớ i kích cỡ là b bits. conv_std_logic_vector(p, b): chuyển đổi một tham số p thuộc kiểu dữ liệu INTEGER, UNSIGNED, SIGNED, hoặc STD_LOGIC thành một giá tr ị STD_LOGIC_VECTOR với kích thướ c b bits.
2.3.4. SIGNAL và VARIABLE
VHDL có hai cách định nghĩa các giá tr ị không tĩnh: bằng SIGNAL hoặc bằng VARIABLE. SIGNAL có thể đượ c khai báo trong PACKAGE, ENTITY ARCHITECTURE (trong phần khai báo của nó). VARIABLE có thể đượ c mô tả bên trong một phần của mã tu ần tự. Giá tr ị của VARIABLE có thể không bao giờ định nghĩa tr ực tiế p, nếu cần, thì nó phải đượ c gán thành SIGNAL.
hoặc
ngoài PROCESS một cách
Phép toán gán cho SIGNAL là “<=” ( ví dụ sig <= 5), trong khi vớ i VARIABLE là “:=” (ví dụ var := 5). 2.3.4. Toán t ử Toán tử gán: có 3 lo ại toán tử gán: <= (dùng cho giá tr ị SIGNAL) := (dùng cho giá tr ị VARIABLE, CONSTANT, GENERIC) => (dùng cho các thành phần vector và các giá tr ị kiểu khác)
20
Vd:
SIGNAL x : STD_LOGIC; VARIABLE y : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL w: STD_LOGIC_VECTOR(0 TO 7); x <= ‘1’; y := “0000”; w <= “10000000”; w <= (0 =>'1', OTHERS =>'0');
Toán tử logic: dùng cho BIT, STD_LOGIC, STD_ULIGIC, BIT_VECTOR,STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR. Bao gồm các toán tử logic: NOT, AND, OR, NAND, NOR, XOR, XNOR
Toán tử toán học: dùng cho các kiểu dữ liệu :INTEGER, SIGNED, UNSIGNED, REAL Bao gồm các toán tử: + Toán tử cộng. Toán tử tr ừ. * Toán tử nhân. / Toán tử chia. ** Toán tử lấy mũ. MOD Phép chia lấy phần nguyên. REM Phép chia lấy phần dư. ABS Phép lấy giá tr ị tuyệt đối.
Toán tử so sánh Có các toán tử so sánh sau: = So sánh bằng /= So sánh không bằng. < So sánh nhỏ hơn. > So sánh lớn hơn. <= So sánh nhỏ hơn hoặc bằng. >= So sánh lớn hơn hoặc bằng. Toán tử dịch Cú pháp sử dụng toán tử dịch là: Trong đó: có kiểu là BIT_VECTOR có kiểu là INTEGER. Có hai toán tử dịch: - Sll Toán tử dịch trái. Điền 0 vào phía ph ải. - Rll Toán tử dịch phải. Điền 0 vào phía trái.
2.4.5. GENERIC GENERIC là một cách tạo các tham số dùng chung (giống như các biến static trong các ngôn ngữ lậ p trình). Tham số này có thể gọi đượ c từ bất cứ nơi nào, trong mộ t
21
ENTITY hay ARCHITECTURE. Mục đích là để cho các đoạn code mềm dẻo và dễ sử dụng lại hơn. Một đoạn GENERIC muốn sử dụng đượ c cần phải đượ c mô tả trong ENTITY. Các tham số phải đượ c chỉ rõ. Cấu trúc như sau:
GENERIC (parameter_name : parameter_type := parameter_value); Vd: GENERIC (n : INTEGER := 8);=> Biến n có thể gọi từ bất cứ của nó luôn là 8.
đâu và giá trị
2.4.6. Mã song song Mã nguồn VHDL chủ yếu là mã song song, ngoại tr ừ các đoạn mã trong PROCESS, FUNTION, PROCEDURE. Mã song song còn đượ c gọi là mà luồng dữ liệu. Các cách tạo mã song song: Sử dụng các toán tử Mệnh đề WHEN Vd: ------ With WHEN/ELSE ------------------------outp <= "000" WHEN (inp='0' OR reset='1') ELSE "001" WHEN ctl='1' ELSE "010"; ---- With WITH/SELECT/WHEN -------------------WITH control SELECT output <= "000" WHEN reset, "111" WHEN set, UNAFFECTED WHEN OTHERS; ------------------------------------------------ GENERATE: cũng là một khối song song, tương đương vớ i khối tuần tự LOOP BLOCK: gồm simple BLOCK và guarded BLOCK 2.4.7. Mã tu ần tự Bao gồm: PROCESS: bao gồm các câu lệnh IF, WAIT, CASE h ặc LOOP Cú pháp: [label:] PROCESS (sensitivity list) [VARIABLE name type [range] [:= initial_value;]] BEGIN (sequential code) END PROCESS [label]; IF Cú pháp: IF conditions THEN assignments; ELSIF conditions THEN assignments; ... 22
ELSE assignments; END IF; WAIT: Cú pháp: WAIT UNTIL signal_condition; WAIT ON signal1 [, signal2, ... ]; WAIT FOR time; CASE Cú pháp: CASE identifier IS WHEN value => assignments; WHEN value => assignments; ... END CASE; LOOP Cú pháp: FOR/LOOP: vòng lặp đượ c lặ p lại một số lần cố định. [label:] FOR identifier IN range LOOP (sequential statements) END LOOP [label]; WHILE/LOOP: vòng lặp đượ c lặp cho đến mãn. [label:] WHILE condition LOOP (sequential statements) END LOOP [label];
khi điều kiện không thảo
EXIT: sử dụng để k ết thúc vòng lặ p. [label:] EXIT [label] [WHEN condition]; NEXT: sử dụng để bỏ qua các bướ c vòng lặ p. [label:] NEXT [loop_label] [WHEN condition];
23
3.Tìm hiểu về FPGA 3.1.Khái niệm là một mạch tích hợp, có thể cấu trúc lại mảng phần tử logic bởi người sử dụng hoặc lập trình viên, bằng cách sử dụng ngôn ngữ lập trình mô tả phần cứng HDL như VHDL, Verilog, AHDL…
Field-programmable gate array (FPGA)
Hiện nay FPGA đã tích hợp được một số lượng lớn các cổng logic và các khối RAM để xử lí các tính toán phức tạp. Đồng thời nó cũng được trang bị các cổng I/O tốc độ cao, đảm bảo về mặt thời gian cho việc truyền và nhận dữ liệu. FPGA có thể thực hiện được bất cứ nhiệm vụ nào mà một ASIC có thể thực hiện, cùng với khả năng tái cấu trúc linh hoạt, FPGA có ưu thế trong nhiều ứng dụng.
3.2.So sánh FPGA v ới các loại vi mạch khác
FPGA cũng được xem như mộ t loại vi mạch bán dẫn chuyên dụng ASIC, nhưng nếu so sánh FPGA vớ i những ASIC đặc chế hoàn toàn hay ASIC thiết k ế trên thư viện logic thì FPGA không đạt đượ c m ức độ t ối ưu như những loại này, và hạn chế trong khả năng thực hiện các tác vụ đặc biệt phức tạ p, tuy nhiên FPGA lại ưu việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết k ế đơn giản hơn, do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng.
Còn nếu so sánh vớ i các dạng vi mạch bán dẫn lập trình đượ c dùng cấu trúc mảng phần t ử logic như PLA, PAL, CPLD thì FPGA ưu việt hơn cá điể m: tác vụ tái lậ p trình c ủa FPGA đượ c thực hiện đơn giản hơn; khả năng lậ p trình linh động hơn; và khác biệt quan tr ọng nhất là kiến trúc của FPGA cho phép nó có khả năng chứa khối lượ ng lớ n cổng logic.
3.3.Cấu t ạo của FPGA FPGA đượ c cấu tạo từ 3 thành phần chính: Các khối logic cơ bả n (Logic Blocks, ngoài ra còn có tên gọi khác như: CLB, Logic Array Block, LAB…tùy vào nhà sả n xuất). Hệ thống mạch liên k ết lập trình đượ c (Programmable Interconnects hay
routing channels). Các khối vào ra (I/0 Block).
Ngoài ra FPGA còn đượ c trang bị các phần tử thiết k ế sẵn như: DSP slice, RAM, ROM, nhân vi xử lý…
24
Hình 3.1: Sơ đồ khối FPGA
3.3.1.Logic Blocks Mỗi khối logic thông thường đượ c tạo nên từ một vài phần tử logic cell. Mỗi logic cell điển hình bao gồm: Một bộ LUT(look up table) Một bộ cộng đầy đủ FA Một bộ D flip-flop DFF.
Hình 3.2. Một số ví dụ của logic cell
Trong hình trên, khối LUT đượ c chia làm 2 khối 3-LUT(LUT với 3 đầu vào). Nhưng thông thườ ng 2 khối 3-LUT đượ c k ết hợ p lại thành 1 khối 4-LUT(LUT với 4 đầu vào) thông qua bộ MUX. Hiện nay khối LUT còn đượ c b ổ sung thêm 2 đầu vào k ết n ối t ừ các khối logic trướ c và sau nó, nâng t ổng số đầu vào của LUT lên 6 chân. C ấu trúc này nhằm tăng tốc các b ộ số học logic.
25
3.3.2.Programmable Interconnects
Hình 3.3. Sơ đồ khối chuyển mạch lập trình được
Vai trò của khối là: K ết nối hoặc ngắt k ết nối giữa các khối logic vớ i nhau K ết nối hoặc ngắt k ết nối giữa các khối logic vớ i các khối I/O bằng ngôn ngữ lậ p trình.
Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai phương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chia thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có 3 loại kết nối: ngắn, dài và rất dài. Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được ( programmable switch), trong một khối chuyển mạch chứa một số lượng nút chuyển lập trình được, đảm bảo cho các dạng liên kết phức tạp khác nhau. Các điểm k ết nối như vậy đượ c gọi là programmable interconnect point(PIPs).
Hình 3.4. Cấu trúc PIP
Một số kiểu PIPs hay đượ c dùng: Cross-point: k ết nối lần lượ t các đườ ng k ết nối theo chiều dọc hoặc ngang Break-point: k ết nối hoặc cô lập 2 đườ ng k ết nối Decoded MUX: nhóm 2^n cross-points thành một đầu ra vớ i n config bit Non-decoded MUX: nhiều đườ ng k ết nối sử dụng chung 1 config bit Compound cross-point: gồm 6 Break-point
3.3.3.I/O Blocks Các khối I/O được dùng để k ết nối FPGA vớ i các thiết bị phần cứng khác, đảm bảo truyền và nhận dữ liệu giữa môi trường bên trong và môi trườ ng bên ngoài FPGA.
26
Hình 3.5. M ột ví dụ mô hình I/O cell
I/O Blocks gồm nhiều I/O cell. Mỗi I/O cell có thể c ấu hình lại thành một cổng vào, một cổng ra, hoặc là một cổng hai chiều. D flip-flop thường đượ c sử dụng trong I/O cell để cung cấ p việc cho đăng kí đầu vào và đầ u ra.
3.3.4.Các khối thiết k ế sẵn Ngoài các khối logic tùy theo các loại FPGA khác nhau mà có các ph ần tử tích hợ p thêm khác nhau, ví d ụ để thiết k ế những ứng dụng SoC, trong dòng Virtex 4.5 của Xilinx có chứa nhân xử lí PowerPC, hay trong Atmel FPSLIC tích h ợ p nhân AVR, hay cho những ứng dụng x ử lí tiens hiệu s ố DSP trong FPGA đượ c tích hợ p các DSP Slide là bộ nhân cộng tốc độ cao, thực hiện hàm a*b+c…
3.4.Ứng dụng của FPGA Ứ ng dụng của FPGA bao gồm: Xử lí tín hiệu số DSP Tiền thiết k ế mẫu ASIC(ASIC prototyping) Các hệ thống điều khiển tr ực quan, phân tích nhận dạng ảnh, nhận dạng tiếng
nói Mật mã học Mô phỏng phần cứng máy tính Do tính linh động cao trong quá trình thiết k ế cho phép FPGA giải quyết đượ c nh ững bài toán phức t ạp mà trướ c kia chỉ thực hiện đượ c nhờ phần mềm máy tính, ngoài ra nhờ số lượ ng cổng logic lớ n mà FPG A đượ c ứng dụng cho những bài toán đòi hỏi khối lượ ng tính toán lớ n và dùng trong các h ệ thống làm việc thờ i gian thực.
27
4. Hướng nghiên cứu 4.1. Hướng nghiên cứu: Đề tài:
“Nghiên cứ u kit phát triển DE2i-150 FPGA và ứ ng dụng xây dự ng thiết bị định vị GPS.” 4.2. Lí do chọn đề tài: Các thiết bị hiện nay hầu như đều đượ c nhậ p nguyên khối từ nướ c vớ i giá thành cao, khả năng mở r ộng kém, và cũng có nhữ ng những tính năng không sử dụng đến. Kit phát triển DE2i-150 vớ i những tính năng ưu việ t, r ất phù hợp để thiết k ế thiết bị định vị GPS cần đến khả năng tính toán nhanh và chính xác cao. 4.2. Mục tiêu nghiên cứu Nghiên cứu và hiểu đượ c công nghệ định vị GPS Thiết k ế đượ c thiết bị định vị GPS chất lượ ng cao, mang tính c ạnh tranh cao vớ i giá thành r ẻ, khả năng mở r ộng cao… để hỗ tr ợ cho công tác giám sát, qu ản lí giao thông… Ứ ng dụng thành công kit DE2i-150 vớ i công nghệ FPGA Tậ p trung vào xây dựng Modul GPS trong bộ thu GPS 4.4. Các vấn đề sẽ nghiên cứu Công nghệ FPGA Công nghệ thu và xử lí tín hiệu số Nguyên lí định vị GPS Cách thức xây dựng bộ xử lí
28