You are on page 1of 51

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN THỰC HÀNH


KỸ THUẬT ĐIỆN TỬ SỐ

BỘ MÔN KỸ THUẬT ĐIỆN TỬ

Thái Nguyên năm 2021


MỤC LỤC
MỤC LỤC ........................................................................................................................i
CÁC QUY ĐỊNH KHI THỰC HÀNH ...........................................................................1
BÀI 1 SỬ DỤNG CÁC CÔNG CỤ MÔ PHỎNG TRONG THIẾT KẾ MẠCH
LOGIC SỐ .......................................................................................................................4
1.1. Mô tả bài toán và thiết kế thủ công ....................................................................4
1.1.1. Mô tả bài toán thiết kế ................................................................................4
1.1.2. Thiết kế theo phương pháp thủ công truyền thống .....................................4
1.2. Thiết kế và mô phỏng sử dụng phần mềm Logisim ..........................................6
1.2.1. Cài đặt phần mềm Logisim .........................................................................6
1.2.2. Các bước thiết kế và mô phỏng ...................................................................7
1.3. Mô phỏng thiết kế logic với Multisim 14 ........................................................11
1.3.1. Cài đặt phần mềm Mutilsim 14 .................................................................11
1.3.2. Sử dụng Multisim 14 trong phân tích mạch logic số ................................ 13
1.3.3. Sử dụng Multisim 14 trong thiết kế và mô phỏng logic số .......................16
1.4. Thiết kế và mô phỏng mạch logic số theo VHDL sử dụng Modelsim. ...........20
1.4.1. Giới thiệu và cài đặt Modelsim 10.5 .........................................................20
1.4.2. Sử dụng Model sim trong thiết kế và mô phỏng VHDL ...........................23
1.5. Nhiệm vụ sinh viên ..........................................................................................42

i
CÁC QUY ĐỊNH KHI THỰC HÀNH
A. Quy định chung
- Khi vào phòng thí nghiệm (TN409, TN411), sinh viên phải đeo thẻ; để giầy
dép, túi xách đúng nơi quy định; chỉ được thí nghiệm, thực hành đúng bài đúng
bàn; thực hiện qui trình, qui phạm kỹ thuật theo hướng dẫn của giáo viên; tuyệt
đối không được tự tiện sử dụng thiết bị khi chưa có sự đồng ý của cán bộ hướng
dẫn.
- Nghiêm cấm mang đồ vật liên quan đến chất dễ gây cháy nổ vào phòng máy; có
ý thức bảo vệ tài sản thiết bị, không làm hỏng mất các thiết bị.
- Khi ra khỏi phòng: Sinh viên tắt thiết bị theo đúng quy định, sắp xếp bàn ghế,
thiết bị, làm vệ sinh chỗ ngồi; nếu phát hiện thiết bị hư hỏng thì phải báo ngay
cho cán bộ hướng dẫn biết.
- Các trường hợp vi phạm nội quy đều bị xử lý; nếu vi phạm thiệt hại về tài sản
thiết bị thì phải bồi hoàn bằng thời giá hiện tại của thiết bị đó.
- Sinh viên phải có mặt đúng thời gian nhóm đã đăng ký với giáo viên (buổi sáng
từ 7h00, buổi chiều từ 13h30).
B. Quy định đối với thực hành học phần Kỹ thuật điện tử số
1. Chuẩn bị của sinh viên:
- Theo dõi các thông báo về lịch thực hành và chia nhóm thực hành của bộ môn
- Photo tài liệu thực hành do Bộ môn Kỹ thuật điện tử cung cấp
- Tham gia thực hành đầy đủ và nộp đủ báo cáo
- Trước khi tiến hành thực hành, phải chuẩn bị kiến thức cơ bản thông qua việc
nghiên cứu tài liệu hướng dẫn thực hành và tham khảo các sách chuyên nghành
khác, cần chú ý các nét chính:
+ Tên bài thực hành
+ Mục đích thực hành
+ Cơ sở lý thuyết
+ Thao tác thực hành
+ Lấy số liệu và phương pháp xử lý số liệu
- Trước khi thực hành học phần Thiết kế mạch tích hợp số, yêu cầu sinh viên biết
sử dụng máy phát hàm, máy hiện sóng, cài đặt các phần mềm hỗ trợ.
- Chuẩn bị các vật dụng, giấy vở ghi chép số liệu thực hành
1
Sự chuẩn bị của sinh viên phải được thông qua kiểm tra của cán bộ hướng dẫn
thực hành. Nếu không đạt, sẽ không được tham gia thực hành, việc sinh viên có được
thực hành lại vào buổi khác hay không sẽ do cán bộ hướng dẫn buổi thực hành đó
quyết định.
2. Trong các buổi thực hành
- Đi thực hành đúng giờ. Sau 15 phút (tính từ 7h00 buổi sáng và 13h00 buổi
chiều ) không được vào thực hành.
- Tuân thủ nội quy phòng thực hành và thực hiện thực hành theo hướng dẫn của
cán bộ hướng dẫn thực hành, không tự tiện rời phòng thực hành trong thời gian
làm thực hành nếu không được sự cho phép của cán bộ hướng dẫn thực hành.
- Sau khi kết thúc thực hành: dọn dẹp phòng thực hành, ký tên vào danh sách
trong nhật ký thực hành (theo các bài), xin xác nhận của cán bộ hướng dẫn.
3. Làm bù thực hành
- Trường hợp sinh viên bị trùng lịch thực hành với các môn học khác (hoặc đổi
lịch với lý do chính đáng) phải báo cáo với cán bộ hướng dẫn thực hành buổi đó
tối thiểu trước 02 ngày. Sinh viên phải chủ động liên lạc với các giáo viên bộ
môn để làm bù thực hành vào buổi khác.
- Trường hợp sinh viên xin phép nghỉ đột xuất: Sinh viên phải liên lạc với cán bộ
hướng dẫn thực hành trực tiếp nhóm của mình để xin phép. Ngay sau khi nghỉ
(có phép), sinh viên phải liên lạc với các giáo viên bộ môn để đăng ký làm bù
thực hành.
Lưu ý:
- Sinh viên không được phép bỏ bất kỳ một buổi thực hành nào. Chỉ giải quyết
cho làm bù thực hành với các sinh viên bị ốm và có giấy cho phép nghỉ học của
bác sỹ tại các bệnh viện hoặc trạm xá trường ĐH KTCN.
- Nếu sinh viên vắng từ 01 buổi trở lên, sẽ bị đánh giá điểm 0 của môn học Kỹ
thuật điện tử tương tự.
4. Viết báo cáo thực hành
- Sinh viên học học phần Kỹ thuật điện tử số phải hoàn thành 03 bài thực hành
trước khi thi kết thúc học phần có xác nhận của giáo viên hướng dẫn thực hành
(theo mẫu 02 cuối tài liệu hướng dẫn). Báo cáo thực hành được trình bày một

