Giáo trình Lập trình vi mạch số - Phần 2

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.

pdf222 trang | Chia sẻ: Tiểu Khải Minh | Ngày: 22/02/2024 | Lượt xem: 32 | Lượt tải: 0download
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:

  • pdfgiao_trinh_lap_trinh_vi_mach_so_phan_2.pdf