Tải bản đầy đủ (.docx) (31 trang)

Thiết kế máy bán nước tự động sử dụng ngôn ngữ mô tả phần cứng

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 (985.59 KB, 31 trang )

Hà Nội, 10/2020

1


MỤC LỤC

2


DANH MỤC CÁC HÌNH
Hình 1.1: Các thành phần của chương trình VHDL……………………………..7
Hình 1.2: Cổng NAND…………………………………………………………..8
Hình

1.3:

Máy

trạng

thái

trạng

thái

Moore………………………………………………...15
Hình

1.4:



Máy

Mealy………………………………………………...16
Hình

1.5:

Cấu

tạo

chi

tiết

board

Basys

3………………………………………..16
Hình

1.6:



đồ

chi


tiết

cách

đặt

chân

board

Basys

3…………………………..17
Hình 2.1: Minh họa hình ảnh máy bán nước tự động……………………………
20
Hình

2.2:



đồ

khối

mạch

điều


khiển

máy

bán

nước…………………………..21
Hình

2.3:

Quy

ước

vào/ra

trên

FPGA…………………………………………...22
Hình

2.4:



dụ




phỏng



phỏng



phỏng

1…………………………………………………….23
Hình

2.5:



dụ

2…………………………………………………….23
Hình

2.6:



dụ

3…………………………………………………….24


3


DANH MỤC CÁC BẢNG BIỂU
Bảng

1.1:

Chức

năng

các

chân

board

Basys

3…………………………………..17
Bảng 2.1: Quy ước các chân sử đụng trên FPGA………………………………22

4


LỜI CẢM ƠN
Kính gửi đến thầy TS. XXX (khoa Điện Tử, trường Đại học Công Nghiệp
Hà Nội) lời cảm ơn chân thành sâu sắc. Cảm ơn thầy đã tận tình hướng dẫn, chỉ
dạy em bộ môn “Thiết kế hệ thống số” trong suốt quá trình học và thực hiện bài

tiểu luận này.
Em xin trình bày bài tiểu luận mơn học “Thiết kế hệ thống số” với đề tài
“Thiết kế máy bán nước tự động sử dụng ngôn ngữ mô tả phần cứng VHDL”. Do
còn hạn chế thời gian và kiến thức nên những nghiên cứu, tìm hiểu vẫn mang
tính tổng quan, định tính và có nhiều kiến thức mới nên khơng tránh khỏi sai sót.
Em rất mong được sự góp ý, chỉ bảo của thầy để bài tiểu luận đạt được kết quả
tốt hơn.
Hà Nội, ngày 11 tháng 10 năm 2020
Học viên thực hiện
Phạm Văn Thành

5


CHƯƠNG 1: GIỚI THIỆU VỀ NGÔN NGỮ MÔ TẢ PHẦN
CỨNG VHDL
1.1. Giới thiệu về VHDL
VHDL viết tắt của VHSIC HDL (Very-high-speed-intergrated-circuit
Hardware Description Language) hay ngôn ngữ mô tả phần cứng cho các vi số
mạch tích hợp tốc độ cao. 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 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ế.
Lịch sử phát triển của VHDL trải qua các mốc chính như sau:
1981: Phát triển bởi Bộ Quốc phịng Mỹ nhằm tạo ra một cơng cụ thiết kế
phần cứng tiện dụng có khả năng độc lập với công nghệ và giảm thiểu thời gian
cũng như chi phí cho thiết kế
1983-1985: Được phát triển thành một ngơn ngữ chính thống bởi 3 cơng ty
Intermetrics, IBM and TI.
1986: Chuyển giao toàn bộ bản quyền cho Viện Kỹ thuật Điện và Điện tử