2
mặt trên khổ giấy A4, đóng quyển, bìa mềm mỗi sinh viên có một quyển báo
cáo riêng. Quyển báo cáo nộp cho giáo viên giảng dạy lý thuyết.
- Nội dung báo cáo bao gồm:
▪ Bìa và bìa phụ của quyển báo cáo (theo mẫu 01 của cuối tài liệu hướng dẫn)
▪ Tổng hợp những kết quả chính cho nội dung báo cáo
▪ Phương pháp xử lý kết quả thực hành
▪ Các kết quả, bản vẽ đặc tính
▪ Nhận xét kết quả:
+ Các kết quả thu được từ thực hành
+ So sánh kết quả thực hành với lý thuyết
+ Mức độ kết quả đạt được so với yêu cầu đề ra
▪ Kiến nghị.
5. Chấm điểm bài thực hành
Việc chấm điểm thực hành dựa trên điểm đã chấm của cán bộ hướng dẫn thực
hành (bao gồm việc đến thực hành đúng giờ, chuẩn bị bài đầy đủ, thái độ thực hiện
thực hành, phương pháp thực hiện thực hành) và nội dung sinh viên viết báo cáo thực
hành.

3
BÀI 1
SỬ DỤNG CÁC CÔNG CỤ MÔ PHỎNG TRONG THIẾT KẾ MẠCH
LOGIC SỐ
Mục đích
1) Sử dụng chương trình mô phỏng Logisim, Multisim để xây dựng mạch mô
phỏng, kiểm tra thiết kế logic theo phương pháp truyền thống
2) Sử dụng chương trình mô phỏng Modelsim để kiểm tra thiết kế logic theo
phương pháp sử dụng ngôn ngữ VHDL.
Công cụ phục vụ thực hành : Máy tính, phần mềm Notepad++, Multisim, Modelsim
Thời gian : 5 tiết
1.1. Mô tả bài toán và thiết kế thủ công
1.1.1. Mô tả bài toán thiết kế
Thiết kế mạch cảnh báo an ninh (bằng chuông) trên một chiếc xe ô tô. Biết hệ
thống cảnh báo sẽ hoạt động trong các trường hợp sau (chuông kêu):
- Khi xe đang hoạt động (biểu hiện là chìa khóa đề đang ở trong ổ) nhưng quên
không đóng cửa
- Khi xe đang hoạt động nhưng quên thắt dây an toàn
- Quên tắt đèn trong xe khi không dùng
1.1.2. Thiết kế theo phương pháp thủ công truyền thống
▪ Bước 1: Phân tích bài toán, các định các biến vào/ra logic
Từ bài toán ta xác định 4 biến đầu vào là: chìa khóa đề, trạng thái cửa xe, đèn xe
và dây an toàn, hàm đầu ra là trạng thái chuông báo. Ta quy ước các trạng thái của
hàm và các biến logic như sau:
Tên biến Ký hiệu Điều kiện Hoạt động
Tín hiệu chuông A A=1 Chuông kêu
Chìa khóa K K=1 Chìa khóa trong ổ đề
Cửa D D=1 Cửa mở
Đèn L L=1 Đèn sáng
Dây an toàn S S=1 Dây an toàn được thắt
▪ Bước 2: Xây dựng bảng chân lý
Từ phát biểu ngôn ngữ ta có bảng chân lý:

4
K D L S A
0 0 0 0 0
0 0 0 1 0
0 0 1 0 1
0 0 1 1 1
0 1 0 0 0
0 1 0 1 0
0 1 1 0 1
0 1 1 1 1
1 0 0 0 1
1 0 0 1 0
1 0 1 0 1
1 0 1 1 0
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
Từ bảng chân lý ta có thể viết hàm A(K,D,L,S) theo dạng tuyển chuẩn tắc như
sau:
A( K , D, L, S ) =  m(2,3, 6, 7,8,10,12,13,14,15) = K DLS + K DLS + KDLS + KDLS +
K DLS + K DLS + KDLS + KDLS + KDLS + KDLS
Hàm A(K,D,L,S) theo dạng hội chuẩn tắc như sau:
A( K , D, L, S ) =  M (0,1, 4,5,9,11) = ( K + D + L + S )( K + D + L + S )( K + D + L + S )
( K + D + L + S )( K + D + L + S )( K + D + L + S )

▪ Bước 3: Tối giản hàm logic


Tối giản hàm logic bằng phương pháp bìa Karnaugh dưới dạng tuyển ta
được

5
F ( K , D, L, S ) = KL + K S + KD

▪ Bước 4: Vẽ sơ đồ logic
- Sơ đồ logic tối giản dạng tuyển thực hiện bằng các cổng logic cơ bản như sau:
X1

2.5V

K U5
NOT U7
0
Key = Space U1
D AND2
1 U2
Key = Space U3 OR2
L U6
OR2
0 AND2
Key = Space NOT
S U4
0
Key = Space AND2

Với phương án thiết kế hoàn toàn dựa trên thủ công, đến bước này người thiết kế
sẽ phải lựa chọn các IC rời rạc phù hợp, lắp mạch và kiểm chứng thực tế.
1.2. Thiết kế và mô phỏng sử dụng phần mềm Logisim
1.2.1. Cài đặt phần mềm Logisim
Logisim là một công cụ giáo dục để thiết kế và mô phỏng các mạch logic kỹ
thuật số. Với giao diện thanh công cụ đơn giản và mô phỏng các mạch khi bạn xây
dựng chúng, nó đủ đơn giản để tạo điều kiện thuận lợi cho việc học các khái niệm cơ
bản nhất liên quan đến mạch logic. Với khả năng xây dựng các mạch lớn hơn từ các
mạch phụ nhỏ hơn và để vẽ các bó dây chỉ bằng một thao tác kéo chuột, Logisim có
thể được sử dụng để thiết kế và mô phỏng toàn bộ CPU cho mục đích giáo dục.

6
Hình 1.1 Giao diện chương trình Logisim
Logisim được sử dụng bởi sinh viên tại các trường cao đẳng và đại học trên khắp
thế giới trong nhiều loại lớp học, từ một đơn vị ngắn gọn về logic trong khảo sát khoa
học máy tính giáo dục phổ thông, các khóa học tổ chức máy tính, đến các khóa học
toàn học kỳ về kiến trúc máy tính.
Logisim là một chương trình chạy, được viết trên nền Java. Để down load
Logism, chúng ta có thể vào link sau đây:
https://sourceforge.net/projects/circuit/
Do phần mềm chạy trên nền java, ta cần phải cài đặt công cụ hỗ trợ
https://www.oracle.com/java/technologies/downloads/#java8-windows
1.2.2. Các bước thiết kế và mô phỏng
Với sự hỗ trợ của phần mềm Logisim, ta có thể dễ dàng thiết kế và mô phỏng bài
toán mô tả ở trên bằng máy tính (Thay cho phướng pháp thủ công) theo các bước như
sau:
▪ Bước 1 Khởi tạo biến logic vào và hàm logic đầu ra
Từ giao diện chính, click vào menu Window -> Computational Analysis. Trong
cửa sổ Computational Analysis, ta click vào Input, nhập và add các biến logic đầu vào
K, D, L, S. Tiếp đó ta ta click vào Output nhập và add hàm đầu ra A.

