CÁC BÀI TẬP MỞ RỘNG, NÂNG CAO VÀ GIẢI QUYẾT VẤN ĐỀ
Bài 1: Lập trình điều khiển 8 led từ D7 đến D0 sáng dần từ phải qua trái, tắt dần từ phải qua trái. Quá trình lặp đi lặp lại.
Bài 2: Lập trình mạch đếm lên từ 00 đến 99 hiển thị trên 2 led 7 thanh.
Bài 3: Lập trình mạch đếm xuống từ 99 xuống 00 hiển thị trên 2 led 7 thanh.
Bài 4: Lập trình mạch đếm lên từ 00 đến 99, sau đó đếm xuống từ 99 đến 00 hiển thị trên 2
led 7 thanh , sau đó lặp lại chu trình đếm.
Bài 5: Lập trình mạch đồng hồ số hiển thị trên 4 led 7 đoạn.
Yêu cầu về đánh giá kết quả học tập:
Nội dung:
+ Kiến thức:
- Phân tích được cấu trúc của các mạch ứng dụng điều khiển led đơn, mạch ghi dịch, mạch đếm, mạch mã hóa, mạch giải mã, mạch điều khiển led 7 thanh, mạch hợp kênh, phân kênh và mạch so sánh 2 bít;
- Giải thích được thuật toán điều khiển theo yêu cầu của bài;
- Trình bày được trình tự thực hiện lập trình vi mạch số;
- Phân tích được những lỗi thường gặp, nguyên nhân và biện pháp xử lý, phòng tránh.
+ Kỹ năng:
- Lập trình được các mạch ứng dụng theo yêu cầu kỹ thuật;
- Phòng tránh và sửa được các lỗi khi lập trình điều khiển;
- Kiểm tra chính xác điều kiện hoạt động của thiết bị.
+ Năng lực tự chủ và trách nhiệm:
- Rèn luyện tính tỷ mỉ, chính xác và an toàn vệ sinh công nghiệp;
- Tự chịu trách nhiệm khi thực hiện các việc được giao.
Phương pháp:
+ Về kiến thức: Được đánh giá bằng hình thức kiểm tra viết
+ Về kỹ năng: Đánh giá kỹ năng thực hành Mỗi sinh viên, hoặc mỗi nhóm học viên thực hiện công việc theo yêu cầu của giáo viên.
Tiêu chí đánh giá theo các nội dung:
- Độ chính xác của công việc
- Thời gian thực hiện công việc
- Độ chính xác theo yêu cầu kỹ thuật
+ Năng lực tự chủ và trách nhiệm:
- Rèn luyện tính tỷ mỉ, chính xác và an toàn vệ sinh công nghiệp;
- Tự chịu trách nhiệm khi thực hiện các việc được giao.
222 trang |
Chia sẻ: Tiểu Khải Minh | Ngày: 22/02/2024 | Lượt xem: 56 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Lập trình vi mạch số - Phần 2, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
, LD1, LD0 hiển thị hàng đơn vị
Led LD7, LD6, LD5, LD4 hiển thị hàng chục
Sơ đồ chân kết nối thiết bị
3.2. Trình tự thực hiện
3.2.1. Điều kiện thực hiện
- Chuẩn bị thiết bị, dụng cụ, vật tư.
THIẾT BỊ, DỤNG CỤ VẬT TƯ
- Máy tính có cài phần mềm Vivado
- BASYS 3 Hãng XILINX
- Dây kết nối máy tính với BASYS 3
- An toàn lao động.
+ Đảm bảo an toàn điện.
+ Đảm bảo an toàn cho người và thiết bị, dụng cụ.
3.2.2. Các bước thực hiện
Bước 1: Khởi động phần mềm Vivado
Kích vào biểu tượng trên màn hình Desktop ta có giao diện phần mềm như sau
252
Bước 2: Tạo project mới và đặt tên cho project là dem_tu_0_den_99
Vào File chọn Project sau đó chọn New
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra Hộp thoại
Project name ta đặt tên là dem_tu_0_den_99
253
Project location chọn đường dẫn tới D:/vimachso sau đó nhấn Next
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra hộp thoại
Bước 3: Tạo file dem_tu_0_den_99.v và dem_tu_0_den_99.xdc
Target langguage ta chọn Verilog
Simulator langguage ta chọn Mixed
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ dem_tu_0_den_99 sau đó nhấn OK
254
Nhấn Next hiển thị ra hộp thoại
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ dem_tu_0_den_99 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Bước 4: Chọn chọn dòng IC lập trình
Family ta chọn Artix-7, Package chọn cpg236, Speed chọn -1 sau đó ta chọn chíp
xc7a35tcpg236-1 sau đó nhấn Next sẽ hiển thị ra hộp thoại
255
Nhấn Finish hiển thị ra hộp thoại
Sau đó nhấn OK
Bước 5: Viết Chương trình trong file dem_tu_0_den_99.v
`timescale 1ns / 1ps
module dem_tu_0_den_99 (res, clk, dem1, dem2);
//----------cac ngo vao-----------------------
input res; //------tin hieu reset-------------
input clk; //------xung clock----------------
//----------cac ngo ra------------------------
output [3:0]dem1; //-----dem 4 bit thap-------------
output [3:0]dem2; //-----dem 4 bit cao-------------
reg [3:0] dem1;
reg [3:0] dem2;
// bien trung gian
reg [27:0] delay500ms;
reg T_OUT;
//----------main program--------------
always @(posedge clk ) begin
if (delay500ms == 50000000) begin
delay500ms <= 0;
256
T_OUT = 0;
end
else begin
delay500ms <= delay500ms + 28'h0001;
T_OUT = 1;
end
end
always @ (posedge T_OUT)
begin
//------xu ly reset----------------
if(!res) begin
dem1 = 0; //-----xoa bo dem ve 0-------
dem2 = 0;
end
//------xu ly dem-----------------
else begin
if(dem1 == 9) begin
dem1 = 0;
if(dem2 == 9) dem2 =0;
else dem2 = dem2 + 1;
end
else dem1 = dem1 + 1;
end
end
endmodule
Bước 6: Mô phỏng dạng sóng trên phần mềm
Click vào Run Simulation Chọn Run Behavioral Simulation
Để mô phỏng dạng sóng trên phần mềm, ta đặt các thông số cho các đầu vào và quan
sát dạng sóng đầu ra
Đặt thống số cho các đầu vào
257
Nhấn vào biểu tượng để mô phỏng dạng sóng trên phần mềm
Nhấn vào biểu tượng để lưu dạng sóng
Bước 7: Gán chân thích ứng với thiết bị
Trong phần RTL ANALYSIS ta click vào Schematic
Click vào I/O Ports để gán chân linh kiện phù hợp với thiết bị.
Ta đặt các đầu vào và đầu ra tương ứng với các chân của Chip trong cột Package Pin
và dạng dữ liệu I/O Std như sau:
Nhấn vào để lưu toàn bộ dữ liệu
Bước 8: Biên dịch tổng hợp chương trình
Trong mục SYNTHESIS ta click vào Run Synthesis
Nhấn OK
258
Chọn Launch runs on local host number of jobs 4 sau đó nhấn OK
Quan sát quá trình chạy đến khi hoàn thành
Click vào Open Synthesized Design để quan sát thiết kế
Nhấn OK
Bước 9: Download chương trình vào phần cứng của thiết bị
Để Download chương trình vào phần cứng của thiết bị ta vào Tool chọn Settings
259
Click vào Bitstream, chọn dạng xuất dữ liệu là -bin_file
Trong phần IMPLEMENTATION ta click vào Run Implementation
260
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Sau khi chạy thành công ta chọn Generate Bitstream
Nhấn OK
261
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Đợi quá trình hoàn thành
Để đổ chương trình vào phần cứng của thiết bị ta cắm thiết bị vào cổng USB của máy
tính sau đó trong phần PROGRAM AND DEBUG ta click vào Open Target chọn Auto
Connect
262
Click vào Program device
Chọn đường dẫn đến dem_tu_0_den_99.bit sau đó nhấn vào Program
Quá trình ghi dữ liệu đến khi hoàn thành 100% là xong.
Bước 10: Chạy chương trình trên thiết bị
Gạt công tắc theo sơ đồ chân kết nối thiết bị và quan sát các đèn led
263
3.3. Một số lỗi thường gặp, nguyên nhân và biện pháp xử lý, phòng tránh.
TT lỗi thường gặp Nguyên nhân Biện pháp xử lý,
phòng tránh
1 Sai chân đầu vào/đầu ra Gán sai chân đầu
vào/đầu ra trên thiết bị
Xác định đúng chân đầu vào/đầu
ra trên thiết bị.
Gán đúng chân đầu vào/đầu ra
trên thiết bị
2 Sai lệnh cấu trúc lệnh Lập trình sai cấu trúc Cần lập trình đúng theo cấu
trúc lệnh
3 Không download được
chương trình xuống
thiết bị
Do kết nối thiết bị với
máy tính
Kiểm tra kết nối giữa thiết bị
với máy tính
3.4. Bài tập áp dụng
Lập trình vi mạch số thực hiện đếm số BCD hiển thị trên Led LD3, LD2, LD1, LD0
theo mã nhị phân từ 0000 đến 1001 và lặp lại.
4. Lập trình mạch đếm vòng xoắn Johson
4.1. Mạch mạch đếm vòng xoắn Johson
4.1.1. Sơ đồ mạch điều khiển
264
4.1.2. Yêu cầu công nghệ
Lập trình vi mạch số có chức năng đếm vòng xoắn Johson 4 bit, với tên module chính
là dem_johson_4bit. ( 4bit hiển thị là LD3, LD2, LD1, LD0)
Sơ đồ chân kết nối thiết bị
4.2. Trình tự thực hiện
4.2.1. Điều kiện thực hiện
- Chuẩn bị thiết bị, dụng cụ, vật tư.
THIẾT BỊ, DỤNG CỤ VẬT TƯ
- Máy tính có cài phần mềm Vivado
- BASYS 3 Hãng XILINX
- Dây kết nối máy tính với BASYS 3
- An toàn lao động.
+ Đảm bảo an toàn điện.
+ Đảm bảo an toàn cho người và thiết bị, dụng cụ.
4.2.2. Các bước thực hiện
Bước 1: Khởi động phần mềm Vivado
Kích vào biểu tượng trên màn hình Desktop ta có giao diện phần mềm như sau
265
Bước 2: Tạo project mới và đặt tên cho project là dem_johson_4bit
Vào File chọn Project sau đó chọn New
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra Hộp thoại
Project name ta đặt tên là dem_johson_4bit
Project location chọn đường dẫn tới D:/vimachso sau đó nhấn Next
Hiển thị ra hộp thoại
266
Nhấn Next hiển thị ra hộp thoại
Bước 3: Tạo file dem_johson_4bit.v và dem_johson_4bit.xdc
Target langguage ta chọn Verilog
Simulator langguage ta chọn Mixed
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ dem_johson_4bit sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
267
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ dem_johson_4bit sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Bước 4: Chọn chọn dòng IC lập trình
Family ta chọn Artix-7, Package chọn cpg236, Speed chọn -1 sau đó ta chọn chíp
xc7a35tcpg236-1 sau đó nhấn Next sẽ hiển thị ra hộp thoại
Nhấn Finish hiển thị ra hộp thoại
Sau đó nhấn OK
268
Bước 5: Viết Chương trình trong file dem_johson_4bit.v
`timescale 1ns / 1ps
module dem_johson_4bit (res, clk, dem);
//-------------cac ngo vao--------------
input res; //-----xung reset--------
input clk; //-----tin hieu clock----
//-------------cac ngo ra---------------
output [3:0] dem;
reg [3:0] dem;
// bien trung gian
reg [27:0] delay500ms;
reg T_OUT;
//------------main program-------------
always @(posedge clk ) begin
if (delay500ms == 50000000) begin
delay500ms <= 0;
T_OUT = 0;
end
else begin
delay500ms <= delay500ms + 28'h0001;
T_OUT = 1;
end
end
always @ (posedge T_OUT)
begin
//----------xu ly reset-------------
if(!res) dem = 0;
//----------xu ly dem---------------
else dem = (dem << 1) + !(dem[3]);
end
endmodule
269
Bước 6: Mô phỏng dạng sóng trên phần mềm
Click vào Run Simulation Chọn Run Behavioral Simulation
Để mô phỏng dạng sóng trên phần mềm, ta đặt các thông số cho các đầu vào và quan
sát dạng sóng đầu ra
Đặt thống số cho các đầu vào
Nhấn vào biểu tượng để mô phỏng dạng sóng trên phần mềm
Nhấn vào biểu tượng để lưu dạng sóng
Bước 7: Gán chân thích ứng với thiết bị
Trong phần RTL ANALYSIS ta click vào Schematic
Click vào I/O Ports để gán chân linh kiện phù hợp với thiết bị.
Ta đặt các đầu vào và đầu ra tương ứng với các chân của Chip trong cột Package Pin
và dạng dữ liệu I/O Std như sau:
Nhấn vào để lưu toàn bộ dữ liệu
Bước 8: Biên dịch tổng hợp chương trình
Trong mục SYNTHESIS ta click vào Run Synthesis
270
Nhấn OK
Chọn Launch runs on local host number of jobs 4 sau đó nhấn OK
Quan sát quá trình chạy đến khi hoàn thành
Click vào Open Synthesized Design để quan sát thiết kế
Nhấn OK
Bước 9: Download chương trình vào phần cứng của thiết bị
Để Download chương trình vào phần cứng của thiết bị ta vào Tool chọn Settings
271
Click vào Bitstream, chọn dạng xuất dữ liệu là -bin_file
Trong phần IMPLEMENTATION ta click vào Run Implementation
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
272
Sau khi chạy thành công ta chọn Generate Bitstream
Nhấn OK
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Đợi quá trình hoàn thành
273
Để đổ chương trình vào phần cứng của thiết bị ta cắm thiết bị vào cổng USB của máy
tính sau đó trong phần PROGRAM AND DEBUG ta click vào Open Target chọn Auto
Connect
Click vào Program device
Chọn đường dẫn đến dem_johson_4bit.bit sau đó nhấn vào Program
Quá trình ghi dữ liệu đến khi hoàn thành 100% là xong.
274
Bước 10: Chạy chương trình trên thiết bị
Gạt công tắc theo sơ đồ chân kết nối thiết bị và quan sát các đèn led
4.3. Một số lỗi thường gặp, nguyên nhân và biện pháp xử lý, phòng tránh.
TT lỗi thường gặp Nguyên nhân Biện pháp xử lý,
phòng tránh
1 Sai chân đầu vào/đầu ra Gán sai chân đầu
vào/đầu ra trên thiết bị
Xác định đúng chân đầu vào/đầu
ra trên thiết bị.
Gán đúng chân đầu vào/đầu ra
trên thiết bị
2 Sai lệnh cấu trúc lệnh Lập trình sai cấu trúc Cần lập trình đúng theo cấu
trúc lệnh
3 Không download được
chương trình xuống
thiết bị
Do kết nối thiết bị với
máy tính
Kiểm tra kết nối giữa thiết bị
với máy tính
4.4. Bài tập áp dụng
Lập trình bộ đếm vòng xoắn Johson 4 bit hiển thị trên các led từ LD0 đến LD3
275
5. Lập trình mạch mã hóa
5.1. Mạch mạch mã hóa
5.1.1. Sơ đồ mạch điều khiển
5.1.2. Yêu cầu công nghệ
Lập trình vi mạch số có chức năng thực hiện mã hóa 8 đường sang 3 đường, có một ngõ
cho phép EN, với EN tích cực mức thấp, khi EN = 0 thì dữ liệu ngõ ra không thay đổi. Tên
của module là: encoder8_3.
- Bảng sự thật bộ mã hóa 8 sang 3
276
EN In (8 bit) Out (3 bit)
0 x x x x x x x x Giữa nguyên giá trị trước đó
1 0 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 1 0 0 2
1 0 0 0 0 1 0 0 0 3
1 0 0 0 1 0 0 0 0 4
1 0 0 1 0 0 0 0 0 5
1 0 1 0 0 0 0 0 0 6
1 1 0 0 0 0 0 0 0 7
Sơ đồ chân kết nối thiết bị
5.2. Trình tự thực hiện
Lập trình vi mạch số có chức năng thực hiện mã hóa 8 đường sang 3 đường, có một ngõ
cho phép EN, với EN tích cực mức thấp, khi EN = 0 thì dữ liệu ngõ ra không thay đổi. Tên
của module là: encoder8_3.
5.2.1. Điều kiện thực hiện
- Chuẩn bị thiết bị, dụng cụ, vật tư.
THIẾT BỊ, DỤNG CỤ VẬT TƯ
- Máy tính có cài phần mềm Vivado
- BASYS 3 Hãng XILINX
- Dây kết nối máy tính với BASYS 3
277
- An toàn lao động.
+ Đảm bảo an toàn điện.
+ Đảm bảo an toàn cho người và thiết bị, dụng cụ.
5.2.2. Các bước thực hiện
Bước 1: Khởi động phần mềm Vivado
Kích vào biểu tượng trên màn hình Desktop ta có giao diện phần mềm như sau
Bước 2: Tạo project mới và đặt tên cho project là encoder8_3
Vào File chọn Project sau đó chọn New
Hiển thị ra hộp thoại
278
Nhấn Next hiển thị ra Hộp thoại
Project name ta đặt tên là encoder8_3
Project location chọn đường dẫn tới D:/vimachso sau đó nhấn Next
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra hộp thoại
279
Bước 3: Tạo file encoder8_3.v và encoder8_3.xdc
Target langguage ta chọn Verilog
Simulator langguage ta chọn Mixed
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ encoder8_3 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Nhấn vào Create file hiển thị ra hộp thoại
280
File name ta gõ encoder8_3 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Bước 4: Chọn chọn dòng IC lập trình
Family ta chọn Artix-7, Package chọn cpg236, Speed chọn -1 sau đó ta chọn chíp
xc7a35tcpg236-1 sau đó nhấn Next sẽ hiển thị ra hộp thoại
Nhấn Finish hiển thị ra hộp thoại
Sau đó nhấn OK
281
Bước 5: Viết Chương trình trong file encoder8_3.v
`timescale 1ns / 1ps
module encoder8_3 (EN,clk, in, out);
//---------- cac ngo vao -----------------------------
input EN; //-------- tin hieu cho phep ------
input clk;
input [7:0] in; //--------------- 8 ngo vao -------
//---------- cac ngo ra -----------------------------
output [2:0] out; //-------- 3 ngo ra ---------------
reg [2:0] out;
//------- main program ------------------------------
always @(posedge clk )
begin
//----------------- xu ly EN ---------------------
if (!EN) out = out; //---EN tich cuc muc thap----
else begin
case (in)
8'b00000001: out = 0;
8'b00000010: out = 1;
8'b00000100: out = 2;
8'b00001000: out = 3;
8'b00010000: out = 4;
8'b00100000: out = 5;
8'b01000000: out = 6;
8'b10000000: out = 7;
default: out = 3'bx;
endcase
end
end
endmodule
282
Bước 6: Mô phỏng dạng sóng trên phần mềm
Click vào Run Simulation Chọn Run Behavioral Simulation
Để mô phỏng dạng sóng trên phần mềm, ta đặt các thông số cho các đầu vào và quan
sát dạng sóng đầu ra
Đặt thống số cho các đầu vào
Nhấn vào biểu tượng để mô phỏng dạng sóng trên phần mềm
Nhấn vào biểu tượng để lưu dạng sóng
Bước 7: Gán chân thích ứng với thiết bị
Trong phần RTL ANALYSIS ta click vào Schematic
Click vào I/O Ports để gán chân linh kiện phù hợp với thiết bị.
Ta đặt các đầu vào và đầu ra tương ứng với các chân của Chip trong cột Package Pin
và dạng dữ liệu I/O Std như sau:
Nhấn vào để lưu toàn bộ dữ liệu
Bước 8: Biên dịch tổng hợp chương trình
Trong mục SYNTHESIS ta click vào Run Synthesis
283
Nhấn OK
Chọn Launch runs on local host number of jobs 4 sau đó nhấn OK
Quan sát quá trình chạy đến khi hoàn thành
Click vào Open Synthesized Design để quan sát thiết kế
Nhấn OK
284
Bước 9: Download chương trình vào phần cứng của thiết bị
Để Download chương trình vào phần cứng của thiết bị ta vào Tool chọn Settings
Click vào Bitstream, chọn dạng xuất dữ liệu là -bin_file
Trong phần IMPLEMENTATION ta click vào Run Implementation
285
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Sau khi chạy thành công ta chọn Generate Bitstream
Nhấn OK
286
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Đợi quá trình hoàn thành
Để đổ chương trình vào phần cứng của thiết bị ta cắm thiết bị vào cổng USB của máy
tính sau đó trong phần PROGRAM AND DEBUG ta click vào Open Target chọn Auto
Connect
Click vào Program device
Chọn đường dẫn đến encoder8_3.bit sau đó nhấn vào Program
Quá trình ghi dữ liệu đến khi hoàn thành 100% là xong.
287
Bước 10: Chạy chương trình trên thiết bị
Gạt công tắc theo sơ đồ chân kết nối thiết bị và quan sát các đèn led
5.3. Một số lỗi thường gặp, nguyên nhân và biện pháp xử lý, phòng tránh.
TT lỗi thường gặp Nguyên nhân Biện pháp xử lý,
phòng tránh
1 Sai chân đầu vào/đầu ra Gán sai chân đầu
vào/đầu ra trên thiết bị
Xác định đúng chân đầu vào/đầu
ra trên thiết bị.
Gán đúng chân đầu vào/đầu ra
trên thiết bị
2 Sai lệnh cấu trúc lệnh Lập trình sai cấu trúc Cần lập trình đúng theo cấu
trúc lệnh
3 Không download được
chương trình xuống
thiết bị
Do kết nối thiết bị với
máy tính
Kiểm tra kết nối giữa thiết bị
với máy tính
5.4. Bài tập áp dụng
Lập trình vi mạch số có chức năng thực hiện mã hóa 8 đường sang 3 đường, có một
ngõ cho phép EN, với EN tích cực mức thấp, khi EN = 0 thì dữ liệu ngõ ra không thay đổi
288
6. Lập trình mạch giải mã
6.1. Mạch giải mã
6.1.1. Sơ đồ mạch điều khiển
6.1.2. Yêu cầu công nghệ
Lập trình vi mạch số có chức năng thực hiện giải mã 3 đường sang 8 đường, có một
ngõ cho phép EN, với EN tích cực mức thấp, khi EN = 0 thì dữ liệu ngõ ra không thay đổi.
Tên của module là: decoder8_3.
289
- Bảng sự thật bộ giải mã 3 sang 8
EN In Out
0 X Giữ nguyên giá trị trước đó
1 0 0 0 0 0 0 0 0 1
1 1 0 0 0 0 0 0 1 0
1 2 0 0 0 0 0 1 0 0
1 3 0 0 0 0 1 0 0 0
1 4 0 0 0 1 0 0 0 0
1 5 0 0 1 0 0 0 0 0
1 6 0 1 0 0 0 0 0 0
1 7 1 0 0 0 0 0 0 0
- Sơ đồ chân kết nối thiết bị
6.2. Trình tự thực hiện
Lập trình vi mạch số có chức năng thực hiện giải mã 3 đường sang 8 đường, có một ngõ cho
phép EN, với EN tích cực mức thấp, khi EN = 0 thì dữ liệu ngõ ra không thay đổi
6.2.1. Điều kiện thực hiện
- Chuẩn bị thiết bị, dụng cụ, vật tư.
THIẾT BỊ, DỤNG CỤ VẬT TƯ
- Máy tính có cài phần mềm Vivado
- BASYS 3 Hãng XILINX
- Dây kết nối máy tính với BASYS 3
290
- An toàn lao động.
+ Đảm bảo an toàn điện.
+ Đảm bảo an toàn cho người và thiết bị, dụng cụ.
6.2.2. Các bước thực hiện
Bước 1: Khởi động phần mềm Vivado
Kích vào biểu tượng trên màn hình Desktop ta có giao diện phần mềm như sau
Bước 2: Tạo project mới và đặt tên cho project là decoder3_8
Vào File chọn Project sau đó chọn New
Hiển thị ra hộp thoại
291
Nhấn Next hiển thị ra Hộp thoại
Project name ta đặt tên là decoder3_8
Project location chọn đường dẫn tới D:/vimachso sau đó nhấn Next
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra hộp thoại
292
Bước 3: Tạo file decoder3_8.v và decoder3_8.xdc
Target langguage ta chọn Verilog
Simulator langguage ta chọn Mixed
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ decoder3_8 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Nhấn vào Create file hiển thị ra hộp thoại
293
File name ta gõ decoder3_8 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Bước 4: Chọn chọn dòng IC lập trình
Family ta chọn Artix-7, Package chọn cpg236, Speed chọn -1 sau đó ta chọn chíp
xc7a35tcpg236-1 sau đó nhấn Next sẽ hiển thị ra hộp thoại
Nhấn Finish hiển thị ra hộp thoại
Sau đó nhấn OK
294
Bước 5: Viết Chương trình trong file decoder3_8.v
`timescale 1ns / 1ps
module decoder3_8 (EN,clk, in, out);
//---------- cac ngo vao ----------------------------
input EN; //-------- tin hieu cho phep ------
input clk;
input [2:0] in; //--------------- 3 ngo vao -------
//---------- cac ngo ra -----------------------------
output [7:0] out; //-------- 8 ngo ra ---------------
reg [7:0] out;
//------- main program ------------------------------
always @(posedge clk )
begin
//----------------- xu ly EN ---------------------
if (!EN) out = out; //---EN tich cuc muc thap----
else begin
case (in)
0: out = 8'b00000001;
1: out = 8'b00000010;
2: out = 8'b00000100;
3: out = 8'b00001000;
4: out = 8'b00010000;
5: out = 8'b00100000;
6: out = 8'b01000000;
7: out = 8'b10000000;
default: out = 3'bx;
endcase
end
end
endmodule
295
Bước 6: Mô phỏng dạng sóng trên phần mềm
Click vào Run Simulation Chọn Run Behavioral Simulation
Để mô phỏng dạng sóng trên phần mềm, ta đặt các thông số cho các đầu vào và quan
sát dạng sóng đầu ra
Đặt thống số cho các đầu vào
Nhấn vào biểu tượng để mô phỏng dạng sóng trên phần mềm
Nhấn vào biểu tượng để lưu dạng sóng
Bước 7: Gán chân thích ứng với thiết bị
Trong phần RTL ANALYSIS ta click vào Schematic
Click vào I/O Ports để gán chân linh kiện phù hợp với thiết bị.
Ta đặt các đầu vào và đầu ra tương ứng với các chân của Chip trong cột Package Pin
và dạng dữ liệu I/O Std như sau:
Nhấn vào để lưu toàn bộ dữ liệu
Bước 8: Biên dịch tổng hợp chương trình
Trong mục SYNTHESIS ta click vào Run Synthesis
296
Nhấn OK
Chọn Launch runs on local host number of jobs 4 sau đó nhấn OK
Quan sát quá trình chạy đến khi hoàn thành
Click vào Open Synthesized Design để quan sát thiết kế
Nhấn OK
297
Bước 9: Download chương trình vào phần cứng của thiết bị
Để Download chương trình vào phần cứng của thiết bị ta vào Tool chọn Settings
Click vào Bitstream, chọn dạng xuất dữ liệu là -bin_file
Trong phần IMPLEMENTATION ta click vào Run Implementation
298
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Sau khi chạy thành công ta chọn Generate Bitstream
Nhấn OK
299
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Đợi quá trình hoàn thành
Để đổ chương trình vào phần cứng của thiết bị ta cắm thiết bị vào cổng USB của máy
tính sau đó trong phần PROGRAM AND DEBUG ta click vào Open Target chọn Auto
Connect
Click vào Program device
Chọn đường dẫn đến decoder3_8.bit sau đó nhấn vào Program
Quá trình ghi dữ liệu đến khi hoàn thành 100% là xong.
300
Bước 10: Chạy chương trình trên thiết bị
Gạt công tắc theo sơ đồ chân kết nối thiết bị và quan sát các đèn led
6.3. Một số lỗi thường gặp, nguyên nhân và biện pháp xử lý, phòng tránh.
TT lỗi thường gặp Nguyên nhân Biện pháp xử lý,
phòng tránh
1 Sai chân đầu vào/đầu ra Gán sai chân đầu
vào/đầu ra trên thiết bị
Xác định đúng chân đầu vào/đầu
ra trên thiết bị.
Gán đúng chân đầu vào/đầu ra
trên thiết bị
2 Sai lệnh cấu trúc lệnh Lập trình sai cấu trúc Cần lập trình đúng theo cấu
trúc lệnh
3 Không download được
chương trình xuống
thiết bị
Do kết nối thiết bị với
máy tính
Kiểm tra kết nối giữa thiết bị
với máy tính
6.4. Bài tập áp dụng
Lập trình vi mạch số có chức năng thực hiện giải mã 3 đường sang 8 đường, có một
ngõ cho phép EN, với EN tích cực mức thấp, khi EN = 0 thì dữ liệu ngõ ra không thay đổi.
301
7. Lập trình điều khiển led 7 thanh
7.1. Mạch điều khiển led 7 thanh
7.1.1. Sơ đồ mạch điều khiển
302
7.1.2. Yêu cầu công nghệ
Lập trình vi mạch số có chức năng thực hiện điều khiển hiển thị LED 7 thanh hiển thị
từ 0 đến 9
Sơ đồ chân kết nối thiết bị
7.2. Trình tự thực hiện
Lập trình vi mạch số có chức năng thực hiện điều khiển hiển thị LED 7 thanh hiển thị
từ 0 đến 9
7.2.1. Điều kiện thực hiện
- Chuẩn bị thiết bị, dụng cụ, vật tư.
THIẾT BỊ, DỤNG CỤ VẬT TƯ
- Máy tính có cài phần mềm Vivado
- BASYS 3 Hãng XILINX
- Dây kết nối máy tính với BASYS 3
- An toàn lao động.
+ Đảm bảo an toàn điện.
+ Đảm bảo an toàn cho người và thiết bị, dụng cụ.
7.2.2. Các bước thực hiện
Bước 1: Khởi động phần mềm Vivado
Kích vào biểu tượng trên màn hình Desktop ta có giao diện phần mềm như sau
303
Bước 2: Tạo project mới và đặt tên cho project là LED7_dem0_9
Vào File chọn Project sau đó chọn New
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra Hộp thoại
Project name ta đặt tên là LED7_dem0_9
Project location chọn đường dẫn tới D:/vimachso sau đó nhấn Next
Hiển thị ra hộp thoại
304
Nhấn Next hiển thị ra hộp thoại
Bước 3: Tạo file LED7_dem0_9.v và LED7_dem0_9.xdc
Target langguage ta chọn Verilog
Simulator langguage ta chọn Mixed
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ LED7_dem0_9 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
305
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ LED7_dem0_9 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Bước 4: Chọn chọn dòng IC lập trình
Family ta chọn Artix-7, Package chọn cpg236, Speed chọn -1 sau đó ta chọn chíp
xc7a35tcpg236-1 sau đó nhấn Next sẽ hiển thị ra hộp thoại
306
Nhấn Finish hiển thị ra hộp thoại
Sau đó nhấn OK
Bước 5: Viết Chương trình trong file LED7_dem0_9.v
`timescale 1ns / 1ps
module LED7_dem0_9(CLK, Y, AN,DP);
input CLK;
output [6:0] Y;
output [3:0] AN;
output DP;
reg [3:0] AN;
reg [3:0] dem;
reg [27:0] delay500ms;
reg CLK1;
reg DP;
//-------------main program--------------------------
always @(posedge CLK ) begin
AN[0] = 0; // cho led 1 sang
AN[1] = 1; // cho led 2 tat
AN[2] = 1; // cho led 3 tat
AN[3] = 1; // cho led 4 tat
307
DP = 1; // tat dau cham
if (delay500ms == 50000000) begin
delay500ms <= 0;
CLK1= 0;
end
else begin
delay500ms <= delay500ms + 28'h0001;
CLK1 = 1;
end
end
// tao bo dem 0 den 9
always @(posedge CLK1 ) begin
if (dem == 9) dem = 0;
else dem = dem+1;
end
function [6:0] giaima;
input [3:0] a;
case(a)
4'b0000 : giaima = 7'b100_0000; // 0
4'b0001 : giaima = 7'b111_1001; // 1
4'b0010 : giaima = 7'b010_0100; // 2
4'b0011 : giaima = 7'b011_0000; // 3
4'b0100 : giaima = 7'b001_1001; // 4
4'b0101 : giaima = 7'b001_0010; // 5
4'b0110 : giaima = 7'b000_0010; // 6
4'b0111 : giaima = 7'b111_1000; // 7
4'b1000 : giaima = 7'b000_0000; // 8
4'b1001 : giaima = 7'b001_0000; // 9
default : giaima = 7'b100_0000;
endcase
endfunction
308
assign Y = giaima(dem);
endmodule
Bước 6: Mô phỏng dạng sóng trên phần mềm
Click vào Run Simulation Chọn Run Behavioral Simulation
Để mô phỏng dạng sóng trên phần mềm, ta đặt các thông số cho các đầu vào và quan
sát dạng sóng đầu ra
Đặt thống số cho các đầu vào
Nhấn vào biểu tượng để mô phỏng dạng sóng trên phần mềm
Nhấn vào biểu tượng để lưu dạng sóng
Bước 7: Gán chân thích ứng với thiết bị
Trong phần RTL ANALYSIS ta click vào Schematic
Click vào I/O Ports để gán chân linh kiện phù hợp với thiết bị.
Ta đặt các đầu vào và đầu ra tương ứng với các chân của Chip trong cột Package Pin
và dạng dữ liệu I/O Std như sau:
Nhấn vào để lưu toàn bộ dữ liệu
309
Bước 8: Biên dịch tổng hợp chương trình
Trong mục SYNTHESIS ta click vào Run Synthesis
Nhấn OK
Chọn Launch runs on local host number of jobs 4 sau đó nhấn OK
Quan sát quá trình chạy đến khi hoàn thành
Click vào Open Synthesized Design để quan sát thiết kế
310
Nhấn OK
Bước 9: Download chương trình vào phần cứng của thiết bị
Để Download chương trình vào phần cứng của thiết bị ta vào Tool chọn Settings
Click vào Bitstream, chọn dạng xuất dữ liệu là -bin_file
Trong phần IMPLEMENTATION ta click vào Run Implementation
311
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Sau khi chạy thành công ta chọn Generate Bitstream
Nhấn OK
312
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Đợi quá trình hoàn thành
Để đổ chương trình vào phần cứng của thiết bị ta cắm thiết bị vào cổng USB của máy
tính sau đó trong phần PROGRAM AND DEBUG ta click vào Open Target chọn Auto
Connect
313
Click vào Program device
Chọn đường dẫn đến LED7_dem0_9.bit sau đó nhấn vào Program
Quá trình ghi dữ liệu đến khi hoàn thành 100% là xong.
Bước 10: Chạy chương trình trên thiết bị
Gạt công tắc theo sơ đồ chân kết nối thiết bị và quan sát các đèn led
314
7.3. Một số lỗi thường gặp, nguyên nhân và biện pháp xử lý, phòng tránh.
TT lỗi thường gặp Nguyên nhân Biện pháp xử lý,
phòng tránh
1 Sai chân đầu vào/đầu ra Gán sai chân đầu
vào/đầu ra trên thiết bị
Xác định đúng chân đầu vào/đầu
ra trên thiết bị.
Gán đúng chân đầu vào/đầu ra
trên thiết bị
2 Sai lệnh cấu trúc lệnh Lập trình sai cấu trúc Cần lập trình đúng theo cấu
trúc lệnh
3 Không download được
chương trình xuống
thiết bị
Do kết nối thiết bị với
máy tính
Kiểm tra kết nối giữa thiết bị
với máy tính
7.4. Bài tập áp dụng
Lập trình vi mạch số có chức năng thực hiện điều khiển hiển thị LED 7 thanh hiển thị
từ 0 đến 9.
315
8. Lập trình mạch hợp kênh MUX
8.1. Mạch hợp kênh MUX
8.1.1. Sơ đồ mạch điều khiển
8.1.2. Yêu cầu công nghệ
Lập trình bộ mux 8 đường sang 1 đường, do đó sẽ có 3 ngõ chọn kênh. Ngõ cho phép
EN tích cực mức thấp, khi EN = 0 thì ngõ ra không thay đổi. Tên của module là: mux8_1.
– Bảng sự thật bộ mux 8 sang 1
316
EN Sel In0 In1 In2 In3 In4 In5 In6 In7 Out
0 x x x x x x x x x out
1 0 0 x x x x x x x 0
1 0 1 x x x x x x x 1
1 1 x 0 x x x x x x 0
1 1 x 1 x x x x x x 1
1 2 x x 0 x x x x x 0
1 2 x x 1 x x x x x 1
1 3 x x x 0 x x x x 0
1 3 x x x 1 x x x x 1
1 4 x x x x 0 x x x 0
1 4 x x x x 1 x x x 1
1 5 x x x x x 0 x x 0
1 5 x x x x x 1 x x 1
1 6 x x x x x x 0 x 0
1 6 x x x x x x 1 x 1
1 7 x x x x x x x 0 0
1 7 x x x x x x x 1 1
Sơ đồ chân kết nối thiết bị
317
8.2. Trình tự thực hiện
Lập trình bộ mux 8 đường sang 1 đường, do đó sẽ có 3 ngõ chọn kênh. Ngõ cho phép
EN tích cực mức thấp, khi EN = 0 thì ngõ ra không thay đổi.
8.2.1. Điều kiện thực hiện
- Chuẩn bị thiết bị, dụng cụ, vật tư.
THIẾT BỊ, DỤNG CỤ VẬT TƯ
- Máy tính có cài phần mềm Vivado
- BASYS 3 Hãng XILINX
- Dây kết nối máy tính với BASYS 3
- An toàn lao động.
+ Đảm bảo an toàn điện.
+ Đảm bảo an toàn cho người và thiết bị, dụng cụ.
8.2.2. Các bước thực hiện
Bước 1: Khởi động phần mềm Vivado
Kích vào biểu tượng trên màn hình Desktop ta có giao diện phần mềm như sau
Bước 2: Tạo project mới và đặt tên cho project là mux8_1
Vào File chọn Project sau đó chọn New
318
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra Hộp thoại
Project name ta đặt tên là mux8_1
Project location chọn đường dẫn tới D:/vimachso sau đó nhấn Next
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra hộp thoại
319
Bước 3: Tạo file mux8_1.v và mux8_1.xdc
Target langguage ta chọn Verilog
Simulator langguage ta chọn Mixed
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ mux8_1 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Nhấn vào Create file hiển thị ra hộp thoại
320
File name ta gõ mux8_1 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Bước 4: Chọn chọn dòng IC lập trình
Family ta chọn Artix-7, Package chọn cpg236, Speed chọn -1 sau đó ta chọn chíp
xc7a35tcpg236-1 sau đó nhấn Next sẽ hiển thị ra hộp thoại
Nhấn Finish hiển thị ra hộp thoại
Sau đó nhấn OK
321
Bước 5: Viết Chương trình trong file mux8_1.v
`timescale 1ns / 1ps
module mux8_1 (in,clk, sel, out, EN);
//------------------ cac ngo vao --------------
input [7:0] in; //------------- 8 ngo vao -------------------
input [2:0] sel; //------------- 3 ngo vao chon du lieu -------
input EN; //------------- ngo cho phep ----------------
input clk;
//------------------ cac ngo ra ---------------
output out;
reg out;
//------------------ main program -------------
always @(posedge clk )
begin
//-------- xu ly EN ----------
if(!EN) out = out; //-------- EN tich cuc muc thap -------
else begin
case (sel)
0: out = in [0];
1: out = in [1];
2: out = in [2];
3: out = in [3];
4: out = in [4];
5: out = in [5];
6: out = in [6];
7: out = in [7];
default: out = out;
endcase
end
end
endmodule
322
Bước 6: Mô phỏng dạng sóng trên phần mềm
Click vào Run Simulation Chọn Run Behavioral Simulation
Để mô phỏng dạng sóng trên phần mềm, ta đặt các thông số cho các đầu vào và quan
sát dạng sóng đầu ra
Đặt thống số cho các đầu vào
Nhấn vào biểu tượng để mô phỏng dạng sóng trên phần mềm
Nhấn vào biểu tượng để lưu dạng sóng
Bước 7: Gán chân thích ứng với thiết bị
Trong phần RTL ANALYSIS ta click vào Schematic
Click vào I/O Ports để gán chân linh kiện phù hợp với thiết bị.
Ta đặt các đầu vào và đầu ra tương ứng với các chân của Chip trong cột Package Pin
và dạng dữ liệu I/O Std như sau:
Nhấn vào để lưu toàn bộ dữ liệu
Bước 8: Biên dịch tổng hợp chương trình
323
Trong mục SYNTHESIS ta click vào Run Synthesis
Nhấn OK
Chọn Launch runs on local host number of jobs 4 sau đó nhấn OK
Quan sát quá trình chạy đến khi hoàn thành
Click vào Open Synthesized Design để quan sát thiết kế
324
Nhấn OK
Bước 9: Download chương trình vào phần cứng của thiết bị
Để Download chương trình vào phần cứng của thiết bị ta vào Tool chọn Settings
Click vào Bitstream, chọn dạng xuất dữ liệu là -bin_file
Trong phần IMPLEMENTATION ta click vào Run Implementation
325
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Sau khi chạy thành công ta chọn Generate Bitstream
Nhấn OK
326
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Đợi quá trình hoàn thành
Để đổ chương trình vào phần cứng của thiết bị ta cắm thiết bị vào cổng USB của máy
tính sau đó trong phần PROGRAM AND DEBUG ta click vào Open Target chọn Auto
Connect
Click vào Program device
Chọn đường dẫn đến mux8_1.bit sau đó nhấn vào Program
Quá trình ghi dữ liệu đến khi hoàn thành 100% là xong.
327
Bước 10: Chạy chương trình trên thiết bị
Gạt công tắc theo sơ đồ chân kết nối thiết bị và quan sát các đèn led
8.3. Một số lỗi thường gặp, nguyên nhân và biện pháp xử lý, phòng tránh.
TT lỗi thường gặp Nguyên nhân Biện pháp xử lý,
phòng tránh
1 Sai chân đầu vào/đầu ra Gán sai chân đầu
vào/đầu ra trên thiết bị
Xác định đúng chân đầu vào/đầu
ra trên thiết bị.
Gán đúng chân đầu vào/đầu ra
trên thiết bị
2 Sai lệnh cấu trúc lệnh Lập trình sai cấu trúc Cần lập trình đúng theo cấu
trúc lệnh
3 Không download được
chương trình xuống
thiết bị
Do kết nối thiết bị với
máy tính
Kiểm tra kết nối giữa thiết bị
với máy tính
8.4. Bài tập áp dụng
Lập trình bộ mux 8 đường sang 1 đường, do đó sẽ có 3 ngõ chọn kênh. Ngõ cho phép
EN tích cực mức thấp, khi EN = 0 thì ngõ ra không thay đổi.
328
9. Lập trình mạch phân kênh DEMUX
9.1. Mạch phân kênh DEMUX
9.1.1. Sơ đồ mạch điều khiển
9.1.2. Yêu cầu công nghệ
Lập trình bộ demux 1 đường sang 8 đường, do đó sẽ có 3 ngõ chọn kênh. Ngõ cho
phép EN tích cực mức thấp, khi EN = 0 thì ngõ ra không thay đổi. Tên của module là:
demux1_8.
329
– Bảng sự thật bộ demux 8 sang 1
EN Sel In Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
0 x x Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
1 0 0 0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
1 0 1 1 Y1 Y2 Y3 Y4 Y5 Y6 Y7
1 1 0 Y0 0 Y2 Y3 Y4 Y5 Y6 Y7
1 1 1 Y0 1 Y2 Y3 Y4 Y5 Y6 Y7
1 2 0 Y0 Y1 0 Y3 Y4 Y5 Y6 Y7
1 2 1 Y0 Y1 1 Y3 Y4 Y5 Y6 Y7
1 3 0 Y0 Y1 Y2 0 Y4 Y5 Y6 Y7
1 3 1 Y0 Y1 Y2 1 Y4 Y5 Y6 Y7
1 4 0 Y0 Y1 Y2 Y3 0 Y5 Y6 Y7
1 4 1 Y0 Y1 Y2 Y3 1 Y5 Y6 Y7
1 5 0 Y0 Y1 Y2 Y3 Y4 0 Y6 Y7
1 5 1 Y0 Y1 Y2 Y3 Y4 1 Y6 Y7
1 6 0 Y0 Y1 Y2 Y3 Y4 Y5 0 Y7
1 6 1 Y0 Y1 Y2 Y3 Y4 Y5 1 Y7
1 7 0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 0
1 7 1 Y0 Y1 Y2 Y3 Y4 Y5 Y6 1
Sơ đồ chân kết nối thiết bị
330
9.2. Trình tự thực hiện
Lập trình bộ demux 1 đường sang 8 đường, do đó sẽ có 3 ngõ chọn kênh. Ngõ cho
phép EN tích cực mức thấp, khi EN = 0 thì ngõ ra không thay đổi
9.2.1. Điều kiện thực hiện
- Chuẩn bị thiết bị, dụng cụ, vật tư.
THIẾT BỊ, DỤNG CỤ VẬT TƯ
- Máy tính có cài phần mềm Vivado
- BASYS 3 Hãng XILINX
- Dây kết nối máy tính với BASYS 3
- An toàn lao động.
+ Đảm bảo an toàn điện.
+ Đảm bảo an toàn cho người và thiết bị, dụng cụ.
9.2.2. Các bước thực hiện
Bước 1: Khởi động phần mềm Vivado
Kích vào biểu tượng trên màn hình Desktop ta có giao diện phần mềm như sau
Bước 2: Tạo project mới và đặt tên cho project là demux1_8
Vào File chọn Project sau đó chọn New
331
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra Hộp thoại
Project name ta đặt tên là demux1_8
Project location chọn đường dẫn tới D:/vimachso sau đó nhấn Next
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra hộp thoại
332
Bước 3: Tạo file demux1_8.v và demux1_8.xdc
Target langguage ta chọn Verilog
Simulator langguage ta chọn Mixed
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ demux1_8 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Nhấn vào Create file hiển thị ra hộp thoại
333
File name ta gõ demux1_8 sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Bước 4: Chọn chọn dòng IC lập trình
Family ta chọn Artix-7, Package chọn cpg236, Speed chọn -1 sau đó ta chọn chíp
xc7a35tcpg236-1 sau đó nhấn Next sẽ hiển thị ra hộp thoại
Nhấn Finish hiển thị ra hộp thoại
Sau đó nhấn OK
334
Bước 5: Viết Chương trình trong file demux1_8.v
`timescale 1ns / 1ps
module demux1_8 (in,clk, sel, out0, out1, out2, out3, out4, out5, out6, out7, EN);
//------------------ cac ngo vao --------------
input in; //------------- 1 ngo vao -------------------
input clk;
input [2:0] sel; //------------- 3 ngo vao chon du lieu ----
input EN; //------------- ngo cho phep ----------------
//------------------ cac ngo ra ---------------
output out0, out1, out2, out3, out4, out5, out6, out7;
reg out0, out1, out2, out3, out4, out5, out6, out7;
//------------------ main program -------------
always @(posedge clk )
begin
//-------- xu ly EN ----------
if(!EN) begin //-------- EN tich cuc muc thap -------
out0 = out0;
out1 = out1;
out2 = out2;
out3 = out3;
out4 = out4;
out5 = out5;
out6 = out6;
out7 = out7;
end
else begin
case (sel)
0: out0 = in;
1: out1 = in;
2: out2 = in;
3: out3 = in;
335
4: out4 = in;
5: out5 = in;
6: out6 = in;
7: out7 = in;
endcase
end
end
endmodule
Bước 6: Mô phỏng dạng sóng trên phần mềm
Click vào Run Simulation Chọn Run Behavioral Simulation
Để mô phỏng dạng sóng trên phần mềm, ta đặt các thông số cho các đầu vào và quan
sát dạng sóng đầu ra
Đặt thống số cho các đầu vào
Nhấn vào biểu tượng để mô phỏng dạng sóng trên phần mềm
Nhấn vào biểu tượng để lưu dạng song
Bước 7: Gán chân thích ứng với thiết bị
Trong phần RTL ANALYSIS ta click vào Schematic
Click vào I/O Ports để gán chân linh kiện phù hợp với thiết bị.
Ta đặt các đầu vào và đầu ra tương ứng với các chân của Chip trong cột Package Pin
và dạng dữ liệu I/O Std như sau:
336
Nhấn vào để lưu toàn bộ dữ liệu
Bước 8: Biên dịch tổng hợp chương trình
Trong mục SYNTHESIS ta click vào Run Synthesis
Nhấn OK
Chọn Launch runs on local host number of jobs 4 sau đó nhấn OK
Quan sát quá trình chạy đến khi hoàn thành
337
Click vào Open Synthesized Design để quan sát thiết kế
Nhấn OK
Bước 9: Download chương trình vào phần cứng của thiết bị
Để Download chương trình vào phần cứng của thiết bị ta vào Tool chọn Settings
Click vào Bitstream, chọn dạng xuất dữ liệu là -bin_file
338
Trong phần IMPLEMENTATION ta click vào Run Implementation
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Sau khi chạy thành công ta chọn Generate Bitstream
339
Nhấn OK
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Đợi quá trình hoàn thành
Để đổ chương trình vào phần cứng của thiết bị ta cắm thiết bị vào cổng USB của máy
tính sau đó trong phần PROGRAM AND DEBUG ta click vào Open Target chọn Auto
Connect
340
Click vào Program device
Chọn đường dẫn đến demux1_8.bit sau đó nhấn vào Program
Quá trình ghi dữ liệu đến khi hoàn thành 100% là xong.
Bước 10: Chạy chương trình trên thiết bị
Gạt công tắc theo sơ đồ chân kết nối thiết bị và quan sát các đèn led
341
9.3. Một số lỗi thường gặp, nguyên nhân và biện pháp xử lý, phòng tránh.
TT lỗi thường gặp Nguyên nhân Biện pháp xử lý,
phòng tránh
1 Sai chân đầu vào/đầu ra Gán sai chân đầu
vào/đầu ra trên thiết bị
Xác định đúng chân đầu vào/đầu
ra trên thiết bị.
Gán đúng chân đầu vào/đầu ra
trên thiết bị
2 Sai lệnh cấu trúc lệnh Lập trình sai cấu trúc Cần lập trình đúng theo cấu
trúc lệnh:
case (sel)
0: out0 = in;
1: out1 = in;
2: out2 = in;
3: out3 = in;
4: out4 = in;
5: out5 = in;
6: out6 = in;
7: out7 = in;
endcase
3 Không download được
chương trình xuống
thiết bị
Do kết nối thiết bị với
máy tính
Kiểm tra kết nối giữa thiết bị
với máy tính
9.4. Bài tập áp dụng
Lập trình bộ demux 1 đường sang 8 đường, do đó sẽ có 3 ngõ chọn kênh. Ngõ cho
phép EN tích cực mức thấp, khi EN = 0 thì ngõ ra không thay đổi
342
10. Lập trình mạch so sánh
10.1. Mạch so sánh
10.1.1. Sơ đồ mạch điều khiển
10.1.2. Yêu cầu công nghệ
Lập trình bộ so sánh dữ liệu 8 bit có sơ đồ khối như hình vẽ.
So sánh
C_in1
C_in2
C_in12
In1[7:0]
In2[7:0]
EN
A > B
A = B
A < B
343
Trong đó: c_in1, c_in2 và c_in12 là các kết quả so sánh của dữ liệu trước đó. EN tích cực
mức thấp, khi EN = 0 thì các ngõ ra đều bằng 0. Bảng sự thật của bộ so sánh dữ liệu 8 bit
được cho trong bảng 6.5. Tên của module là sosanh.
– Bảng sự thật của bộ so sánh 8 bit
c_in1 c_in2 c_in12 EN so sánh A > B A < B A = B
x x x 0 x 0 0 0
x x x 1 in1 > in2 1 0 0
x x x 1 in1 < in2 0 1 0
1 0 0 1 in1 = in2 1 0 0
0 1 0 1 in1 = in2 0 1 0
0 0 1 1 in1 = in2 0 0 1
0 0 0 1 in1 = in2 0 0 1
Sơ đồ kết nối chân thiết bị
344
10.2. Trình tự thực hiện
Lập trình bộ so sánh dữ liệu 8 bit
10.2.1. Điều kiện thực hiện
- Chuẩn bị thiết bị, dụng cụ, vật tư.
THIẾT BỊ, DỤNG CỤ VẬT TƯ
- Máy tính có cài phần mềm Vivado
- BASYS 3 Hãng XILINX
- Dây kết nối máy tính với BASYS 3
- An toàn lao động.
+ Đảm bảo an toàn điện.
+ Đảm bảo an toàn cho người và thiết bị, dụng cụ.
10.2.2. Các bước thực hiện
Bước 1: Khởi động phần mềm Vivado
Kích vào biểu tượng trên màn hình Desktop ta có giao diện phần mềm như sau
Bước 2: Tạo project mới và đặt tên cho project là sosanh
Vào File chọn Project sau đó chọn New
345
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra Hộp thoại
Project name ta đặt tên là sosanh
Project location chọn đường dẫn tới D:/vimachso sau đó nhấn Next
Hiển thị ra hộp thoại
Nhấn Next hiển thị ra hộp thoại
346
Bước 3: Tạo file sosanh.v và sosanh.xdc
Target langguage ta chọn Verilog
Simulator langguage ta chọn Mixed
Nhấn vào Create file hiển thị ra hộp thoại
File name ta gõ sosanh sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Nhấn vào Create file hiển thị ra hộp thoại
347
File name ta gõ sosanh sau đó nhấn OK
Nhấn Next hiển thị ra hộp thoại
Bước 4: Chọn chọn dòng IC lập trình
Family ta chọn Artix-7, Package chọn cpg236, Speed chọn -1 sau đó ta chọn chíp
xc7a35tcpg236-1 sau đó nhấn Next sẽ hiển thị ra hộp thoại
Nhấn Finish hiển thị ra hộp thoại
Sau đó nhấn OK
348
Bước 5: Viết Chương trình trong file sosanh.v
`timescale 1ns / 1ps
module sosanh (in1, in2, out_1, out_2, out_12, c_in1, c_in2, c_in12, EN, clk);
//--------- cac ngo vao ----------
input [7:0] in1; //--------- du lieu thu 1 -------
input [7:0] in2; //--------- du lieu thu 2 -------
input EN; //--------- ngo cho phep --------
input clk;
input c_in1; //--------- ngo ra cua bo so sanh truoc do: in1 > in2 ---
input c_in2; //----- ngo ra cua bo so sanh truoc do: in1 < in2 ---
input c_in12; //----- ngo ra cua bo so sanh truoc do: in1 = in2 ---
//--------- cac ngo ra -----------
output out_1; //------ ngo ra khi in1 lon hon in2 -----------
output out_2; //------ ngo ra khi in2 lon hon in1 -----------
output out_12; //------ ngo ra khi in1 bang in2 --------------
reg out_1;
reg out_2;
reg out_12;
//--------- main program ---------
always @(posedge clk )
begin
if(!EN) begin
out_1 = 0;
out_2 = 0;
out_12 = 0;
end
else begin
if (in1 > in2) begin
out_1 = 1;
out_2 = 0;
out_12 = 0;
349
end
else if (in1 < in2) begin
out_1 = 0;
out_2 = 1;
out_12 = 0;
end
//----------------xu ly khi in1 = in2----------------
else begin
if(c_in1 == 1) begin
out_1 = 1;
out_2 = 0;
out_12 = 0;
end
else if(c_in2 == 1) begin
out_1 = 0;
out_2 = 1;
out_12 = 0;
end
else begin
out_1 = 0;
out_2 = 0;
out_12 = 1;
end
end
end
end
endmodule
Bước 6: Mô phỏng dạng sóng trên phần mềm
Click vào Run Simulation Chọn Run Behavioral Simulation
Để mô phỏng dạng sóng trên phần mềm, ta đặt các thông số cho các đầu vào và quan
sát dạng sóng đầu ra
350
Đặt thống số cho các đầu vào
Nhấn vào biểu tượng để mô phỏng dạng sóng trên phần mềm
Nhấn vào biểu tượng để lưu dạng song
Bước 7: Gán chân thích ứng với thiết bị
Trong phần RTL ANALYSIS ta click vào Schematic
Click vào I/O Ports để gán chân linh kiện phù hợp với thiết bị.
Ta đặt các đầu vào và đầu ra tương ứng với các chân của Chip trong cột Package Pin
và dạng dữ liệu I/O Std như sau:
351
Nhấn vào để lưu toàn bộ dữ liệu
Bước 8: Biên dịch tổng hợp chương trình
Trong mục SYNTHESIS ta click vào Run Synthesis
Nhấn OK
Chọn Launch runs on local host number of jobs 4 sau đó nhấn OK
Quan sát quá trình chạy đến khi hoàn thành
Click vào Open Synthesized Design để quan sát thiết kế
352
Nhấn OK
Bước 9: Download chương trình vào phần cứng của thiết bị
Để Download chương trình vào phần cứng của thiết bị ta vào Tool chọn Settings
Click vào Bitstream, chọn dạng xuất dữ liệu là -bin_file
Trong phần IMPLEMENTATION ta click vào Run Implementation
353
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Sau khi chạy thành công ta chọn Generate Bitstream
Nhấn OK
354
Chọn Launch runs on local host Number or jobs 4 sau đó nhấn OK
Đợi quá trình hoàn thành
Để đổ chương trình vào phần cứng của thiết bị ta cắm thiết bị vào cổng USB của máy
tính sau đó trong phần PROGRAM AND DEBUG ta click vào Open Target chọn Auto
Connect
355
Click vào Program device
Chọn đường dẫn đến sosanh.bit sau đó nhấn vào Program
Quá trình ghi dữ liệu đến khi hoàn thành 100% là xong.
Bước 10: Chạy chương trình trên thiết bị
Gạt công tắc theo sơ đồ chân kết nối thiết bị và quan sát các đèn led
356
10.3. Một số lỗi thường gặp, nguyên nhân và biện pháp xử lý, phòng tránh.
TT lỗi thường gặp Nguyên nhân Biện pháp xử lý,
phòng tránh
1 Sai chân đầu vào/đầu ra Gán sai chân đầu
vào/đầu ra trên thiết bị
Xác định đúng chân đầu vào/đầu
ra trên thiết bị.
Gán đúng chân đầu vào/đầu ra
trên thiết bị
2 Sai lệnh cấu trúc lệnh Lập trình sai cấu trúc Cần lập trình đúng theo cấu
trúc lệnh
3 Không download được
chương trình xuống
thiết bị
Do kết nối thiết bị với
máy tính
Kiểm tra kết nối giữa thiết bị
với máy tính
10.4. Bài tập áp dụng
Lập trình bộ so sánh dữ liệu 8 bit có sơ đồ khối như hình vẽ.
So sánh
C_in1
C_in2
C_in12
In1[7:0]
In2[7:0]
EN
A > B
A = B
A < B
Trong đó: c_in1, c_in2 và c_in12 là các kết quả so sánh của dữ liệu trước đó. EN tích cực
mức thấp, khi EN = 0 thì các ngõ ra đều bằng 0.
357
CÁC BÀI TẬP MỞ RỘNG, NÂNG CAO VÀ GIẢI QUYẾT VẤN ĐỀ
Bài 1: Lập trình điều khiển 8 led từ D7 đến D0 sáng dần từ phải qua trái, tắt dần từ phải qua
trái. Quá trình lặp đi lặp lại.
Bài 2: Lập trình mạch đếm lên từ 00 đến 99 hiển thị trên 2 led 7 thanh.
Bài 3: Lập trình mạch đếm xuống từ 99 xuống 00 hiển thị trên 2 led 7 thanh.
Bài 4: Lập trình mạch đếm lên từ 00 đến 99, sau đó đếm xuống từ 99 đến 00 hiển thị trên 2
led 7 thanh , sau đó lặp lại chu trình đếm.
Bài 5: Lập trình mạch đồng hồ số hiển thị trên 4 led 7 đoạn.
Yêu cầu về đánh giá kết quả học tập:
Nội dung:
+ Kiến thức:
- Phân tích được cấu trúc của các mạch ứng dụng điều khiển led đơn, mạch ghi dịch, mạch
đếm, mạch mã hóa, mạch giải mã, mạch điều khiển led 7 thanh, mạch hợp kênh, phân kênh
và mạch so sánh 2 bít;
- Giải thích được thuật toán điều khiển theo yêu cầu của bài;
- Trình bày được trình tự thực hiện lập trình vi mạch số;
- Phân tích được những lỗi thường gặp, nguyên nhân và biện pháp xử lý, phòng tránh.
+ Kỹ năng:
- Lập trình được các mạch ứng dụng theo yêu cầu kỹ thuật;
- Phòng tránh và sửa được các lỗi khi lập trình điều khiển;
- Kiểm tra chính xác điều kiện hoạt động của thiết bị.
+ Năng lực tự chủ và trách nhiệm:
- Rèn luyện tính tỷ mỉ, chính xác và an toàn vệ sinh công nghiệp;
- Tự chịu trách nhiệm khi thực hiện các việc được giao.
Phương pháp:
+ Về kiến thức: Được đánh giá bằng hình thức kiểm tra viết
+ Về kỹ năng: Đánh giá kỹ năng thực hành Mỗi sinh viên, hoặc mỗi nhóm học viên thực
hiện công việc theo yêu cầu của giáo viên.
Tiêu chí đánh giá theo các nội dung:
- Độ chính xác của công việc
- Thời gian thực hiện công việc
358
- Độ chính xác theo yêu cầu kỹ thuật
+ Năng lực tự chủ và trách nhiệm:
- Rèn luyện tính tỷ mỉ, chính xác và an toàn vệ sinh công nghiệp;
- Tự chịu trách nhiệm khi thực hiện các việc được giao.
359
TÀI LIỆU THAM KHẢO
[1] Computer Architecture Handbook on Verilog HDL, Dr.Daniel - C.Hude, Computer
Science Department Bucknell University Lewisburg.
[2] Verilog Hardware Description Laguage Reference Manual, Open Verilog International.
[3] The Complete Verilog Book, Vivek Sagdeo – Sun Micro Systems.
[4] Design Through Verilog HDL, IEEE Press.
[5] The Verilog Hardware Description Language – Fifth Edition, Donald E.Thomas – ECE
Department Carnegie Mellon University Pittsburgh, Pholip R.Moorby – Co-design
Automation.
[6] A Guide to Digital Design and Synthesis - Second Editon, Samir lapnitkar.
[7] Spartan – 3E FPGA Family Data Sheet, Xilinx.
[8] ModelSim User’s Manual
[9] A verilog HDL, second edition.
[10] Verilog coding for logic synthesis - A JOHN WILEY & SONS, INC., PUBLICATION
[11] A Guide to Digital Design and Synthesis, Second Edition - Prentice Hall PTR.
[12] Introduction to Verilog - Peter M. Nyasulu
[13] www.google.com.
360
Phụ lục 1: Cài đặt phần mềm Vivado Design Suite 2018.3
Để cài đặt phần mềm Vivado Design Suite 2018.3 ta tiến hành các bước sau:
Từ folder chứa phần mềm ta kich đúp vào , và làm theo các bước sau:
Chọn Next, hiển thị ra hộp thoại và tích vào các vị trí I Agree
Chọn Next, hiển thị ra hộp thoại và tích vào vị trí Vivado HL Design Edition
361
Chọn Next, hiển thị ra hộp thoại để kiểm tra các thông tin cần cài đặt
Chọn Next
362
Kiểm tra vị trí cài đặt, dung lượng ổ cứng cần cài sau đó chọn Next
Nhấn yes để cài đặt
363
Nhấn vào Install và quá trình cài đặt diễn ra
364
Khi quá trình cài đặt gần xong sẽ hiển thị ra hộp thoại
Để add License ta kích chuột vào Load License
Kích chuột vào Copy License
365
Tìm đường dẫn đến vị trí đặt License
Chọn License.lic và nhấn Open
Để xem thông tin quản lý License ta kích vào Manage License Seach Paths
366
Kích vào View License Status để xem các thông tin có chuẩn hay không
Quá trình cài đặt thành công
Ta nhấn OK để kết thúc quá trình cài đặt
Các file đính kèm theo tài liệu này:
- giao_trinh_lap_trinh_vi_mach_so_phan_2.pdf