(IEEE).
1987: Công bố thành một chuẩn ngôn ngữ IEEE-1076 1987.
1994: Công bố chuẩn VHDL IEEE-1076 1993.
2000: Công bố chuẩn VHDL IEEE-1076 2000.
2002: Công bố chuẩn VHDL IEEE-1076 2002
2007: công bố chuẩn ngôn ngữ Giao diện ứng dụng theo thủ tục VHDL
IEEE-1076c 2007
2009: Công bố chuẩn VHDL IEEE-1076 2009

6


VHDL ra đời trên yêu cầu của bài toán thiết kế phần cứng lúc bấy giờ, nhờ
sử dụng ngôn ngữ này mà thời gian thiết kế của sản phẩm bán dẫn giảm đi đáng
kể, đồng thời với giảm thiểu chi phí cho q trình này do đặc tính độc lập với
công nghệ, với các công cụ mô phỏng và khả năng tái sử dụng các khối đơn lẻ.
VHDL là một ngôn ngữ độc lập không gắn với bất kỳ một phương pháp thiết
kế, một bộ mô tả hay công nghệ phần cứng nào. Người thiết kế có thể tự do lựa
chọn công nghệ, phương pháp thiết kế trong khi chỉ sử dụng một ngơn ngữ duy
nhất. Các ưu điểm chính của VHDL là:
Tính cơng cộng: VHDL là ngơn ngữ được chuẩn hóa chính thức của IEEE do
đó được sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp
công cụ thiết kế mô phỏng hệ thống, hầu như tất cả các công cụ thiết kế của các
hãng phần mềm lớn nhỏ đều hỗ trợ biên dịch VHDL.
Được hỗ trợ bởi nhiều cơng nghệ: VHDL có thể sử dụng mô tả nhiều loại vi
mạch khác nhau trên những công nghệ khác nhau từ các thư viện rời rạc, CPLD,
FPGA, tới thư viện cổng chuẩn cho thiết kế ASIC.
Tính độc lập với cơng nghệ: VHDL hồn tồn độc lập với công nghệ chế tạo
phần cứng. Một mô tả hệ thống chức năng dùng VHDL thiết kế ở mức thanh ghi
truyền tải RTL có thể được tổng hợp thành các mạch trên các công nghệ bán dẫn

khác nhau. Nói một cách khác khi một cơng nghệ phần cứng mới ra đời nó có
thể được áp dụng ngay cho các hệ thống đã thiết kế bằng cách tổng hợp các thiết
kế đó lại trên thư viện phần cứng mới.
Khả năng mô tả mở rộng: VHDL cho phép mô tả hoạt động của phần cứng
từ mức thanh ghi truyền tải (RTL–Register Tranfer Level) cho đến mức cổng
(Netlist). Hiểu một cách khác VHDL có một cấu trúc mơ tả phần cứng chặt chẽ
có thể sử dụng ở lớp mơ tả chức năng cũng như mô tả cổng trên một thư viện
công nghệ cụ thể nào đó.
Khả năng trao đổi, tái sử dụng: Việc VHDL được chuẩn hóa giúp cho việc
trao đổi các thiết kế giữa các nhà thiết kế độc lập trở nên hết sức dễ dàng. Bản
7


thiết kế VHDL được mơ phỏng và kiểm tra có thể được tái sử dụng trong các
thiết kế khác mà khơng phải lặp lại các q trình trên. Giống như phần mềm thì
các mơ tả HDL cũng có một cộng đồng mã nguồn mở cung cấp, trao đổi miễn
phí các thiết kế chuẩn có thể ứng dụng ở nhiều hệ thống khác nhau.
1.2. Cấu trúc của chương trình mơ tả bằng VHDL
Cấu trúc của một chương trình VHDL gồm 3 phần: Khai báo thư viện
(Library), mô tả thực thể (Entity) và mơ tả kiến trúc (Architecture). Trong đó:
Library: 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,…
Entity: Mơ tả các chân vào/ra (In/Out pins) của mạch.
Architecture: chứa mã VHDL, mô tả mạch sẽ hoạt động như thế nào