7
Hình 1.2 Nhập các đầu vào/ra
Bước 2: Nhập bảng chân lý
Trong cửa sổ Computational Analysis, chọn menu Table và nhập các giá trị
tương ứng mà tại đó hàm đầu ra bằng 0, 1 hoặc không xác định

Hình 1.3 Nhập bảng chân lý


▪ Bước 3: Xác định hàm logic tối giản
Trong cửa sổ Computational Analysis, chọn menu Minimized. Trong cửa sổ mới
này ta có thể chọn các hàm đầu ra thông qua việc click chọn output và chọn cách thức
tối giản theo dạng tuyển (Sum of Product) hay theo dạng hội (Product of Sum)

8
Hình 1.4 Tối giản dạng tuyển

Hình 1.5 Tối giản dạng hội


▪ Bước 4: Xây dựng mạch logic, kiểm tra hoạt động
Trong cửa sổ Computational Analysis, chọn Build Circuit, nhập tên và click vào
tùy chọn dùng các cổng logic cơ bản hay dùng NAND, dùng cổng hai đầu vào hay tùy
ý.

9
Hình 1.6 Lựa chọn vẽ mạch logic
Hình 1.7 Mô tả mạch logic thu được từ phép tối ưu dạng hội. Click vào các đầu
vào K, D, L, S ta có thể quan sát mọi thay đổi của đầu ra khi các đầu vào thay đổi. Từ
đó, ta có thể so sánh kết quả hoạt động của mạch mô phỏng so với bảng chân lý đã đề
ra ở trên.

Hình 1.7 Kết quả xây dựng mạch bằng AND, OR, NOT hai đầu vào
Hình 1.8 cho thấy, với sự hỗ trợ của phần mềm, ta dễ dàng biểu diễn hàm logic
dưới dạng NAND hai đầu vào và tự động đưa ra sơ đồ mạch tương ứng.

10
Hình 1.8 Kết quả xây dựng mạch bằng NAND 2 đầu vào
1.3. Mô phỏng thiết kế logic với Multisim 14
1.3.1. Cài đặt phần mềm Mutilsim 14
Để bắt đầu quá trình sử dụng phần mềm Mutilsim 14, chúng ta copy hoặc tải
phần mềm Mutilsim 14 về máy tính. Sau đó tiến hành cài đặt, dung lượng tối thiểu để
cài đặt phần mềm trên ổ C ít nhất là 2GB. Click vào link dưới đây để down phần mềm
về và giải nén.
https://drive.google.com/file/d/0B2Ts0TXptTLmNWw2Y1RTc1hiWFk/view?usp=sha
ring&resourcekey=0-ZDKyMxOFmRbcc448AesTzw
Khi ấn file “NI_Circuit_Design_Suite_14_0”, kích chuột phải ấn Open, màn
hình hiển thị giao diện:

Hình 1.9 Giao diện cửa sổ cài đặt

11
Kích chọn Unzip -> Install NI_Circuit_Design_Suite_14_0, sau đó mở file NI
License Activator 1.2 -> kích chọn Options -> Generate Serial Number. Copy mã key
rồi điền vào mục Serial Number

Hình 1.10 Giao diện cửa sổ lấy mã và nhập mã cài đặt


Sau đó ấn Next cho đến khi hoàn thành cài đặt, tiến hành reset máy tính. Sau đó
mở chạy file NI License Activator 1.2,

Hình 1.11 Giao diện cửa sổ Active


Tùy vào việc chọn lựa một trong các phiên bản Base Edition, Full Edition,
Power Pro Edition mà ta click chọn kích chuột phải vào và kích chọn Active (Thông
thường chọn bản Power Pro Edition). Sau khi Active xong, chúng ta kết thúc quá trình
cài đặt và chúng ta bắt đầu tìm hiểu về phần mềm Mutilsim 14

12
1.3.2. Sử dụng Multisim 14 trong phân tích mạch logic số

Hình 1.12 Mạch cần phân tích


Bước 1: Vẽ mạch điện logic như hình vẽ
- Thực hiện mở một cửa sổ để tiến hành vẽ mạch. Kích chuột vào file ->New ->
Create.

Hình 1.13 Mở file vẽ mạch


- Tiến hành đặt tên file và lưu trữ: Kích chuột vào file -> Save -> đặt tên file (ví
dụ alarm.ms14 ), chọn thư mục lưu trữ, ấn OK.
- Lấy linh kiện ra bản vẽ:
+ Để thực hiện lấy cổng NOT, chúng ta vào thanh công cụ linh kiện
(Compnent), kích vào biểu tượng TTL, màn hình hiển thị

13
Hình 1.14 Lấy linh kiện cần vẽ
+ Kích chọn transistor NOT nếu nhìn thấy ngay trong mục Compnent hoặc ấn
Search để tìm kiếm, sau đó ấn OK, Di chuyển con trỏ đến vị trí ta muốn đặt
nguồn. Kích chuột vào nơi chúng ta muốn đặt.
XLC1

AB

K D L S

U5
U7

NOT U1
AND2
U2
U3 A
U6 OR2

OR2
AND2
NOT

U4

AND2

Hình 1.15 Mạch cần phân tích được vẽ lại và nối với Logic Converter

14
+ Cứ như vậy chúng ta tiến hành lấy hết các linh kiện như trong bản vẽ, tiến
hành sắp xếp linh kiện, kết nối như trong sơ đồ mạch điện
Bước 2: Thực hiện chuyển đổi logic
- Kích đúp vào biểu tượng của máy Logic Converter.
- Kích nút và chờ cho đến khi cột có dấu ? hiển thị kết quả
đầy đủ (0 hoặc 1) ta sẽ được bảng sự thật.
- Kích vào nút ta sẽ được biểu thức Boolean chưa đơn giản
hiển thị phía bên dưới máy Logic Converter ta có kết quả sau:
Out=A'B'CD'+A'B'CD+A'BCD'+A'BCD+AB'C'D'+AB'CD'+ABC'D'+
+ABC'D+ABCD'+ABCD

Hình 1.16 Bảng chân lý của mạch cần phân tích


- Tiếp tục kích vào nút ta sẽ được biểu thúc Boolean đơn
giản hiển thị phía dưới máy Logic Converter là A'C+AD'+AB (Chú ý ở đây A,
B, C, D tương ứng với K, D, L, S)
- Kích nút ta sẽ được mạch điện của biểu thức Boolean tối
giản tương đương với mạch điện ban đầu.

15
A B C D
12 16

15

13
14
17 18

19 20

21

Hình 1.17 Mạch logic tối giản


- Kích vào nút ta sẽ được mạch điện dùng toàn cổng NAND
hai đầu vào tương ứng với mạch điện trên.
A B C D

