22
Thc hành thiết kế hthng nhúng – Lab 1 Bài 1: Làm quen vi cách to project và thiết kế hàm EX- OR trên Quartus II trên board DE2. A. To Project trên Quartus II Bước 1 : MQuartus II 9.0 Web Edition. Bước 2 : To mt project 1 2

Thực hành thiết kế hệ thống nhúng – Lab 1kdientu.duytan.edu.vn/media/50148/nap-kit-de2-dung-quartus-13.pdf* Trong trường hợp mu ... Assigments -> Export Assigments

Embed Size (px)

Citation preview

Thực hành thiết kế hệ thống nhúng – Lab 1 Bài 1: Làm quen với cách tạo project và thiết kế hàm EX-OR trên Quartus II trên board DE2. A. Tạo Project trên Quartus II Bước 1: Mở Quartus II 9.0 Web Edition.

Bước 2: Tạo một project

1

2

- Tạo một thư mục là mã số sinh viên để dễ làm việc suốt quá trình thực hành lab. Ví dụ: D:\0123xxxx\EmbSysLab\Bai1. - Đặt tên project sẽ làm việc là light.

Bước 3: Chỉ rõ 1 file nào đó cần đưa vào project để Quartus quản lý. Phần này tạm thời chưa có file nào nên ta chọn next. 3

Bước 4: Chỉ rõ loại chip FPGA trên board DE2. Bước này đòi hỏi chính xác. Bước 5: Chỉ rõ những công cụ hỗ trợ thêm từ nhà cung cấp đối tác của Altera. Trong bước này chọn next.

Họ chip là Cyclone II

Tên chip là EP2C35F672C6 cho board DE2

5

Bước cuối cùng: Quartus tóm tắt cấu hình làm việc cho project vừa được tạo ra. B. Thực hành thiết kế hàm EX-OR Cho đoạn chương trình VHDL mô tả hàm f = x1 EX-OR x2: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity light is Port ( x1 : in std_logic; x2 : in std_logic; f : out std_logic); end light;

6

architecture model of light is begin f <= (x1 and not(x2))or(not(x1) and x2); end model; Bước 1: Tạo một file soạn thảo mô tả đoạn VHDL ở trên và đưa vào project light. Soạn thảo đoạn code trên và save lại đặt tên là light.vhd.

1

23

Bước 2: Thực thi biên dịch code. Compiler sẽ biên dịch các file verilog trong project theo trình tự như sau:

1 Phân tích code, 2 Tổng hợp mạch, 3 Tạo vi mạch tổng hợp cho chip FPGA.

C. Chạy mô phỏng mạch Bước 1 : Vào File -> chọn New-> Vector Waveform File. Sau đó save lại với tên file là light.vwf.

1

2

3

Bước 2 : Xác định thời gian giả lập mô phỏng.

1

2

3

4

5

Bước 3 : Đưa các tín hiệu vào mô phỏng

Bước 4 : Thiết lập giá trị cho các tín hiệu. Có 2 cách.

1 - Click vào tín hiệu -> chọn giá trị cho nó.

2 - Rê chuột vào tín hiệu và chọn giá trị.

Bước 5 : Thiết lập giả lập mô phỏng chức năng cho hàm f

Sau đó save lại file mô tả giả lập dạng sóng này. Bước 6 : Tiến hành quá trình phân tích và tổng hợp. 1 - Vào Processing -> Generate Functional Simulation Netlist

2 - Sau đó Chọn Processing -> Start Simulation. Màn hình thông báo giả lập mô phỏng thành công

Sinh viên lập lại bước 4 để thử lại với các giá trị giá trị input khác nhau. Kiểm tra kết quả của hàm f. Bước 7: Thử mô phỏng với giả lập có thời gian trể (Timing Simulation). Lập lại bước 5 thay vì chọn Funtional, sinh viên chọn Timing.

Nhìn vào dạng sóng mô phỏng, sinh viên thử quan sát độ trễ bao nhiêu ? D. Cấu hình chân và thực hành nạp chạy trực tiếp lên board Để có thể chạy được một mạch tổ hợp trên board DE2, cần phải nối các tín hiệu mạch tổ hợp này đến các chân vật lý trên board. Cấu hình chân mục đích là ánh xạ tín hiệu

input/output đến các chân vật lý của board DE2. Giả sử ta mong muốn như sau: Trên board DE2 2 công tắc gạt SW0, SW1 (tham khảo trang 27 DE2_UserManual.pdf) sẽ được nối vào tương ứng cho các tín hiệu x1, x2 và đèn led màu xanh 0 LEDG0 (trang 29 DE2_UserManual.pdf) sẽ được nối vào ngõ output f. Như vậy khi gạt công tắc để thay đổi giá trị ngõ vào, thì ta sẽ biết được ngõ output sẽ hiển thị lên đèn led. Altera Quartus II hỗ trợ công cụ để làm việc này.

Để biết được tín hiệu trên board có định danh (ID) là bao nhiêu, sinh viên tham khảo tài liệu DE2_UserManual.pdf hoặc file Excel DE2_pin_assignments.exc.

Bước 1: Chọn Assignments -> Assigment Editor.

Tương tự x2 gán cho PIN_N26, f gán cho PIN_AE22.

* Trong trường hợp muốn xuất hoặc đưa vào một file cấu hình chân có sẵn, có thể chọn Assigments -> Export Assigments hoặc Assignments -> Import Assigments.