Hình 1.1: Các thành phần của chương trình VHDL
1.2.1. Khai báo thư viện (Library)
Cú pháp:
LIBRARY library_name; --- Tên thư viện
USE library_name.package_name.package_parts; --- Mệnh đề cần sử dụng

Thơng thường có 3 gói từ 3 thư viện khác nhau thường được sử dụng trong thiết
kế.
- IEEE.STD_LOGIC (thư viện từ IEEE), cú pháp khai báo:
LIBRARY ieee;
8


USE ieee.std_logic_1164.all;
- STANDARD (thư viện STD), cú pháp khai báo:
LIBRARY std;
USE std.standard.all;
- WORK (thư viện work), cú pháp khai báo:
LIBRARY work;
USE work.all;
1.2.2. Entity (thực thể)
Entity mô tả các chân vào/ra (các port) của mạch, cấu trúc của Entity như
sau:
ENTITY entity_name IS
PORT (
port_name : signal_mode signal_type;
port_name : signal_mode signal_type;
...);
END entity_name;
Chế độ của tín hiệu (mode of the signal): IN, OUT, INOUT, hoặc BUFFER
Kiểu của tín hiệu (type of the signal): BIT, STD_LOGIC, INTEGER,…
Tên của thực thể (name of the entity): có thể sử dụng tên bất kỳ (ngoại trừ
các từ khóa của VHDL)
Ví dụ mạch cổng NAND:
Entity nand_gate is
Port (a, b: IN BIT;

Hình 1.2: Cổng NAND

9


x: OUT BIT;
End nand_gate;

1.2.3. Architecture (cấu trúc)
Mô tả kiến trúc chứa nội dung và chức năng của đối tượng thiết kế.
Cú pháp như sau:
ARCHITECTURE architecture_name OF entity_name IS
BEGIN
(code)
Có 3 kiểu mơ tả kiến trúc chính:
- Mơ tả kiến trúc theo mơ hình hoạt động:
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
các tín hiệu vào như thế nào và đưa ra kết quả gì ra đầu ra) dưới dạng các cấu
trúc ngơn ngữ lập trình bậc cao. Cấu trúc đó có thể là PROCESS , WAIT, IF,
CASE, FOR-LOOP…
Ví dụ:
ARCHITECTURE behavior OF nand IS
BEGIN
c <= NOT(a AND b);
END behavior;
- Mô tả kiến trúc theo mơ hình cấu trúc:
Mơ hình cấu trúc của một phần tử (hoặc hệ thống) có thể bao gồm nhiều cấp
cấu trúc bắt đầu từ một cổng logic đơn giản đến xây dựng mô tả cho một hệ
10



thống hồn thiện. Thực chất của việc mơ tả theo mơ hình cấu trúc là mơ tả các
phần tử con bên trong hệ thống và sự kết nối của các phần tử con đó.
Mơ tả cú pháp:
architecture identifier of entity_name is
Architecture_declarative_part
begin
all_concurrent_statements
end
[architecture][architecture_simple_name];
Khai báo các thành phần:
Component
Tên_componemt port [ danh sách ];
End component;
- Mơ tả kiến trúc theo mơ hình tổng hợp: Đó là sự kết hợp của hai mơ hình
mơ tả kiến trúc theo mơ hình hoạt động và theo cấu trúc
Ví dụ:
Entity adder is
Port (A,B,Ci : bit
S, Cout : bit);
End adder;
Architecture arc_mixed of adder is
Component Xor2
Port( P1, P2 : in bit;
11


PZ : out bit);
End compenent;
Signal S1 :bit;