12
14 16
15 17
13 20
19 21
18

22

Hình 1.18 Mạch tương đương dùng NAND hai đầu vào
1.3.3. Sử dụng Multisim 14 trong thiết kế và mô phỏng logic số
Bước 1: Tạo bảng chân lý sử dụng bộ chuyển đổi logic
- Mở file mới (File/Open)
- Từ menu Simulate/Instruments/Logic Converter đặt vào cửa sổ thiết kế mạch

Hình 1.19 Khối Logic Converter


- Kích đúp vào biểu tượng của Logic Converter vừa lấy ra.

16
Hình 1.20 Bảng chân lý tự động trong khối Logic Converter

- Kích vào A, B, C, D để tạo 3 ngõ vào (Tương ứng với K, D, L, S), các trường
hợp có thể có của 4 đầu vào sẽ được hiển thị phía dưới nó.

Hình 1.21 Tạo bảng chân lý 4 đầu vào và một đầu ra


- Ở cột có dấu ? cho phép chúng ta tạo giá trị ngõ ra mà chúng ta muốn thiết kế,
chúng ta chỉ cần kích chuột vào để thay đổi thành, giá trị 0 hoặc 1 hoặc x. Ví dụ
ở đây hàm đầu ra là:
F ( A, B, C , D) =  m(2,3, 6, 7,8,10,12,13,14,15)

17
Hình 1.22 Tạo bảng chân lý của mạch logic cần thiết kế
Bước 2: Thiết kế và mô phỏng sử dụng bộ chuyển đổi logic
Sau khi chúng ta tạo xong bảng chân lý cho mạch số mà chúng ta cần thiết kế.
Bây giờ chúng ta sẽ thực hiện việc chuyển đổi.
- Kích chuột vào nút , ta sẽ được biểu thức Boolean hiển thị
phía dưới máy Logic Converter theo dạng tuyển chính quy là:
F(A,B,C,D)=A'B'CD'+A'B'CD+A'BCD'+A'BCD+AB'C'D'+AB'CD'+ABC'D'+
ABC'D+ABCD'+ABCD
- Tiếp tục Kích vào nút , ta sẽ được biểu thức Boolean đơn
giản hiển thị phía dưới máy Logic Converter là: A'C+AD'+AB
- Tiếp tục Kích vào nút , ta sẽ được mạch điện của biểu thức
Boolean đơn giản như sau:
XLC1

AB
A B C D
1 5

2
3
6 7

8 9

10

Hình 1.23 Mạch logic tối giản

18
- Kích chuột vào nút ta sẽ được mạch điện dùng toàn cổng NAND hai ngõ vào
tương đương với mạch điện trên.
A B C D

12
14 16
15 17
13 20
19 21
18

22

Hình 1.24 Mạch logic tối giản dùng NAND hai đầu vào
Để mô phỏng hoạt động, ta chuyển các đầu vào A, B, C, D về lại dạng K, D, L, S
và đưa thêm các đầu vào số có thể thay đổi trạng thái và đầu ra là LED để kiểm chứng
hoạt động so với yêu cầu của bài toán thiết kế.

Hình 1.25 Lấy đầu vào số đại diện cho K, D, L, S

19
Hình 1.26 Lấy đầu ra LED đại diện cho A
X1

2.5V

K U5
U7
0
Key = Space NOT U1
D AND2
1 U2
U3
Key = Space U6 OR2
L OR2
0 AND2
NOT
Key = Space
S U4
0
Key = Space AND2

Hình 1.27 Mạch mô phỏng kiểm chứng


Hình 1.27 ở trên minh họa trường hợp K, D, L, S bằng “0100” nên LED ra tắt.
Điều này đúng so với bảng chân lý cần thiết kế.
1.4. Thiết kế và mô phỏng mạch logic số theo VHDL sử dụng Modelsim.
1.4.1. Giới thiệu và cài đặt Modelsim 10.5
Do các ngôn ngữ mô tả phần cứng như VHDL được chuẩn hóa bởi IEEE và
được công bố rộng rãi nên có rất nhiều các phần mềm mô phỏng mạch số được nhiều

20
công ty khác nhau phát triển. Điểm chung của các chương trình này là đều phải có một
trình biên dịch và có khả năng mô phỏng mạch theo thời gian thực, kết xuất kết quả
một số dạng nhất định như File text, file định kiểu, hay phổ biến và trực quan nhất là
dưới dạng giản đồ sóng. Dưới đây sẽ giới thiệu chương trình mô phỏng là ModelSim,
đây là một chương trình mô phỏng khá mạnh và chính xác được phát triển bởi Mentor
Graphics.

Hình 1.28. Giao diện chương trình Modelsim


Để cài đặt ModelSim 10.5 trên hệ điều hành Windows 64 bit ta làm như sau:
Bước 1: Tải trực tiếp phần mềm từ link sau:
https://drive.google.com/file/d/1MI-NcHX7D_NzdQ2O9e_kXx79kbuEyz33/
Bước 2: Sau khi tải file và giải nén, ta tiến hành cài đặt bình thường cho đến lúc cuối
thì không chọn cài Key driver

Hình 1.29. Không chọn cài Key driver


21
Bước 3: Copy file MentorKG.exe và patch64_dll.bat trong thư mục Crack đã giải nén
vào thư mục cài đặt ModelSim cho win64 (Thông thường là C:\modeltech_10.5\
win64)
Bước 4: Chạy file patch64_dll.bat và save as dưới tên file lic_modelsim.txt vào thư
mục nào đó (nên dùng C:\modeltech64_10.5)
Bước 5: Tạo một biến môi trường hệ thống tên là LM_LICENSE_FILE và trỏ đến file
LICENSE (Control Panel-> System-> Advanced System seting-> Environment
Variables):
LM_LICENSE_FILE = C:\modeltech64_10.5\lic_modelsim.txt

Hình 1.30. Tạo biến môi trường hệ thống


Chú ý:
Trong một số trường hợp có thể phải chạy Licensing Wizard, click "Install a
new license" và trỏ tới file C:\modeltech64_10.5\ LICENSE.txt

22
Sau đây chúng ta sẽ lần lượt học cách sử dụng chương trình thông qua việc thiết
kế và mô phỏng bài toán đã mô tả ở trên.
1.4.2. Sử dụng Model sim trong thiết kế và mô phỏng VHDL
1.4.2.1. Viết mã nguồn VHDL
Mã nguồn cho mạch logic tổ hợp trên có cấu trúc như Hình 1.31. Chương trình
được soạn thảo trên phần mềm Notepad++. Để thực hiện được việc này, người thiết kế
phải có kiến thức cơ bản về thiết kế logic dùng VHDL.

Hình 1.31. Chương trình Notepad++