Bước 2: Sau khi cấu hình chân xong cần biên dịch lại để Quartus cập nhật cấu hình chân cho vi mạch được thiết kế. Bước 3: Nạp và chạy lên board. DE2 hỗ trợ 2 cách nạp lên board. Đó là chế độ nạp đó là JTAG và AS. Trong chế độ JTAG (Joint Test Action Group) thì dữ liệu cấu hình sẽ được nạp trực tiếp lên FPGA. Trong chế độ này thì thông tin cấu hình sẽ bị mất khi tắt nguồn. Ở chế độ AS (Active Serial), thì dữ liệu cấu hình sẽ được nạp lên bộ nhớ flash. Mỗi khi mở nguồn (reset) thì thông tin cầu hình ở đây sẽ được load lên FPGA, do đó thông tin cấu hình FPGA sẽ không bị mất mỗi khi tắt nguồn. Để chuyển đổi giữa 2 chế độ nạp này thì trên board DE2 cung cấp nút RUN/PROG. RUN tương ứng với chế độ nạp JTAG, trong khi PROG là chế độ AS. * Trong tất cả quá trình thực hành, chỉ xài chế độ nạp là JTAG - Gạt nút RUN/PROG trên board DE2 sang RUN, sau đó chọn Tools->Programmer, cửa sổ lập trình cho board DE2 sẽ xuất hiện như hình vẽ.

- Trên cửa sổ lập trình, chọ lựa chọn JTAG trong khung chế độ lập trình (Mode). Tiếp đo nếu USB-Blaster không được chọn như trên hình, thì bạn nhấn Hardware Setup, cửa sổ Hardware Setup sẽ xuất hiện khi đó bạn chọn USB-Blaster để lựa chọn cổng kết nối với board DE2.

- Trở lại cửa sổ lập trình bạn chọn vào file lập trình (light.sof). Nếu file này chưa có thì bạn có thể nhấn nút Add File để thêm file này vào. Tiếp đó bạn nhấp vào lựa chọn Program/configure

- Nhấn nút Start để bắt đầu việc lập trình. Trong khi lập trình thì các đèn led trên board DE2 sẽ sáng mờ đi. Trên cửa sổ lập trình, thanh Progess sẽ cho thấy tiến trình nạp lên board DE2. Sinh viên quan sát kết quả hàm f khi bật lên bật xuống công tắc.

Bài 2: Decoder Led 7 đoạn Hình dưới cho thấy một module decoder 7-đoạn với đầu vào 4-bit d3d2d1d0. Decoder tạo ra bảy đầu ra được sử dụng để hiển thị một ký tự trên một đèn LED 7-đoạn. Bảng dưới liệt kê các ký tự được hiển thị cho mỗi giá trị của d3d2d1d0. Bảy phân đoạn được xác định bởi các chỉ số 0 đến 6 như trong hình. Mỗi đoạn sẽ sáng khi đầu vào của nó có giá trị logic 0. Hãy viết một module VHDL thực hiện chức năng hiển thị như trên.

d3d2d1d0 Giá trị thập phân

0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F

Thực hiện các bước sau: 1. Tạo một project Quartus II mới. 2. Tạo một module VHDL cho decoder 7-đoạn. Kết nối đầu vào d3d2d1d0 cho switch SW3-0, và nối đầu ra của decoder đến các HEX0 display trên DE2. Các đoạn HEX0 được gọi là HEX00, HEX01,. . ., HEX06, tương ứng với Hình trên. Nên khai báo cổng 7-bit trong code

HEX0 : out std_logic_vector(6 downto 0) ;

3. Sau khi thực hiện các yêu cầu gán pin trên, biên dịch project. 4. Download mạch biên dịch vào chip FPGA. Kiểm tra các chức năng của mạch bằng các bật tắt các switch SW3-0 và quan sát hiển thị 7-đoạn. Bài 3: Dùng VHDL thiết kế mô hình bộ nhớ RAM 16 * 8 bit như hình vẽ sau

Key 2 là một nút nhấn dùng để tăng địa chỉ (address) trên RAM, Key 3 là một nút nhấn khác dùng để giảm địa chỉ trên RAM. Key 0 và key 1 dùng để thay đổi dữ liệu trên RAM. Key 0 là một nút nhấn dùng để tăng giá trị dữ liệu tại một địa chỉ. Ngược lại Key 1 là nút nhấn dùng để giảm giá trị dữ liệu. Địa chỉ và dữ liệu sẽ được hiển thị lên led 7 đoạn. Thực hiện các bước sau: 1. Tạo một project Quartus II mới. 2. Tạo một module Verilog cho decoder 7-đoạn. 3. Sau khi thực hiện các yêu cầu gán pin trên, biên dịch project. 4. Download mạch biên dịch vào chip FPGA. Kiểm tra các chức năng của mạch bằng các bật tắt các switch SW3-0 tương ứng cho d0, d1, d2, d3 và quan sát hiển thị 7-đoạn. 5. Hiện thực module RAM như đoạn code sau:

Điều khiển địa chỉ (Address Control)

Điều khiển dữ liệu (Data Control)

RAM

Giải mã Led 7 đoạn

Giải mã Led 7 đoạn

Giải mã Led 7 đoạn

Key 0

Key 1

Key 2

Key 3

Clock

Reset

Hex6 (6 downto 0)

Hex5 (6 downto 0)

Hex4 (6 downto 0)

Address

Data

Trong đó hàm conv_interger sẽ chuyển giá trị tham khảo input chuẩn std_logic_vector sang kiểu interger để đánh chỉ mục trên mảng RAM. 6. Thực hiện mô phỏng để kiểm tra kết quả của module RAM này. 7. Hiện thực module điều khiển địa chỉ, thực hiện mô phỏng và kiểm tra trực tiếp trên board bằng cách xuất ra led 7 đoạn 8. Hiện thực module điều khiển dữ liệu, thực hiện mô phỏng để kiểm tra kết quả 9. Kết nối các module lại với nhau và kiểm tra kết quả theo mô hình khối ở trên.