Begin
X1 : Xor2 port map(A,B,S1);
Process (A,B,Cin)
Variable T1,T2,T3 : bit;
Begin
T1 := A and B;
T2 := B and Cin ;
T3 := A and Cin;
Cout := T1 or T2 or T3 ;
End process;
End arc_mixed ;
1.2.4. Chương trình con và gói
1.2.4.1. Chương trình con
Chương trình con là các đoạn mã dùng để mơ tả một thuật tốn, phép tốn
dùng để xử lý, biến đổi hay tính tốn dữ liệu. Có hai dạng chương trình con là
thủ tục và hàm.
Thủ tục thường dùng để thực hiện một tác vụ như biến đổi, xử lý hay kiểm
tra dữ liệu hoặc các tác vụ hệ thống như đọc ghi file, truy xuất kết quả ra màn
hình, kết thúc mơ phỏng,...
Cú pháp khai báo:
12


Procedure identifier [ (formal parameter list) ] is
[declarations]
Begin
Sequential statement (s)
End procedure identifier;
Trong đó: formal parameter list chứa danh sách các biến, tín hiệu hằng, hay
dữ liệu kiểu file, kiểu ngầm định là biến.

1.2.4.2. Gói
Gói (package) là tập hợp các kiểu dữ liệu, hằng số, biến, các chương trình
con và hàm dùng chung trong thiết kế. Một gói bao gồm hai phần là khai báo gói
và phần thân của gói.
Khai báo gói có cấu trúc như sau:
Package identifier is
[declarations]
End package body identifier;
Phần thân gói chứa các mơ tả chi tiết của hàm hay thủ tục, ngồi ra các gói
cịn được dùng để chứa các khai báo component dùng chung cho các thiết kế
lớn
1.3. Đối tượng và kiểu dữ liệu
1.3.1. Đối tượng dữ liệu
Trong VHDL có phân biệt 3 loại đối tượng dữ liệu là biến, hằng và tín hiệu.
Các đối tượng được khai báo theo cú pháp:
object_type identifier : type [:=initial value ];
13


Trong đó object_type có thể biến, hằng số hay tín hiệu.
Các đối tượng dữ liệu gồm: Hằng, biến, và tín hiệu
1.3.2. Kiểu dữ liệu
a) Kiểu dữ liệu tiền định nghĩa
VHDL bao gồm một nhóm các kiẻu dữ liệu tiền định nghĩa, được định rõ
thông qua các chuẩn IEEE 1076 và IEEE 1164. Cụ thể hơn, việc định nghĩa kiểu
dữ liệu như thế có thể tìm thấy trong các gói/ thư viện sau:
- Gói standard của thư viện std: Định nghĩa các kiểu dữ liệu BIT,
BOOLEAN,
INTEGER và REAL.
- Gói std_logic_1164 của thư viện ieee: Định nghĩa kiểu dữ liệu

STD_LOGIC và STD_ULOGIC.
- Gói std_logic_arith của thư viện ieee: Định nghĩa SIGNED và
UNSIGNED, cộng thêm nhiều hàm chuyển đổi dữ liệu, ví dụ: conv_integer(p),
conv_unsigned(p,b), conv_signed(p,b), và conv_std_logic_vector(p, b).
- Gói std_logic_signed và std_logic_unsigned của thư viện ieee: Chứa các
hàm cho phép họat động với dữ liệu STD_ LOGIC_ VECTOR được thực hiện
khi mà kiểu dữ liệu là SIGNED họăc UNSIGNED.
b) Kiểu dữ liệu người dùng định nghĩa
VHDL cũng cho phép người dùng tự định nghĩa các kiểu dữ liệu. Hai loại
kiểu dữ liệu người dùng định nghĩa được chỉ ra dưới đây bao gồm integer và
enumerated.
Kiểu integer người dùng định nghĩa:
Type integer is range – 2147843647 to + 2147843647; (được định nghĩa
trước bởi kiểu INTEGER)
14