Trong Modelsim cũng tích hợp một trình soạn thảo file nguồn tuy vậy cũng như
các ngôn ngữ lập trình khác mã nguồn VHDL của thiết kế có thể được soạn thảo bằng
bất kỳ một chương trình soạn thảo nào. Một trong những chương trình soạn thảo khá
tốt và tiện dụng là Notepad++ (https://notepad-plus-plus.org/download/) , chương trình
này hỗ trợ hiện thị nhiều ngôn ngữ lập trình khác nhau trong đó có VHDL và Verilog.
File nguồn của mã VHDL có đuôi là .vhd. Khi soạn thảo file có đuôi dạng này băng
Notepad thì toàn bộ các từ khóa, cấu trúc ngôn ngữ được làm đậm hoặc đổi màu cho
dễ quan sát và sửa lỗi.
Để đơn giản và dễ hiểu phần này ta sẽ minh họa các bước sử dụng Modelsim
thông qua ví dụ về một mạch logic tổ hợp có hàm logic F được mô tả như trên (Phần
1.1.1). Trình tự các bước thực hiện như sau:

23
Bước 1: Tạo trong thư mục D:\VD_Modelsim một thư mục có tên BT1. Thư mục
chúng ta làm việc sẽ là D:\VD_Modelsim\BT1
Bước 2: Trong Notepad++ tạo mới một file bằng cách chọn menu File/new, soạn thảo
file với nội dung, soạn thảo xong, sau đó chọn File/Save, và lưu file dưới tên Vd1.vhd
trong thư mục làm việc D:\VD_Modelsim\BT1, lưu ý để lưu dưới dạng .vhd ở ô chọn
File types phải chọn là All files(*) (Xem Hình 1.32)

Hình 1.32. Minh họa bước 2


▪ Bước 3: Soạn nội dung Vd1.vhd
---------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---------------------------------
entity BT1 is
port (a : in std_logic;
b : in std_logic;
c : in std_logic;
d : in std_logic;
F : out std_logic
);
end BT1;
-----------------------------------------------
architecture dataflow of BT1 is
begin
F <= '1' WHEN (a='0' and b='0'and c='1'and d='0') ELSE
'1' WHEN (a='0' and b='0'and c='1'and d='1') ELSE
'1' WHEN (a='0' and b='1'and c='1'and d='0') ELSE
'1' WHEN (a='0' and b='1'and c='1'and d='1') ELSE
'1' WHEN (a='1' and b='0'and c='0'and d='0') ELSE
'1' WHEN (a='1' and b='0'and c='1'and d='0') ELSE
'1' WHEN (a='1' and b='1'and c='0'and d='0') ELSE
24
'1' WHEN (a='1' and b='1'and c='0'and d='1') ELSE
'1' WHEN (a='1' and b='1'and c='1'and d='0') ELSE
'1' WHEN (a='1' and b='1'and c='1'and d='1') ELSE
'0';
end dataflow;
Có rất nhiều cách thức khác nhau để tạo ra các mã nguồn VHDL cho ví dụ trên.
SV có thể đọc thêm bài giảng để hiểu thêm một số cách thức thiết kế khác.
1.4.2.2. Mô phỏng sử dụng Modelsim
Để tạo mô phỏng thiết kế trên Modelsim ta có ba sự lựa chọn: Mô phỏng kiểm
tra thiết kế bằng thủ công, mô phỏng thông qua các câu lệnh hoặc thông qua giao diện
GUI (giao diện đồ họa với người dùng).
▪ Mô phỏng kiểm tra file thiết kế bằng thủ công (không dùng Testbench)
Với thiết kế VHDL đơn giản như trên, ta có thể kiểm tra file thiết kế Vd1.vhd
bằng thủ công theo các bước như sau:
Bước 4.1: Khởi động Modelsim, Tạo project mới: File → New → Project …

Hình 1.33. Tạo project


Tiếp đó, ta xác định tùy chọn cho project mới: Add Existing File, Create New
File

Hình 1.34. Giao diện sau khi chọn File → New → Project …

25
▪ Create New File: Dùng khi muốn soạn thảo ngay file .vhd trên môi trường
Modelsim. Đối với Create New File, chương trình sẽ chuyển sang cửa sổ Create
Project File. Ở cửa sổ này tại File Name chúng ta nhập tên file (trong hình sau tên
file được nhập và chuongtrinh1), và Add file as type ta click vào mũi tên xuống
chọn ngôn ngữ là VHDL và mục Folder ta chọn Top Level như Hình 1.35.

Hình 1.35. Giao diện Create New File


Chương trình sẽ thêm file có tên Vd1.vhd vào project đồng thời mở ra cửa sổ
(phía bên phải) cho chúng ta soạn thảo chương trình.

Hình 1.36. Giao diện Add Existing File


▪ Add Existing File: Đối với tùy chọn Add Existing File chương trình sẽ mở ra cửa
sổ Add file to Project để ta thêm 1 file chương trình đã có sẵn (soạn thảo bằng các
trình soạn thảo không như: notepad, notepad tab, notepad++, v.v. và lưu với tên
file có phần mở rộng .v) vào thiết kế. Ở cửa sổ này mục File Name ta click chuột
vào Browser chọn file cần thêm vào thiết kế, phần Add file as type ta bấm vào mũi

26
tên xuống chọn VHDL, mục Folder vẫn chọn Top Level . Chương trình sẽ thêm
file vừa chọn vào thiết kế để chúng ta có thể mở xem hoặc chỉnh sửa nếu cần thiết.
Chú ý: Ta cũng có thể tạo thêm file mới trong thiết kế hoặc tiếp tục bổ sung thêm 1
file chương trinh đã soạn thảo sẵn vào thiết kế bằng cách ở cửa sổ Project (bên trái) , ta
click chuột file chọn Add to Project , sau đó chọn New File … (tạo mới) hoặc Existing
File …(thêm vào thiết kế file đã có sẵn). Các bước còn lại quay lại giống nhưng các
bước đã hướng dẫn ở trên.

Hình 1.37. Giao diện sau khi đã tạo hoặc thêm file .vhd
Bước 5.1: Biên dịch, Sau khi đã soạn thảo xong chương trình hoặc thêm các file
chương trình đã có sẵn vào thiết kế ta tiến hành dịch chương trình bằng cách vào
menu Compile → Compile All hoặc click chuột phải vào file .vhd trong cửa sổ
project và chọn như Hình 1.38.

Hình 1.38. Thao tác biên dịch chương trình

27
Phần mềm ModelSim sẽ dịch file chương trình và thông báo kết quả. Trường
hợp chương trình có lỗi thì trình dịch sẽ báo lỗi. Ta có thể click đôi chuột vào ngay
dòng báo lỗi để xem thông tin chi tiết về lỗi gặp phải.
Nếu biên dịch có lỗi: click đôi chuột vào ngay dòng báo lỗi để xem thông tin
chi tiết về lỗi gặp phải. Ta đọc phần báo lỗi trên, suy nghĩ và tìm sửa lỗi mắc phải,
lưu lại chương trình và dịch lại cho đến khi không còn lỗi nữa.

Hình 1.39. Biên dịch có lỗi


▪ Biên dịch không lỗi

Hình 1.40. Biên dịch không có lỗi


Bước 6.1: Chạy mô phỏng, thêm các tín hiệu vào/ra trong cửa sổ Object vào cửa sổ
wave.

28
Hình 1.41. Tạo project, thêm và biên dịch file Vd1
Bước 7.1: Đặt các tín hiệu đầu vào. Do 4 đầu vào a,b,c,d theo thứ tự có trọng số giảm
dần nên để quét tất cả các trường hợp của đầu vào (từ 0000 đến 1111) ta có thể cho các
đầu vào thay đổi dưới dạng clock. Trong cửa sổ wave, click chuột phải vào các tín
hiệu a, b, c, d và chọn clock (Hình 1.42). Các tham số để cài đặt clock cho các đầu vào
a, b, c, d được mô tả theo Hình 1.43. Trong đó, chu kỳ clock của d, c, b, a tăng dần
(lần lượt là 10, 20, 40, 80 ns). Ta chọn First Edge ở chế độ Falling sẽ làm cho a, b, c ,d
chạy từ 0000 đến 1111. Kết quả thu được sau khi mô phỏng 100ns được thể hiện trong
Hình 1.44. Ta cũng có thể sử dụng lệnh Force hoặc NoForce để đạt tín hiệu vào ở dạng
bất kỳ.

Hình 1.42. Đặt tín hiệu vào a bằng Clock

29
Hình 1.43. Thông số để đặt tín hiệu vào a,b,c,d bằng Clock

Hình 1.44. Kết quả mô phỏng sau khi chạy 80 ns


▪ Mô phỏng sử dụng file Testbench thông qua câu lệnh
Bước 4.2: Khởi động Modelsim, tại menu File chọn Change Directory, tại menu
Change directory chọn Chọn đường dẫn tới thư mục làm việc
D:\VD_Modelsim\BT1\ chứa file nguồn vừa tạo Vd1.vhd.

Hình 1.45. Minh họa bước 4

30
Bước 5.2: Tạo thư viện work bằng cách gõ lệnh sau vào cửa sổ Transcript của
Modelsim:
vlib work

Hình 1.46. Minh họa bước 5


Bước 6.2: Biên dịch các mã nguồn bằng cách gõ các lệnh sau vào cửa sổ Transcript
vcom Vd1.vhd

Hình 1.47. Minh họa bước 6

31
Khi trình biên dịch phát hiện ra lỗi về mặt cú pháp thì nó sẽ thông báo chính
xác dòng tương ứng gây ra lỗi. Nếu như mã nguồn của thiết kế không có lỗi thì biên
dịch xong sẽ cho ra kết quả như Hình 1.47.
Kiểm tra nhanh thiết kế bằng cách đưa vào đầu vào các giá trị cố định và kiểm
tra trực tiếp kết quả đầu ra. Kiểm tra nhanh cho phép phát hiện và sửa những lỗi về
mặt chức năng đơn giản trước khi bước vào bước kiểm tra với số lượng lớn tổ hợp giá
trị đầu vào.
Bước 7.2: Để kiểm tra nhanh mạch logic thiết kế ở trên tạo thêm một file VD1_tb.vhd
trong thư mục làm việc với nội dung như sau như sau:
-----------------Testbench 1 cua Vd1--------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-------------------------------------------
entity BT1_test is
end BT1_test;
-------------------------------------------
architecture test of BT1_test is
component BT1 is
port (a,b,c,d : in std_logic;
F : out std_logic
);
end component;
signal ain,bin,cin,din,Fout : std_logic;
begin
DUT:BT1 port map(ain, bin,cin, din, Fout);
process
variable err_cnt: integer := 0;
begin
-- Test case 2
ain <= '0';
bin <= '0';
cin <= '1';
din <= '0';
wait for 10 ns;
assert (Fout='0')
report "Failed Case1!" severity error;
if (Fout='1') then
err_cnt := err_cnt +1;
end if;
-- Test case 3
ain <= '0';
bin <= '0';
cin <= '1';
din <= '1';
wait for 10 ns;
assert (Fout='1')
report "Failed Case1!" severity error;
32
if (Fout='0') then
err_cnt := err_cnt +1;
end if;
-- Test case 6
ain <= '0';
bin <= '1';
cin <= '1';
din <= '0';
wait for 10 ns;
assert (Fout='1')
report "Failed Case1!" severity error;
if (Fout='0') then
err_cnt := err_cnt +1;
end if;
-- Test case 7
ain <= '0';
bin <= '1';
cin <= '1';
din <= '1';
wait for 10 ns;
assert (Fout='1')
report "Failed Case1!" severity error;
if (Fout='0') then
err_cnt := err_cnt +1;
end if;
-- Test case 8
ain <= '1';
bin <= '0';
cin <= '0';
din <= '0';
wait for 10 ns;
assert (Fout='1')
report "Failed Case1!" severity error;
if (Fout='0') then
err_cnt := err_cnt +1;
end if;
-- Test case 10
ain <= '1';
bin <= '0';
cin <= '1';
din <= '0';
wait for 10 ns;
assert (Fout='1')
report "Failed Case1!" severity error;
if (Fout='0') then
err_cnt := err_cnt +1;
end if;
-- Test case 12
ain <= '1';
bin <= '1';
cin <= '0';
din <= '0';
wait for 10 ns;
33
assert (Fout='1')
report "Failed Case1!" severity error;
if (Fout='0') then
err_cnt := err_cnt +1;
end if;
-- Test case 13
ain <= '1';
bin <= '1';
cin <= '0';
din <= '1';
wait for 10 ns;
assert (Fout='1')
report "Failed Case1!" severity error;
if (Fout='0') then
err_cnt := err_cnt +1;
end if;
-- Test case 14
ain <= '1';
bin <= '1';
cin <= '1';
din <= '0';
wait for 10 ns;
assert (Fout='1')
report "Failed Case1!" severity error;
if (Fout='0') then
err_cnt := err_cnt +1;
end if;
-- Test case 15
ain <= '1';
bin <= '1';
cin <= '1';
din <= '1';
wait for 10 ns;
assert (Fout='1')
report "Failed Case1!" severity error;
if (Fout='0') then
err_cnt := err_cnt +1;
end if;
-- summary of all the tests to see if any errors
if (err_cnt=0) then
assert false report "Testbench completed successfully!"
severity note;
else
assert true
report "Something wrong, try again pls!"
severity error;
end if;
wait; -- stop running
end process;
end test;
--------------------------------------------------------------
configuration CFG_test of BT1_test is
for test
34
end for;
end CFG_test;
--------------------------------------------------------------
VD1_tb.vhd là một thiết kế mà không chứa bất cứ cổng vào ra nào ở phần
khai báo. Kiến trúc của nó gồm hai phần, phần khai báo tín hiệu sẽ khai báo các tín
hiệu vào ra của BT1. Phần hai là khai báo sử dụng BT1 như một khối con có tên là dut
(device under test) và gán các cổng vào ra tương ứng như trên.
Bước 8.2: Tiến hành biên dịch file VD1_tb.vhd này bằng lệnh sau trong cửa sổ
transcript tương tự làm trong bước 6.
vcom VD1_tb.vhd
Bước 9.2: Khởi tạo mô phỏng thiết kế bằng lệnh:
vsim BT1_test

Hình 1.48. Minh họa bước 9


Bước 10.2: Bổ xung các tín hiệu vào cửa sổ wave form để quan sát, để thực hiện gõ
các lệnh sau vào cửa sổ Transcript
add wave sim:/BT1_test/ain
add wave sim:/BT1_test/bin
add wave sim:/BT1_test/cin
add wave sim:/BT1_test/din
add wave sim:/BT1_test/Fout
Mỗi lệnh trên sẽ hiển thị một tín hiệu tương ứng vào giản đồ sóng, bằng cách đó
ta có thể lựa chọn các tín hiệu nhất định để theo dõi. Sau khi thực hiện các bước trên
thì có thể tiến hành chạy mô phỏng. Mô phỏng có thể chạy bằng nút công cụ Run trên
thanh công cụ của cửa sổ giản đồ sóng:

35
Hình 1.49. Minh họa bước 10
Bước 11.2: Chạy mô phỏng và quan sát kết quả trên waveform bằng cách gõ lệnh run
100 ns vào cửa sổ Transcript sau đó mở rộng cửa sổ Waveform bên phải để quan sát.
run 1000 ns
Khi gặp lệnh này chương trình sẽ chạy mô phỏng trong 1000 ns. Kết quả ra như sau:

Hình 1.50. Minh họa bước 11


Bước 12.2: Tạo một file run.do lưu vào trong thư mục làm việc với nội dung như sau:
quit -sim
vlib work
vcom Vd1.vhd
vcom VD1_tb.vhd
vsim BT1_test
add wave sim:/BT1_test/ain
add wave sim:/BT1_test/bin
add wave sim:/BT1_test/cin

36
add wave sim:/BT1_test/din
add wave sim:/BT1_test/Fout
run 1000 ns
Dòng thứ nhất để kết thúc bất kỳ mô phỏng nào đang thực thi nếu nó tồn tại,
dòng thứ hai tạo thư viện work nếu nó chưa tồn tại, tiếp đến là các lệnh vcom để biên
dịch các file mã nguồn từ thấp đến cao. Lệnh vsim để tiến hành mô phỏng, sau đó là
các lệnh bổ xung tín hiệu cần theo dõi vào giản đồ sóng. Lệnh cuối cùng là lệnh run
dùng để chạy mô phỏng.
Bước 13.2: Trong cửa sổ transcript của modelsim để biên dịch và chạy lại mô phỏng ta
chỉ như sau.
do run.do
Phần trên mô tả các bước sử dụng Modelsim để kiểm tra nhanh một thiết kế
VHDL bao gồm cả kiểm tra lỗi cú pháp (Complile) và kiểm tra lỗi thiết kế
(waveform). Việc kiểm tra lỗi thiết kế được thực hiện nhờ file testbench VD1_tb.vhd.
Tuy nhiên, file này chỉ bao gồm các kịch bản cho phép kiểm tra nhanh 13 trạng thái
mà Fout đạt giá trị bằng 1 chứ không phải tất cả các trạng thái có thể có của đầu vào.
Để kiểm tra đầy đủ, ta sử dụng file testbench VD1_tb2.vhd có nội dung như sau:
-----------------Testbench 2 cua VD1--------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-------------------------------------------
entity BT1_test is
end BT1_test;
-------------------------------------------
architecture test of BT1_test is
type sample is record
a,b,c,d: std_logic;
end record sample;
type sample_array is array (natural range <>) of sample;
constant test_data: sample_array :=
(
('0','0','0','0'),('0','0','0','1'),('0','0','1','0'),
('0','0','1','1'),('0','1','0','0'),('0','1','0','1'),
('0','1','1','0'),('0','1','1','1'),('1','0','0','0'),
('1','0','0','1'),('1','0','1','0'),('1','0','1','1'),
('1','1','0','0'),('1','1','0','1'),('1','1','1','0'),
('1','1','1','1')
);
component BT1 is
port (a,b,c,d : in std_logic;
F : out std_logic
);
end component;
-- khai bao cac tin hieu vao ra cho DUT
37
signal ain,bin,cin,din,Fout : std_logic;
begin
process
begin
for i in test_data'range loop
ain <= test_data(i).a;
bin <= test_data(i).b;
cin <= test_data(i).c;
din <= test_data(i).d;
wait for 10 ns;
end loop;
wait;
end process;
DUT:BT1 port map(ain, bin,cin, din, Fout);
end;
---------------------------------------------
Ở đây, tất cả các trường hợp có thể có của đầu vào đã được đưa vào trong mảng
test_data. Với việc sử dụng vòng lặp for, các tín hiệu đầu vào lần lượt được
gán bằng mẫu test_data(i). Qua câu lệnh DUT:BT1 port map(ain,
bin,cin, din, Fout)ta sẽ thu được đầu ra tương ứng và so sánh với yêu cầu thiết
kế. Để có được kết quả đánh giá, ta thực hiện theo các bước đã nêu trong phần 1.3 và
thu được kết quả như Hình 1.51.

Hình 1.51. Dạng sóng thu được với file VD1_tb2.vhd


▪ Mô phỏng sử dụng file Testbench thông qua giao diện GUI
Bước 4.3: Tạo project, thêm và biên dịch file Vd1.vhd

38
Hình 1.52. Tạo project, thêm và biên dịch file Vd1
Bước 5.3: Tạo file testbench: Project -> Add to Project -> New File (Existing File)

Hình 1.53. Thêm file testbench vào project


Bước 6.3: Thiết lập thư viện: Chuyển sang của sổ Library → bấm vào dấu +
trước thư mục Work, ta sẽ thấy tên của module vừa thiết kế.

Hình 1.54. Thiết lập thư viện


39
Hình 1.55. Thiết lập mô phỏng
Thiết lập mô phỏng: Chọn module cần mô phỏng ở cửa sổ Library rồi click
chuột phải chọn Simulate

Hình 1.56. Giao diện sau khi chạy Simulate


Bước 7.3: Thêm tín hiệu vào cửa sổ wave: Add -> To Wave -> Signals in Region

Hình 1.57. Thêm tín hiệu vào cửa sổ wave

40
Bước 8.3: Bắt đầu chạy mô phỏng : Simulate -> Run -> Run 100

Hình 1.58. Lựa chọn chạy mô phỏng

Hình 1.59. Kết quả dạng sóng mô phỏng


Bước 9.3: Quan sát dạng sóng

Hình 1.60. Lựa chọn phù hợp để quan sát dạng sóng

41
Chú ý: ta có thể thực hiện kiểm tra tự động hoàn toàn mà không cần quan tâm
đến dạng sóng bằng cách khai báo luôn đầu ra mong muốn trong các mẫu test và lập
trình cho máy tính tự động so sánh đầu ra mô phỏng và đầu ra mong muốn như trong
file testbench dưới đây
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-------------------------------------------
entity Alarm_test is
end Alarm _test;
-------------------------------------------
architecture test of Alarm _test is
type sample is record
a,b,c,d,F: std_logic;
end record sample;
type sample_array is array (natural range <>) of sample;
constant test_data: sample_array :=
(
('0','0','0','0','0'),('0','0','0','1','0'),('0','0','1','0','1'),
('0','0','1','1','1'),('0','1','0','0','0'),('0','1','0','1','0'),
('0','1','1','0','1'),('0','1','1','1','1'),('1','0','0','0','1'),
('1','0','0','1','0'),('1','0','1','0','1'),('1','0','1','1','0'),
('1','1','0','0','1'),('1','1','0','1','1'),('1','1','1','0','1'),
('1','1','1','1','1')
);
component BT1 is
port (a,b,c,d : in std_logic;
F : out std_logic);
end component;
-- khai bao cac tin hieu vao ra cho DUT
signal ain,bin,cin,din,Fout : std_logic;
begin
process
begin
for i in test_data'range loop
ain <= test_data(i).a;
bin <= test_data(i).b;
cin <= test_data(i).c;
din <= test_data(i).d;
wait for 10 ps;
assert Fout = test_data(i).F
report "output F is wrong!"
severity error;
end loop;
wait;
end process;
DUT: BT1 port map(ain, bin,cin, din, Fout);
end;
1.5. Nhiệm vụ sinh viên
SV đọc kỹ hướng dẫn, chuẩn bị bài ở nhà và thực hiện các nội dung được giao
trong bài tập dưới đây. Sau khi thực hiện, SV viết báo cáo và nộp lại cho giảng viên
hướng dẫn.

42
Bài tập thực hành:
Cho một hệ thống giám sát nhiệt độ được mô tả trong Hình 1.61. Trong đó, cảm
biến nhiệt độ hoạt động trong dải từ 0oC đến 100oC được đưa qua bộ biến đổi ADC 4
bit (ký hiệu là x3 x2 x1 x0 ) và đưa vào khối điều khiển (Đầu ra của khối điều khiển ký
hiệu là F). Đèn hiển thị sẽ sáng khi nhiệt độ nằm trong dải mô tả ở cột 5 (Bảng 1).

Cảm biến
nhiệt độ

ADC (4 bit)

Khối điều khiển

Đèn hiển thị

Hình 1.61. Sơ đồ khối hệ thống giám sát nhiệt độ


Với sai số cho phép là 4oC, Hãy thiết kế và mô phỏng mạch logic thực hiện khối
điều khiển theo các cách thức sau đây:
1) Sử dụng các cổng logic dùng phần mềm Logisim
2) Sử dụng các cổng logic dùng phần mềm Multisim
3) Sử dụng ngôn ngữ VHDL dùng phần mềm Modelsim
Bảng 1. Các tham số cho bài tập thực hành
ST
MSSV Họ đệm Tên Cột 5
T