Type natural is range 0 to +2147843647; (được định nghĩa trước bởi kiểu
NATURAL)
TYPE my_integer IS RANGE -32 TO 32; (một tập con các số intger mà
người dùng định nghĩa)
TYPE student_grade IS RANGE 0 TO 100; (một tâp con các số nguyên hoặc
số tự nhiên người dùng định nghĩa)
TYPE bit IS ('0', '1'); (được định nghĩa trước bởi kiểu BIT)
1.4. Mảng (Array)
Mảng là một tập hợp các đối tượng có cùng kiểu. Chúng có thể là một chiều
(1D), 2 chiều (2D) họăc một chiều của một chiều (1D x 1D) và cũng có thể có
những kích thước cao hơn.
Các kiểu dữ liệu có thể kết hợp trong mỗi loại này là như dưới đây:
_ Scalars: BIT, STD_ LOGIC, STD_ULOGIC, and BOOLEAN.

_Vectors: BIT_ VECTOR, STD_LOGIC_ VECTOR,
STD_ULOGIC_VECTOR, INTEGER, SIGNED, and UNSIGNED.
Cú pháp khởi tạo mảng:
Để chỉ định một kiểu mảng mới:
TYPE tên_kiểu IS ARRAY (thông số) OF kiểu_dữ_liệu;
Để tạo sử dụng kiểu mảng mới:
SIGNAL tên_tín_hiệu: tên_kiểu [:=giá_trị_đầu];
Trong cú pháp ở trên, một SIGNAL được khai báo. Tuy nhiên nó cũng có
thể là một CONSTANT hoặc một VARIABLE. Giá trị khởi tạo tùy chọn.

15


1.5. 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. Do đó, thường là rất cần thiết đối với việc
chuyển đổi dữ liệu từ một kiểu này sang một kiểu khác. Điề u này có thể được
thực hiện trong hai cách cơ bản: hoặc chúng ta viết một ít code cho điều đó,
hoặc chúng ta gọi một FUNCTION từ một gói được định nghĩa trước mà nó cho
phép thực hiện các phép biến đổi cho ta.
Nếu dữ liệu được quan hệ đóng ( nghĩa là 2 to án hạng có cùng kiểu cơ sở,
bất chấp đang được khai báo thuộc về hai kiểu lớp khác nhau), thì
std_logic_1164 của thư viện ieee cung cấp các hàm chuyển đổi dễ thực hiện.
1.6. Máy trạng thái
Một thiết kế mạch số có thể được chia làm 2 thành phần: bộ xử lý dữ liệu và
bộ điều khiển. Mối quan hệ giữa bộ điều khiển và bộ xử lý dữ liệu trong mạch
được biểu diễn
Máy trạng thái hữu hạn (FSM) là một cơng nghệ mơ hình hố đặc biệt cho
các mạch logic tuần tự. Mơ hình đó có thể rất được giúp đỡ trong thiết kế của
những loại hệ thống nào đó, đặc biệt là các thao tác của những hệ thống đó theo

khn dạng tuần tự hồn tồn xác định.
1.6.1. Thiết kế theo mơ hình máy Moore
Máy trạng thái moore là máy trạng thái mà dữ liệu ngõ ra được quyết định
bởi trạng thái hiện tại.

16


Hình1.3: Máy trạng thái Moore
1.6.2. Thiết kế theo mơ hình máy Mealy

Hình 1.4: Máy trạng thái Mealy
1.7. Tìm hiểu chung về board Basys 3
1.7.1. Đặc điểm của Kit Basys 3

17


Hình 1.5: Cấu tạo chi tiết board Basys 3

Hình 1.6: Sơ đồ chi tiết cách đặt chân board Basys 3
18


Bảng 1.1: Chức năng các chân board Basys 3
ST

Tên thành phần

T

1

Led báo nguồn

2

Cổng kết nối Pmod

ST
T
9
10

Tên thành phần
Nút reset FPGA
Chế độ chuyển lập
trình

Cổng Pmod tín hiệu
3

tương tự

11

Cổng kết nối USB

4

(XADC)

4 led 7 thanh

12

5

Nút gạt (16 nút )