1 (15o C − 350 C )  (70o C − 940 C )

2 (25o C − 450 C )

3 (40o C − 850 C )

4 (5o C − 550 C )

43
5 (25o C − 350 C )  (60o C − 940 C )

6 (15o C − 650 C )

7 (35o C − 940 C )

8 (0o C − 400 C )

9 (10o C − 500 C )

10 (20o C − 600 C )

11 (30o C − 700 C )

12 (40o C − 800 C )

13 (50o C − 900 C )

14 (20o C − 700 C )

15 (30o C − 800 C )

16 (40o C − 900 C )

17 (10o C − 600 C )

18 (0o C − 500 C )

19 (5o C − 450 C )  (65o C − 940 C )

20 (15o C − 450 C )  (75o C − 940 C )

21 (0o C − 250 C )  (50o C − 800 C )

22 (0o C − 350 C )  (60o C − 900 C )

23 (0o C − 450 C )  (80o C − 940 C )

24 (0o C − 320 C )  (50o C − 700 C )

25 (0o C − 250 C )  (50o C − 800 C )

26 (0o C − 600 C )

27 (0o C − 700 C )

44
28 (0o C − 800 C )

29 (10o C − 700 C )

30 (10o C − 800 C )

31 (20o C − 800 C )

32 (30o C − 900 C )