13

Cổng kết nối VGA
Cổng USB kết nối

6

Đèn led (16 đèn)

14

7

Nút nhấn (5 nút)
Led báo mạch đã được

15

8

nạp


16

UART/JTAG
Kết nối nguồn điện
ngoài
Nút nguồn
Lựa chọn nguồn

điện nhảy
xuống FPGA
- I/O nhiều hơn: Cổng giao tiếp người dùng và số lượng ngõ ra trên bo tăng

gấp đôi, nâng cấp nhiều cổng bên ngoài và kèm theo cho lần đầu tiên trên linh
kiện lớp Basys một cầu USBUART.
- Cấu trúc hiện đại: Nhờ vào sự kết hợp từ họ Spartan 3E và lớp linh kiện
Artix-7, Basys 3 mang đến một sự tăng đáng kể trong khoảng nâng phần cứng.
Với FPGA Artix-7 mới mang đến gấp 15 lần các ô logic (từ 2.160 đến 33.280)
và nâng cấp nhiều bộ nhân thành các lớp DSP.
1.7.2. Các thành phần phần cứng sẽ được sử dụng trên kit Basys 3
➢ Các cổng kết nối thiết bị ngoại vi:
Cổng nạp chương trình đồng thời là cổng cấp nguồn sử dụng chuẩn Micro
USB thông dụng, 1 cổng COM, 1 cổng USB và 4 hàng Jump.
➢ Hệ thống nút nhấn và cần gạt
19


Hệ thống bao gồm 5 nút nhấn và 16 cần gạt chuyển đổi trạng thái, cần gạt có
thể chuyển đổi giữa 2 mức trạng thái cao thấp tùy thuộc vào vị trí của cần gạt.
➢ Hệ thống Led đơn
Basys 3 cung cấp 16 Led đơn tương ứng với 16 đầu ra dưới dạng nhị phân.

16 Led này được mắc Katot chung, do đó Led sẽ sáng khi đầu ra ở mức cao và
ngược lại.
➢ Hệ thống Led 7 thanh
Basys 3 trang bị 4 Led 7 thanh sử dụng để hiển thị kết quả thập phân, sử
dụng phương pháp quét Led thông qua 4 Transistor.
➢ Hệ thống phát xung
Kit Basys 3 đã tích hợp sẵn 1 bộ phát xung có tần số 100MHz được cấp bởi
chân W5.

20


CHƯƠNG 2: THIẾT KẾ MÁY BÁN NƯỚC TỰ ĐỘNG
2.1. Mô tả chung
Thực hiện nghiên cứu và lập trình hoạt động của máy bán nước tự động dựa
trên ngôn ngữ mô tả phần cứng VHDL và mô phỏng với phần mềm Xilinx ISE
15.2
Quá trình thiết kế mạch:
- Thiết kế sơ đồ khối cơ bản
- Viết code và biên dịch
- Mô phỏng kết quả
Chức năng máy bán nước tự động:
• Tính năng bán tự động 2 loại đồ uống: Soda, Coca.
• Người mua đưa tiền vào máy và lựa chọn đồ uống ưa thích
• Kiểm tra lượng tiền đưa vào và chọn loại đồ uống thích hợp
• Hồn trả tiền dư (nếu có)
Mơ tả giao diện hoạt động:
Tín hiệu vào/ra:
Xung đồng hồ clock (clk)
Loại tiền xu input (one_in, two_in)

Loại tiền xu thừa (one_out, two_out)
Loại đồ uống máy trả (soda, coca)
Nút lựa chọn đồ uống (sel)
Nút reset (rst)
Đèn Led đơn hiển thị
21


Hình 2.1: Minh họa hình ảnh máy bán nước tự động
Để lựa chọn đồ uống, người mua ấn vào phím bấm Selec, đèn LED sẽ báo
sáng cho biết người dùng có mua được đồ uống hay khơng. Người mua sẽ nạp
đủ tiền vào để mua hàng và hoàn trả số tiền dư nếu vượt quá giá trị đồ uống cần
mua. Quá trình được thực hiện với điều kiện người mua biết giá của các loại đồ
uống và trong một lần giao dịch, chỉ có thể mua được một loại đồ uống
2.1.1. Mục tiêu thiết kế
- Nghiên cứu thiết kế mạch số dựa trên ngôn ngữ mô tả phần cứng VHDL
- Thiết kế và thực thi mạch điều khiển trên FPGA cho máy bán nước tự động
2.1.2. Phương pháp nghiên cứu
- Tìm hiểu các thiết kế mạch đã có sẵn từ đó áp dụng để thiết kế.
- Đưa ra sơ đồ khối phù hợp với hoạt động của máy.
- Đưa ra chương trình lập trình cụ thể, mơ phỏng thiết kế.
- Nạp mạch trên FPGA, sửa lỗi và hoàn thiện.
2.1.3. Yêu cầu thiết kế
22


- Giao dịch với các mệnh giá tiền xu: 1000đ, 2000đ.
- Thực hiện giao dịch với 2 loại đồ uống.
- Sử dụng FPGA basys 3 Aritx 7 để điều khiển
- Sử dụng phần mềm Vivado 15.2 để viết code chương trình

2.1.4. Sơ đồ khối thiết kế máy bán nước tự động

Hình 2.2: Sơ đồ khối mạch điều khiển máy bán nước
ㅁ Đầu vào:
- one_in, two_in (đầu vào 1 bit) lần lượt là các đồng xu có mệnh giá 1000đ,
2000đ để cho vào máy bán nước.
- select (đầu vào 1 bit) là lựa chon đồ uống gồm 2 chế độ “0”, “1” lần lượt là chế
độ chọn cho 2 loại nước uống soda, coca.
- clock là xung đồng hồ khi gặp sườn dương của xung đồng hồ thì máy sẽ
chuyển trạng thái.
- reset là bit dùng để thiết lập lại trạng thái ban đầu.
ㅁ Đầu ra:
- soda, coca: là đầu ra 1 bit hiển thị led đơn cho nước uống ra.
- one_out, two_out : là đầu ra 1 bit hiển thị led đơn cho tiền thừa được đưa ra
tương ứng lần lượt là 1000đ, 2000đ.
2.1.5. Quy ước các kết nối vào/ra trên FPGA
23


Hình 2.3: Quy ước vào/ra trên FPGA
Bảng 2.1: Quy ước các chân sử đụng trên FPGA
Quy ước
clk
rst
one_in
two_in
sel
soda
coca
one_out

two_out

Giải thích
Xung đồng hồ
Reset trạng thái
Đồng xu mệnh giá 1000đ.
Đồng xu mệnh giá 2000đ.
1 bit lựa chọn của đầu vào select (sel=0: soda, sel=1: coca)
Đầu ra tương ứng với loại nước soda (giá mua: 1k)
Đầu ra tương ứng với nước coca (giá mua: 2k)
Tiền thừa mệnh giá 1000đ.
Tiền thừa mệnh giá 2000đ

24


2.2. Kết quả mơ phỏng máy bán nước tự động

Hình 2.4: Ví dụ mơ phỏng 1
Khi cho đồng xu mệnh giá 1000đ (R2=1) và 2000đ (T1=1) vào mua chai
coca (V16=1) với giá 2000đ thì số tiền cho vào máy sẽ là 3000đ, máy sẽ đưa ra
chai coca và trả lại tiền thừa 1000đ (L1=1).

Hình 2.5: Ví dụ mơ phỏng 2
Khi cho đồng xu mệnh giá 2000đ (T1=1) vào mua chai soda (V16=0) với giá
1000đ, máy sẽ đưa ra chai soda và trả lại tiền thừa 1000đ (L1=1).

25



×