33 (40o C − 940 C )

34 (50o C − 940 C )

35 (20o C − 900 C )

36 (15o C − 500 C )

37 (15o C − 600 C )

38 (15o C − 700 C )

39 (15o C − 250 C )  (50o C − 800 C )

40 (15o C − 250 C )  (60o C − 940 C )

41 (15o C − 350 C )  (70o C − 940 C )

42 (25o C − 450 C )

43 (40o C − 850 C )

44 (5o C − 550 C )

45 (25o C − 350 C )  (60o C − 940 C )

46 (15o C − 650 C )

47 (35o C − 940 C )

48 (0o C − 400 C )

49 (10o C − 500 C )

50 (20o C − 600 C )

45
51 (30o C − 700 C )

52 (40o C − 800 C )

53 (50o C − 900 C )

54 (20o C − 700 C )

55 (30o C − 800 C )

56 (40o C − 900 C )

57 (10o C − 600 C )

58 (0o C − 500 C )

59 (5o C − 450 C )  (65o C − 940 C )

60 (15o C − 450 C )  (75o C − 940 C )

61 (0o C − 250 C )  (50o C − 800 C )

62 (0o C − 350 C )  (60o C − 900 C )

63 (0o C − 450 C )  (80o C − 940 C )

64 (0o C − 320 C )  (50o C − 700 C )

65 (0o C − 250 C )  (50o C − 800 C )

66 (0o C − 600 C )

67 (0o C − 700 C )

68 (0o C − 800 C )

69 (10o C − 700 C )

70 (10o C − 800 C )

71 (20o C − 800 C )

72 (30o C − 900 C )

73 (40o C − 940 C )

46
74 (50o C − 940 C )

75 (20o C − 900 C )

76 (15o C − 500 C )

77 (15o C − 600 C )

78 (15o C − 700 C )

79 (15o C − 250 C )  (50o C − 800 C )

80 (15o C − 350 C )  (70o C − 940 C )

47
Mẫu 01
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP

BÁO CÁO THỰC HÀNH


KỸ THUẬT ĐIỆN TỬ SỐ

Họ và tên sinh viên: ....................................................


MSSV: .........................................................................
Lớp học phần: ............................................................
GV giảng dạy: .............................................................

Điểm Giáo viên chấm

48
Mẫu 02
BẢNG ĐIỂM THỰC HÀNH
HỌC PHẦN KỸ THUẬT ĐIỆN TỬ SỐ

GV hướng dẫn 1 GV hướng dẫn 2 GV hướng dẫn 3


Ngày tháng năm 2021 Ngày tháng năm 2021 Ngày tháng năm 2021

49

You might also like