co ng .c om ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐIỆN TỬ th an TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II cu u du o ng THÍ NGHIỆM TRÊN KIT ALTERA - DE2 Revision 2 09/2017 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ MỤC LỤC MỤC LỤC MỤC LỤC ........................................................................................................................... I LỜI NÓI ĐẦU ....................................................................................................................1 BÀI THÍ NGHIỆM 0: GIỚI THIỆU ...............................................................................2 I. Giới thiệu Board DE2 của Altera .............................................................................2 II. Cài đặt và sử dụng phần mềm Quatus II ..................................................................5 III. Sample lab .............................................................................................................6 .c om BÀI THÍ NGHIỆM 1 .......................................................................................................32 I. Thí nghiệm 1.1 – Tutorial: ......................................................................................33 II. Thí nghiệm 1.2 ........................................................................................................33 BÀI THÍ NGHIỆM 2 .......................................................................................................35 Thí nghiệm 2.1 – Thiết kế bộ cộng 2 số 4-bit .........................................................36 II. Lab 2.2 – Thiết kế bộ ALU 4-bit .............................................................................37 co ng I. BÀI THÍ NGHIỆM 3 .......................................................................................................40 Thí nghiệm 3.1 – Bộ đếm mã BCD .........................................................................41 II. Thí nghiệm 3.2 – Bộ đếm lên xuống thập phân từ 0 - 99 .......................................44 th an I. BÀI THÍ NGHIỆM 4 .......................................................................................................45 ASIC/FPGA Design Flow .......................................................................................46 II. Projects ...................................................................................................................46 du o ng I. APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM .............................................51 cu u APPENDIX B – VHDL CODES CHO CÁC IC THÔNG DỤNG ...............................64 TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 I CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ LỜI NÓI ĐẦU LỜI NÓI ĐẦU Các bài tập thí nghiệm cho sinh viên chính quy đại học Bách Khoa bắt buộc sử dụng ngôn ngữ VHDL. Người đọc độc lập có thể sử dụng bất cứ ngôn ngữ nào quen thuộc nhất. Trước khi tiến hành thí nghiệm, sinh viên cần đọc kỹ Bài thí nghiệm 0 để hiểu rõ thêm về mục đích thí nghiệm và các ví dụ có sẵn. Sinh viên được yêu cầu in các bài thí nghiệm trước khi đến phòng thí nghiệm. Sinh viên phải hoàn thành các bài chuẩn bị thí nghiệm (Prelab) trước khi vào phòng thí nghiệm. .c om Đồng thời các bước từ thiết kế cho đến bước lập trình dùng VHDL của các bài thí nghiệm nên được chuẩn bị tại nhà. cu u du o ng th an co ng Sinh viên khi làm báo cáo (report) phải tuân theo trình tự được đưa ra trong phần Thiết kế của mỗi bài thí nghiệm và nộp chung với trang xác nhận hoàn thành các bài thí nghiệm của giảng viên hướng dẫn. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 1 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU BÀI THÍ NGHIỆM 0: GIỚI THIỆU Chương này trình bày những thành phần cơ bản của kit Altera DE2 và một ví dụ đơn giản mà trong đó người dùng sẽ sử dụng công cụ Quartus II để lập trình và giao tiếp với kit Altera DE2. I. Giới thiệu Board DE2 của Altera 1. Giới thiệu cu u du o ng th an co ng .c om Board Altera DE2 như Hình 1 được thiết kế với nhiều tính năng đa dạng dựa trên số lượng lớn các ngoại vi nhằm phục vụ cho các nghiên cứu khác nhau (ví dụ như: nghiên cứu và phát triển về các lĩnh vực luận lý số học (digital logic), tổ chức máy tính (computer organization) và FPGA). Trên kit này, một FPGA CHIP họ Cyclone II được tích hợp, và các ngõ vào/ra (IO) của Chip được kết nối với tất cả các CHIP khác trên kit DE2 (như CHIP TV Decoder, Ethernet 10/100M Controller, SRAM..) nhằm giúp cho người dùng có thể thay đổi các ứng dụng hay cấu hình nhằm mong muốn nhằm hướng đến một ứng dụng cụ thể. Hình 1 Kit Altera DE2 TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 2 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU 2. Thành phần Board DE2 cung cấp khá nhiều tính năng hỗ trợ cho việc nghiên cứu và phát triển, dưới đây là thông tin chi tiết của một board DE2: ➢ FPGA: - Vimạch FPGA Altera Cyclone II 2C35. - Vi mạch Altera Serial Configuration – EPCS16. th an co ng .c om ➢ Các thiết bị xuất nhập: - USB Blaster cho lập trình và điểu khiển API của người dùng; hỗ trợ cả 2 chế độ lập trình JTAG và AS. - Bộ điều khiển Cổng 10/100 Ethernet. - Cổng VGA-out. - Bộ giải mã TV và cổng nối TV-in. - Bộ điều khiển USB Host/Slave với cổng USB kiểu A và kiểu B. - Cổng nối PS/2 chuột/bàn phím. - Bộ giải mã / mã hóa âm thanh 24-bit chất lượng đĩa quang với jack cắm line-in, line-out, và microphone. - 2 Header mở rộng 40-pin với lớp bảo vệ diode. - Cổng giao tiếp RS-232 và cổng nối 9-pin. - Cổng giao tiếp hồng ngoại. u du o ng ➢ Bộ nhớ: - SRAM 512-Kbyte. - SDRAM 8-Mbyte. - Bộ nhớ Flash 4-Mbyte (1 số mạch là 1-Mbyte). - Khe SD card. cu ➢ Switch, các đèn led, LCD, xung clock - 4 nút nhấn, 18 nút gạt. - 18 LED đỏ, 9 LED xanh, 8 Led 7 đoạn. - LCD 16x2. - Bộ dao động với tần số 50-MHz và 27-MHz. Một số điểm lưu ý trong quá trình sử dụng Kit DE2 được mô tả như sau: • Chỉ sử dụng nguồn 12 V DC. • Chốt sử dụng cho lập trình (RUN/PROG Switch for JTAG/AS Modes) nên được thiết lập ở chế độ “RUN” trước khi sử dụng cho các thực nghiệm trong tài liệu này. • Chỉ dùng cổng USB Blaster (Sát bên cổng nguồn) để kết nối máy tính và lập trình. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 3 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU 3. Một vài ứng dụng của board DE2 Hình 2 TV box .c om ➢ Ứng dụng làm TV box du o ng th an co ng ➢ Chương trình vẽ bằng chuột USB (paintbrush) u Hình 3 Chương trình vẽ (paintbrush) cu ➢ Máy hát Karaoke và máy chơi nhạc SD Hình 4 Máy hát Karaoke và máy chơi nhạc từ card SD TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 4 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ II. BÀI THÍ NGHIỆM 0: GIỚI THIỆU Cài đặt và sử dụng phần mềm Quatus II ng th an co ng .c om Phần mềm Quartus II được phát triển bởi công ty Altera là một trong những phần mềm đi kèm với các thiết bị phần cứng của công ty này nhằm tạo nên giao diện tương tác giữa người dùng và phần cứng (Kit). Người dùng có thể tải các phiên bản tại Website của công ty Altera (https://www.altera.com) và nhận được bản quyền (license) miễn phí dành cho người đọc sau khi hoàn tất các thủ tục đăng ký trên Website này. Các giao diện và cửa sổ cơ bản của phần mềm được trình bày như Hình 5. Người dùng muốn tìm hiểu kỹ hơn về phiên bản đang sử dụng có thể truy cập vào thanh công cụ hỗ trợ (“help”) trên giao diện. du o Hình 5 Giao diện cơ bản Tool Quartus II 1. Cài đặt phần mềm Quartus II cu u Phần mềm Quartus II được phát triển bởi công ty Altera là một trong những phần mềm đi kèm với các thiết bị phần cứng của công ty này nhằm tạo nên giao diện tương tác giữa người dùng. Người dùng có thể tìm kiếm trên Google hoặc Youtube các tài liệu hướng dẫn hay các Video cài đặt một cách dễ dàng. 2. Hướng dẫn sử dụng phần mềm Quatus II Các bước cần thực hiện: • Bước 1: Tạo project, viết code VHDL của mạch cần thiết kế. • Bước 2: Mô phỏng code VHDL (Verification Tools of Quartus / ModelSim) để kiểm chứng chức năng của mạch. • Bước 3: Tổng hợp code VHDL sử dụng công cụ của Altera – Quartus. • Bước 4: Sử dụng công cụ Programmer của Quartus để thực hiện mạch trên FPGA. • Bước 5: Sử dụng các ngoại vi (switch, nút nhấn, LED,…) để thay đổi ngõ vào và quan sát các ngõ ra trên Kit DE2. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 5 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ III. BÀI THÍ NGHIỆM 0: GIỚI THIỆU Sample lab Thiết kế mạch điều khiển LED sử dụng các Switch trên kit FPGA DE2 1. Tạo project Sau khi mở phần mềm Quartus, người dùng sẽ tạo một dự án (project) cho riêng mình. Sau đây là từng bước để tạo một dự án: du o ng th an co ng .c om • Step 1: Trên thanh menu chọn File/New Project Wizard (như Hình 6) để bắt đầu quá trình tạo project. Hình 6 Tạo một dự án mới cu u Sau đó một giao diện giới thiệu như Hình 7 xuất hiện nhấn Next để tiếp tục. Hình 7 Giao diện giới thiệu TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 6 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU • Step 2: Đặt tên project và thiết lập đường dẫn đến thư mục làm việc của project. Trong bước này bạn có thể đặt tên cho project của mình, và thiết lập đường dẫn đến thư mục làm việc của project. an co ng .c om Trong Hình 8 thiết lập tên project là “test01” và đường dẫn đến thu mục làm việc của project là “C:\altera\Project”. Bạn hoàn toàn có thể thay đổi thiết lập này nếu muốn. Hình 8 Nhấn Next để tiếp tục sau khi thiết lập đường dẫn và tên dự án th • Step 3: Add Files cu u du o ng Trong bước này bạn có thể add thêm các file thiết kế trước đó nếu muốn (Lưu ý các file này có thể add thêm vào project sau khi bạn hoàn thành quá trình tạo project). Nhấn Next để tiếp tục quá trình. Hình 9 Add file TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 7 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ Step 4: Chọn device cho project muốn thiết kế co ng .c om • BÀI THÍ NGHIỆM 0: GIỚI THIỆU an Hình 10 Chọn họ và mã chip FPGA th Trong phần Family chọn dòng “Cyclone II” và trong phần Available device tìm và chọn dòng “EP2C35F672C6” như Hình 10. du o ng Mã chip“EP2C35F672C6” là mã của dòng chip được thiết kế trên kít, mã này có ghi trên chip FPGA của kít mà người dùng sử dụng. Nếu người dùng sử dụng kít khác thì phải xem họ của chip FPGA và mã tương ứng. u → Người đọc lưu ý phần mềm Quartus II là phần mềm dùng chung cho tất cả các chip FPGA, việc chọn họ và mã tùy thuộc vào đối tượng ghip FPGA mà người dùng muốn sử dụng trên kít. cu Ở đây, Hình 11 sẽ giải thích ý nghĩa của mã chip “EP2C35F672C6” mà chip này đang được tích hợp trên kit Altera-DE2: - EP2C: Mã cho họ Cyclone. - 35: 35000 thành phần Les. - F: Kiểu FPGA. - 672: Số chân của FPGA CHIP. - C: Tầm nhiệt độ. - 6: Tốc độ. Sau khi chọn device cho project nhấn Next để tiếp tục quá trình. Một giao diện thiết lập EDA tool như Hình 12 xuất hiện chọn Next để tiếp tục. Đến đây một giao diện tóm tắt về thông tin của project xuất hiện như Hình 13 nhấn Finish để hoàn thành quá trình. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 8 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI THÍ NGHIỆM 0: GIỚI THIỆU an co ng .c om BỘ MÔN ĐIỆN TỬ cu u du o ng th Hình 11 Giải thích mã FPGA CHIP học Cyclone II Hình 12 Thiết lập cho EDA tool TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 9 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI THÍ NGHIỆM 0: GIỚI THIỆU ng .c om BỘ MÔN ĐIỆN TỬ • Step 5: Tạo file thiết kế cho project co Hình 13 Tóm tắt thông tin Project cu u du o ng th an Trên thanh menu chọn File → New như Hình 14. Một hộp hội thoại được mở ra, trong phần Design File chọn VHDL File cho định dạng file thiết kế bằng ngôn ngữ VHDL như Hình 15 (hoặc Verilog HDL File cho định dạng file thiết kế bằng ngôn ngữ Verilog). Nhấn OK để hoàn thành quá trình tạo file. Hình 14 Tạo file thiết kế TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ co ng .c om BÀI THÍ NGHIỆM 0: GIỚI THIỆU Hình 15 Chọn định dạng VHDL/ Verilog file cho thiết kế an • Step 6: Viết code chương trình cho thiết kế bằng ngôn ngữ VHDL (hoặc Verilog) du o library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; u entity test01 is port ( SW: in std_logic_vector (1 downto 0) ; LEDR : out std_logic_vector (1 downto 0) ); end entity; cu ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ng th Đoạn code sau sử dụng ngôn ngữ VHDL để kết nối SW thứ 0 và thứ 1 trên kit DE2 đến các LEDR thứ 0 và thứ 1 thông qua FPGA architecture behavior of test01 is begin LEDR (1 downto 0) <= SW (1 downto 0) ; end architecture; Nếu sử dụng ngôn ngữ Verilog, chương trình có nội dung như sau ➢ ➢ ➢ ➢ ➢ module test01 (SW, LEDR); input[1:0] SW; output[1:0] LEDR; ➢ endmodule assignLEDR = SW; TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU Tên của entity trùng với tên của project co ng .c om Ví dụ tín hiệu SW được chuyển đến LEDR an Hình 16 Soạn thảo chương trình bằng ngôn ngữ VHDL cu u du o ng th Sau khi hoàn thành thiết kế chọn File-> Save As để lưu file thiết kế. Lưu ý tên của file thiết kế phải trùng với tên của project và file thiết kế phải cùng chung thư mục với project như Hình 17. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ ng .c om BÀI THÍ NGHIỆM 0: GIỚI THIỆU ➢ co Hình 17 Lưu chương trình và đổi tên file giống tên project an • Step 7: Tiến hành gán pin cho thiết kế bằng cách import Assignments du o ng th Bước này giúp phần mềm hiểu được các tên khai báo ngõ vào và ngõ ra. Trong ví dụ này phần mềm hiểu ngõ vào được đặt tên “SW” sẽ trùng với tên ngõ vào “SW” của FPGA CHIP (Tham khảo bảng file bảng tên chân - 01_DE2_Pin_Table.pdf) và ngõ ra LEDR cũng tương tự. Nếu không có bước này khi chương trình được nạp lên kit sẽ không báo lỗi nhưng chương trình sẽ không chạy được. cu u Trên thanh menu chọn Assignments -> Import Assignments như Hình 18. Hình 18 Tìm nạp file gán chân bằng công cụ Assigments TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU Một giao diện gán pin xuất hiện như Hình 19, chọn file gán pin để import. co ng .c om Trong ví dụ này sẽ chọn file “03_DE2_pin_assignments” đi kèm với bộ tài liệu. Hình 19 Giao diện gán pin từ file cu u du o ng th an Trường hợp người dùng thích đặt tên ngõ vào và ngõ ra không trùng với tên của các chân quy định cho FPGA CHIP, người dùng phải gán chân bằng cách vào Assignments/Assignment Editor như Hình 20. Một giao diện chỉnh sửa xuất hiện như Hình 21, trong này cột “To” là tên đã được gán sẵn trong file “03_DE2_pin_assignments” được add vào ở bước trên có thể sửa tên trong cột này thành tên trùng với tên tín hiệu trong file thiết kế.Tuy nhiên, cách này không được khuyến khích vì vấn đề thời gian, không đồng nhất tên gọi dễ gây nhầm lẫn và gây lỗi. Bước gán chân cần được thực hiện trước khi biên dịch và nạp chương trình ở các bước tiếp theo sau đây. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI THÍ NGHIỆM 0: GIỚI THIỆU .c om BỘ MÔN ĐIỆN TỬ cu u du o ng th an co ng Hình 20 Tiến hành edit Assignment pin Hình 21 Giao diện edit Assignment pin • Step 8: Tiến hành biên dịch chương trình Để tiến hành biên dịch chương trình chọn nút Start Compilation như Hình 22 hoặc chọn Processing ->Start Compilation. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU ng .c om Tiến hành biên dịch sau khi gán pin co Hình 22 Tiến hành biên dịch chương trình bởi tác vụ nút Start Compilation cu u du o ng th an Quá trình biên dịch sẽ được tiến hành giống Hình 23. Sau khi biên dịch thành công chương trình sẽ thông báo như Hình 24 trong đó chỉ có Warning và Info messages. Hình 23 Tiến trình biên dịch chương trình TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI THÍ NGHIỆM 0: GIỚI THIỆU du o ng th an co ng .c om BỘ MÔN ĐIỆN TỬ u Hình 24 Biên dịch thành công (chỉ có Warning và Info messagess) cu Đối với các thiết kế đơn giản và trong tài liệu này, người dùng có thể không cần quan tâm đến các báo cáo kiểu “Warning”. Tuy nhiên với các thiết kế có quy mô lớn hay trong môi trường công nghiệp, tất cả các báo cáo “Warning” luôn được kiểm tra và rà soát,một số lỗi tiềm ẩn sẽ được phát hiện thông qua loại báo cáo này. Nhìn cửa số biên dịch “Compilation”, ý nghĩa các bước trong quá trình biên dịch được mô tả: + Analysis & Synthesis: Phân tích lỗi cú pháp chương trình và biên dịch nội dung chương trình sang dạng thông tin sao cho kit hiểu và chọn các LEs cũng như các phần cứng sẵn có cần thiết. + Filter: Tiến hành thực biên dịch tạo các dạng thông tin kết nối, tối ưu các tài nguyên sử dụng để có số LEs hay các thành phần khác nhỏ nhất có thể. + Assembler: Tiến hành biên dịch dạng dạng file mà phần cứng hiểu để tạo thiết kế cuối cùng. Quá trình hợp dịch dựa vào kết quả của quá trình Fitter sẽ tạo ra hình ảnh của thiết kế, có thể TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU trong các dạng sau:Programmer Object Files (.pof), SRAM Object Files (.sof), Hexadecimal (Intel-Format) Output Files (.hexout),Tabular Text Files (.ttf), and Raw Binary Files (.rbf), + TimeQuest Timing Analysis: Bước này cần các thiết lập trước đó mà không đề cập trong tài liệu. Bước này sẽ tạo ra các báo cáo giúp người dùnghình dung được thiết kế của mình sẽ chiếm bao nhiêu tài nguyên, chạy được với tần số tối đa là bao nhiêu,… Nói chung là những thông số liên quan đến thuộc tính vật lý của thiết kế chứ không báo rằng thiết kế có chạy đúng hay sai, có lỗi cú pháp hay không . cu u du o ng th an co ng .c om Nếu có lỗi cú pháp thì báo cáo kiểu “Error” sẽ được thể hiện ở Hình 25. Hình 25 Thiết kế có lỗi và người đọc phải sửa lỗi thông qua những báo cáo Error ở cửa sổ “Type Message” TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ co ng .c om BÀI THÍ NGHIỆM 0: GIỚI THIỆU an Hình 26 Báo cáo tổng kết sau khi hoàn tất việc biên dịch cu u du o ng th Phân tích báo cáo thiết kế như Hình 26 thấy tài nguyên được sử dụng chỉ là 4 pins. Không một tài nguyên nào khác được sử dụng vì đoạn code chỉ đơn thuần là nối ngõ vào SW thứ 0 và thứ 1 vào ngõ ra LEDR thứ 0 và thứ 1. Sau khi biên dịch xong, người đọc có thể xem thiết kế ở mức cổng bằng cách sử dụng công cụ “Tools/Netlist Viewers/RTL Viewer” như Hình 27. Hình 27 Công cụ xem thiết kế ở mức cổng TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI THÍ NGHIỆM 0: GIỚI THIỆU ng .c om BỘ MÔN ĐIỆN TỬ Hình 28 Xem thiết kế ở mức cổng an co Ở đây, thiết kế chỉ đơn thuần nối trực tiếp ngõ vào đến ngõ ra nên không một cổng logic hay FF nào được thấy ở kết quả Hình 28. 2. Thực hiện mô phỏng ng th Mô phỏng là một bước cần thiết để kiểm tra hành vi của thiết kế có đúng như mong muốn của thiết kế hay không trước khi thực hiện đổ chương trình xuống kít. du o Các bước sau đây mô tả việc thực hiện tạo giản đồ xung mô tả hành vi của thiết kế để kiểm tra xem thiết kế có chạy như mong muốn hay không. • Step 1: Tạo file waveform cu u Trên thanh menu chọn File/new trong phần Verification/Debugging files chọn Vector Waveform File để tạo file waveform như Hình 29. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI THÍ NGHIỆM 0: GIỚI THIỆU .c om BỘ MÔN ĐIỆN TỬ Hình 29 Tạo file waveform ng • Step 2: Insert tín hiệu vào file waveform. co Bước này sẽ thêm các tín hiệu cần tiến hành mô phỏng vào file waveform, tiến hành tạo dạng sóng đầu vào và quan sát kết quả dạng sóng đầu ra. cu u du o ng th an Trên thanh menu chọn Edit/Insert/Inset Node or Bus…như Hình 30. Hình 30 Thêm các tín hiệu cần mô phỏng Một giao diện Insert Node or Bus xuất hiện như Hình 31. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 21 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI THÍ NGHIỆM 0: GIỚI THIỆU .c om BỘ MÔN ĐIỆN TỬ Hình 31 Giao diện Insert Node or Bus cu u du o ng th an co ng Trên giao diện Insert Node or Bus chọn Node Finder…sẽ xuất hiện một giao diện Node Finder như Hình 32, trong giao diện này ở trường Filter chọn Pins: assigned và click chuột vào List để chương trình liệt kê các pin được gán trong thiết kế như Hình 33. Trong danh sách này chọn tín hiệu muốn add vào waveform bên cột trái và add vào bên cột phải như Hình 34. Tiếp theo nhấn OK -> OK như Hình 35 và Hình 36. Hình 32 Giao diện Node Finder TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 22 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI THÍ NGHIỆM 0: GIỚI THIỆU an co ng .c om BỘ MÔN ĐIỆN TỬ cu u du o ng th Hình 33 List danh sách tín hiệu trong thiết kế Hình 34 Chọn chính xác tín hiệu cần mô phỏng bằng cách đưa tín hiệu được liệt kê ở cửa sổ bên trái qua bên phải bằng cách ấn vào biểu tượng (>) TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 23 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ .c om BÀI THÍ NGHIỆM 0: GIỚI THIỆU Hình 35 Chọn hết các tín hiệu muốn xem rồi nhấn OK du o ng th an co ng Chỉ xem những tín hiệu đầu vào và đầu ra Hình 36 Chọn OK sau khi thiết lập các thông số cu u • Step 3: Vẽ dạng sóng cho tín hiệu đầu vào Sau khi thiết lập xong các tín hiệu mô phỏng sẽ xuất hiện trên waveform. Trên giao diện này ta có thể vẽ dạng sóng cho từng tín hiệu bằng cách kéo chuột chọn đoạn tín hiệu muốn set và chọn nó là giá trị 1 hay 0 trên thanh công cụ như Hình 37. Sau khi vẽ dạng sóng các tín hiệu đầu vào cho quá trình mô phỏng hoàn thành lưu file lại cùng chung thư mục với file project như Hình 38. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 24 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ ng .c om BÀI THÍ NGHIỆM 0: GIỚI THIỆU cu u du o ng th an co Hình 37 Giao diện dạng sóng với tín hiệu ngõ vào SW Hình 38 Lưu file waveform • Step 4: Thiết lập thời gian chạy mô phỏng Trên thanh menu chọn Edit -> End Time như Hình 39 để tiến hành thiết lập thời gian chạy mô phỏng cho project. Sau đó nhập thời gian chạy mô phỏng rồi nhấn OK (Hình 40). TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 25 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ ng .c om BÀI THÍ NGHIỆM 0: GIỚI THIỆU cu u du o ng th an co Hình 39 Thiết lập thời gian kết thúc mô phỏng Hình 40 Nhập thông số thời gian kết thúc rồi chọn OK • Step 5: Tiến hành chạy mô phỏng TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 26 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU an co ng .c om Trên thanh menu chọn Processing -> Generate Functional Simulation Netlist để tạo ra Netlist function cho quá trình mô phỏng như Hình 41. Sau đó click chuột vào nút Start Simulation để bắt đầu chạy mô phỏng như Hình 42. Start Simulation cu u du o ng th Hình 41 Tạo Netlist cho mô phỏng Hình 42 Bắt đầu chạy mô phỏng TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 27 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI THÍ NGHIỆM 0: GIỚI THIỆU co ng .c om BỘ MÔN ĐIỆN TỬ an Hình 43 Kết quả quá trình chạy mô phỏng th Hình 43 cho thấy tín hiệu ngõ ra LEDR theo đúng như tín hiệu ngõ vào SW. Điều này đúng theo mong muốn thiết kế SW thứ 0 gán cho LEDR thứ 0 và SW thứ 1 gán cho LEDR thứ 1. ng 3. Thực hiện nạp chương trình xuống kít cu u du o Tiếp theo, phần này sẽ hướng dẫn nạp chương trình xuống kít. Tuy nhiên, trước khi nạp chương trình xuống kit, thì các kết nối giữa máy tính với kít thông qua cổng USB Blaster được mô tả như Hình 44. Hình 44 Kết nối kít với máy tính thông qua cổng USB Blaster TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 28 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU ng .c om Sau khi biên dịch hoàn tất, người dùng có thể nạp lên kit thông qua công cụ (Tool>Programmer) như Hình 45. co Hình 45 Công cụ nạp chương trình Giao diện nạp lệnh như Hình 46 cần chú ý những điểm sau: an + Kiểm tra chính xác họ FPGA trên kit đang dùng. cu u du o ng th + Mục “HardwareSetup” cần kiểm tra lại đã nhận “Driver” chưa. Nếu chưa nhận sẽ hiện chữ “No Hardware”. Còn nếu nhận thì sẽ hiện chữ “USB- Blaster”. Người dùng có thể sẽ cần dùng file “04_usb-blaster_driver” trong gói tài liệu để cài driver cho máy tính của mình hoặc sử dụng mạng Internet để kiểm tra và cài đặt. Hình 46 Giao diện nạp lệnh chưa nhận được USB TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 29 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ ng .c om BÀI THÍ NGHIỆM 0: GIỚI THIỆU co Hình 47 Giao diện nạp lệnh đã nhận được USB-Blaster cu u du o ng th an Sau khi đã nhận được USB, nhấn “Start” để bắt đầu nạp file lên kit và kiểm tra. Tuy nhiên phải chú ý là báo cáo “100% (Successful)” phải được hiển thị như Hình 48 để đảm bảo toàn bộ chương trình được nạp thành công. Hình 48 Chương trình được nạp xuống thành công TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 30 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU co ng .c om Kết quả được khảo sát thông qua Hình 49. Khi SW thứ 0 bật lên thì đèn LEDR thứ 0 sáng và ngược lại cho SW thứ 1 và LEDR thứ 1. Các SW thứ 2 cho đến 17 được bật lên nhưng đèn LEDR thứ 2 đến 17 không sáng vì trong đoạn mã chỉ khai báo sử dụng từ 0 đến 1. cu u du o ng th an Hình 49 Kiểm tra kết quả bằng các Switch và đèn LEDR TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 31 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 1 BÀI THÍ NGHIỆM 1 ❖ Mục tiêu: Sinh viên cần tìm hiểu về kit DE2, cách sử dụng công cụ Quartus, và cách cài đặt chương trình trên kit Altera DE2 FPGA dùng Programmer. ❖ Đánh giá của GVHD: Kết quả thực hiện trên kit DE2 Các câu hỏi liên quan .c om Kết quả mô phỏng TN 1.1 cu u du o ng th an co ng TN 1.2 TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 32 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ I. BÀI THÍ NGHIỆM 1 Thí nghiệm 1.1 – Tutorial: Sinh viên đọc phần III. của Bài thí nghiệm 0 và thực hiện chương trình Test01 theo từng bước đã được đưa ra. • Giáo viên hướng dẫn sẽ kiểm tra kết quả thực hiện của sinh viên thông qua kết quả mô phỏng. II. Thí nghiệm 1.2 1. Yêu cầu: .c om Thực hiện và mô phỏng các cổng logic. 2. Thiết kế: th an co ng a. Sơ đồ khối (Block Diagram): cu u du o ng b. Sơ đồ mạch logic (Logic Diagrams): c. Bảng chân trị (Truth Table): TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 33 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 1 d. VHDL Code: • //VHDL code for all logic gates library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; ng co architecture dataflow of gates is begin not_op <= not a_in; and_op <= a_in and b_in; nand_op <= a_in nand b_in; or_op <= a_in or b_in; nor_op <= a_in nor b_in; xor_op <= a_in xor b_in; xnor_op <= a_in xnor b_in; end dataflow; .c om entity gates is port (a_in,b_in: in std_logic; not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op: out std_logic); end gates; an e. Kết quả mô phỏng ModelSim/VWF (Results) (SV chèn kết quả mô phỏng vào mục này) du o ng th f. Kết quả thực hiện trên kit DE2 Gán ngõ vào a_in và b_in vào SW[0] và SW[1], các ngõ ra vào LEDG[0]-[6]. Mô phỏng và báo giáo viên hướng dẫn ghi nhận. g. Tham khảo – Verilog Code • //Verilog code for all logic gates cu u module gates(a_in, b_in,not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op); input a_in,b_in; output not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op; assign assign assign assign assign assign assign not_op = ~a_in; and_op = a_in&b_in; nand_op = ~(a_in&b_in); or_op = a_in|b_in; nor_op = ~(a_in|b_in); xor_op = a_in^b_in; xnor_op = ~(a_in^b_in); endmodule TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 34 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 2 BÀI THÍ NGHIỆM 2 ❖ Mục tiêu: Nắm được phương pháp thiết kế mạch tổ hợp cơ bản bằng ngôn ngữ VHDL và thực hiện trên kit FPGA. ❖ Prelab: Thiết kế bộ cộng toàn phần (Full-Adder), bộ dồn kênh 4-1 (MUX 4-1), bộ giải mã 2-4 (Decoder 2-4) có ngõ ra tích cực thấp. Mô phỏng sử dụng VWF / ModelSim .c om SV in code VHDL/Verilog cho 3 bộ thiết kế và 3 hình mô phỏng dạng sóng, nộp cho GV trước khi vào phòng thí nghiệm. ❖ Đánh giá của GVHD: ng Kết quả thực hiện trên kit DE2 Các câu hỏi liên quan co Kết quả mô phỏng an TN 2.1 cu u du o ng th TN 1.2 TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 35 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ I. BÀI THÍ NGHIỆM 2 Thí nghiệm 2.1 – Thiết kế bộ cộng 2 số 4-bit 1. Yêu cầu: Thiết kế bộ cộng 2 số 4-bit sử dụng bộ cộng toàn phần (Full Adder) 2. Thiết kế: a. Sơ đồ khối (Block Diagram): ng th an co ng .c om b. VHDL Code: • //VHDL code du o c. Kết quả mô phỏng ModelSim/VWF (Results) cu u d. Kết quả mô phỏng trên kit DE2 TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 36 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ II. BÀI THÍ NGHIỆM 2 Lab 2.2 – Thiết kế bộ ALU 4-bit 1. Yêu cầu: Thiết kế bộ ALU (Arithmetic and Logic Unit) thực hiện 8 hàm tính toán số học và logic đơn giản. Mã điều khiển và mô tả các phép toán tương ứng với các mã ấy được trình bày trong Bảng 1. Bộ ALU 4-bit có các ngõ vào sau: .c om A, B: 4-bit input Cin: 1-bit input Output: 4-bit output Cout: 1-bit output Control: 3-bit control input Bảng 1 Các ngõ vào và ngõ ra của ALU ng Comment ➢ SW[3..0] ➢ B ➢ SW[7..4] ➢ 4-bit input to be displayed on HEX4 ➢ Cin ➢ SW[8] ➢ 1-bit input to be displayed on LEDR[0] ➢ Control ➢ SW[17..15] ➢ 2-bit input to be displayed on LEDR[17..16] th ➢ ALU_out ➢ HEX0 ➢ LEDG[0] u ➢ Cout ➢ 4-bit input to be displayed on HEX6 an ➢ A du o Outputs Assigned Port ng Inputs Signal Name co Signal Type cu • • • • • ➢ 4-bit output result to be displayed on HEX0 ➢ 1-bit output result to be displayed on LEDG[0] Bảng 2 Tập lệnh của ALU Control Instruction Operation 000 Add Output <= A + B + Cin; Cout chứa số nhớ (carry) 001 Sub Output <= A – B – Cin; Cout chứa số mượn (borrow) 010 Or Output <= A or B 011 And Output <= A and B 100 Shl Output <= A(2 downto 0) & ’0’ 101 Shr Output <= ‘0’ & A(3 downto 1) 110 Rol Output <= A(2 downto 0) & A(3) 111 Ror Output <= A(0) & A(3 downto 1) TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 37 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 2 Những điểm cần lưu ý: • Sử dụng lệnh CASE (hoặc các câu lệnh thiết kế tương đương) kiểm tra ngõ vào “Code” để xác định phép toán cần thực hiện. • Với mạch tổ hợp, ngõ vào thay đổi sẽ làm ngõ ra thay đổi ngay lập tức. • Có thể dùng các phép toán số học và logic trong thiết kế. • Mô phỏng thiết kế sử dụng lệnh “force” và “run” trong cửa sổ Transcript để thiết lập giá trị ngõ vào và quan sát giản đồ xung của ngõ ra ở cửa sổ Waveform. 2. Thiết kế: an co ng .c om a. Sơ đồ khối (Block Diagram): cu u du o ng th b. Sơ đồ mạch logic (Logic Diagrams): TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 38 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 2 d. Kết quả mô phỏng ModelSim/VWF (Results) cu u du o ng th an co ng e. Kết quả mô phỏng trên kit DE2 .c om c. VHDL Code: • //VHDL code TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 39 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 3 BÀI THÍ NGHIỆM 3 ❖ Mục tiêu: Nắm được phương pháp thiết kế mạch tuần tự cơ bản và thực hiện trên FPGA. (To learn designing basic sequential circuits in VHDL and implementing them on an FPGA.) ❖Prelab: Thiết kế D-Flip Flop (D-FF). Mô phỏng sử dụng VWF / ModelSim .c om SV in code VHDL/Verilog cho thiết kế và mô phỏng dạng sóng, nộp cho GV trước khi vào phòng thí nghiệm. ❖ Đánh giá của GVHD Kết quả thực hiện trên kit DE2 Các câu hỏi liên quan co ng Kết quả mô phỏng an TN 3.1 cu u du o ng th TN 3.2 TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 40 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ I. BÀI THÍ NGHIỆM 3 Thí nghiệm 3.1 – Bộ đếm mã BCD 1. Yêu cầu: Thực hiện bộ đếm số BCD (Binary Coded Decimal) 1 digit có các đặc điểm sau: Là mạch đồng bộ đếm lên/xuống 4-bit. Trạng thái ngõ ra thay đổi khi ngõ vào CLK xuất hiện cạnh lên. Khi ngõ vào bất đồng bộ CLR = 0, bộ đếm bị reset. Chọn chu kỳ của tín hiệu CLK là 10ns khi mô phỏng thiết kế. ng .c om • • • • ENABLE UP 1 1 X Bộ đếm nạp giá trị từ ngõ vào D. 0 1 1 Mạch thực hiện đếm lên. Nếu giá trị của bộ đếm là 9, Carry output (CO) = 1. 0 1 0 ng th an co LOAD Mạch thực hiện đếm xuống. Nếu giá trị của bộ đếm là 0, Carry output (CO) = 1 cu Inputs Signal Name Outputs Assigned Port Comment D SW[3..0] 4-bit input to be displayed on HEX6 ENABLE SW[4] 1-bit input to be displayed on LEDR[0] LOAD SW[5] 1-bit input to be displayed on LEDR[1] UP SW[6] 1-bit input to be displayed on LEDR[2] CLR SW[7] 1-bit input to be displayed on LEDR[3] Q HEX0 4-bit output result to be displayed on HEX0 Cout LEDG[0] 1-bit output result to be displayed on LEDG[0] u Signal Type du o Bảng 3 Các ngõ vào, ngõ ra của bộ đếm mã BCD • Gợi ý: SV có thể tùy chọn cách thiết kế bộ đếm: đơn giản nhất là phương pháp mô tả hành vi (behavioral description) sử dụng phép toán số học (Count <= Count +1) hoặc máy trạng thái TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 41 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 3 (State <= Next_State); có thể sử dụng phương pháp mô tả luồng dữ liệu (Dataflow Description) hoặc mô tả cấu trúc (Structural description), nhưng chương trình sẽ phức tạp hơn. • Thực hiện mô phỏng như sau: ➢ ➢ ➢ ➢ Nạp vào bộ đếm giá trị 6 Tăng giá trị bộ đếm 4 đơn vị: bộ đếm sẽ tăng đến giá trị 9 và quay về giá trị 0. Giảm giá trị bộ đếm 1 đơn vị, bộ đếm sẽ quay về giá trị 9. Xóa bộ đếm. 2. Thiết kế: co ng .c om a. Sơ đồ khối (Block Diagram): th c. VHDL Code: Các ví dụ thiết kế của Clock_Divider: an b. Sơ đồ mạch logic (Logic Diagrams) (Nếu có): ng • //Example 1: VHDL code for Divider from 50MHz to 1Hz du o library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.numeric_std.ALL; cu u entity Clock_Divider is port ( clk,reset: in std_logic; clock_out: out std_logic); end Clock_Divider; architecture bhv of Clock_Divider is signal count: integer:=1; signal tmp : std_logic := '0'; begin process(clk,reset) begin if(reset='1') then count <= 1; tmp <= '0'; elsif(clk'event and clk='1') then count <= count+1; if (count = 25000000) then tmp <= NOT tmp; count <= 1; end if; TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 42 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 3 end if; clock_out <= tmp; end process; end bhv; • //Example 2: VHDL code for Clock_Divider library IEEE; use IEEE.numeric_bit.ALL; entity simpleCounter is Port ( clk50Mhz : in bit; led : out bit); end simpleCounter; co ng .c om architecture Behavioral of simpleCounter is signal counter: unsigned (26 downto 0); signal cnt_temp: bit_vector(26 downto 0); begin process (clk50Mhz) begin if clk50MHZ = '1' and clk50Mhz'event then counter <= counter + 1; --increment counter every 20 ns (1/ 50 Mhz)cycle. end if; end process; cnt_temp <= bit_vector(counter); led <= cnt_temp(26); -- (2^26 / 50E6) = 1.34 seconds end Behavioral; th library IEEE; use IEEE.numeric_bit.ALL; an • //Example 3: VHDL code for Clock_Divider du o ng entity complex is Port ( clk50Mhz : in bit; led : inout bit ); end complex; cu u architecture Behavioral of complex is signal counter: integer range 1 to 50000000; begin process (clk50Mhz) begin if clk50MHZ = '1' and clk50Mhz'event then if counter = 50000000 then counter <= 1; led <= not led; else counter <= counter + 1; end if; end if; end process; end Behavioral; d. Kết quả mô phỏng ModelSim/VWF (Results) e. Kết quả mô phỏng trên kit DE2 TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 43 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ II. BÀI THÍ NGHIỆM 3 Thí nghiệm 3.2 – Bộ đếm lên xuống thập phân từ 0 - 99 1. Yêu cầu: Sử dụng 2 bộ đếm đã thiết kế ở trên, thiết kế bộ đếm thập phân các số có 2 chữ số. Mạch thực hiện đếm lên từ 00 đến 99 hoặc đếm xuống từ 99 về 00. ng Nạp giá trị bộ đếm là 97. Tăng giá trị bộ đếm thêm 5 đơn vị. Chờ 2 chu kỳ CLK. Giảm giá trị bộ đếm 4 đơn vị. Xóa bộ đếm. co ➢ ➢ ➢ ➢ ➢ .c om • Các ngõ vào, ngõ ra của mạch đếm: CLR, CLK, ENABLE, LOAD, UP, D1, D2, Q1, Q2, CO. • Dùng phương pháp mô tả cấu trúc (Structural Description): tạo 2 Instant của bộ đếm ở Thí nghiệm 3.1. • Mô phỏng thiết kế 2. Thiết kế: an a. Sơ đồ khối (Block Diagram): th b. Sơ đồ mạch logic (Logic Diagrams): cu u du o ng c. VHDL Code: • //VHDL code d. Kết quả mô phỏng ModelSim/VWF (Results) e. Kết quả mô phỏng trên kit DE2 TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 44 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 4 BÀI THÍ NGHIỆM 4 ❖ Mục tiêu: Bài này giúp sinh viên 1. Hiểu quy trình thiết kế ASIC/FPGA (ASIC/FPGA design flow). 2. Thiết kế mạch hỗn hợp (thiết kế bao gồm cả mạch tổ hợp và mạch tuần tự). 3. Biết cách tạo testbench để mô phỏng thiết kế. 4. Thực hiện mạch trên FPGA. .c om ❖Prelab: SV trả lời phần 1, và chọn 1 trong các đề tài trong phần 2 để hoàn thành khóa học. ng SV nộp câu trả lời của phần 1 và thiết kế ở dạng sơ đồ khối của đề tài mình chọn cho GV trước khi vào phòng thí nghiệm. an Kết quả thực hiện trên kit DE2 Các câu hỏi liên quan th Kết quả mô phỏng co ❖ Đánh giá của GVHD cu u du o ng Project TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 45 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ I. BÀI THÍ NGHIỆM 4 ASIC/FPGA Design Flow Dựa vào quy trình thiết kế ASIC/FPGA (design flow). Trả lời các câu hỏi sau: du o ng th an co ng .c om 1) Vai trò, công dụng của từng bước thiết kế (trả lời ngắn gọn, 1 dòng cho mỗi bước)? 2) Trong bài thí nghiệm, công cụ nào được sử dụng đế thực hiện những bước thiết kế này? Chỉ ra các bước đã bị bỏ qua. 3) Nêu dữ liệu đầu vào và sản phẩm ngõ ra của từng bước. cu u SV tìm hiểu thêm trên Google, ebooks để trả lời các câu hỏi trên II. Projects ❖ Phân loại gói hàng - Package Sorter: 1. Yêu cầu Thiết kế hệ thống phân loại gói hàng dựa trên cân nặng của chúng và lưu trữ thông tin theo các danh mục khác nhau. Bộ phân loại có tín hiệu Reset bất đồng bộ, tích cực mức cao. Thông tin theo dõi các gói hàng được lưu trữ kể từ lần reset gần nhất trước đó. Các gói hàng được chia thành 6 nhóm: 1) Từ 1 đếm 200 grams 2) Từ 201 đến 500 grams 3) Từ 501 đến 800 grams TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 46 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 4 4) Từ 801 đến 1000 grams 5) Từ 1000 grams đến 2000 grams 6) Lớn hơn 2000 grams Mạch giải mã thông tin khối lượng của từng gói hàng và phân loại vào các nhóm khác nhau. Ngõ vào của mạch là một số nhị phân 12-bit không dấu (thể hiện khối lượng của gói hàng), tín hiệu clock và tín hiệu reset. Các ngõ ra bao gồm: ng th an co ng .c om • currentGrp: số nhị phân 3-bit không dấu, thể hiện mã nhóm của gói hàng hiện tại. Nếu cân nặng ban đầu là 0, currentGrp = 0. Ngõ ra sẽ được cập nhật ngay khi khối lượng ngõ vào thay đổi. • 6 ngõ ra Grp1 – Grp6: mỗi ngõ là một số nhị phân 8-bit không dấu, thể hiện số gói trong từng nhóm khối lượng kể từ lần reset cuối cùng. Khi tín hiệu ngõ vào reset tích cực, các ngõ ra sẽ bị xóa. du o Chú ý: Mạch tạo tín hiệu currentGrp là mạch tổ hợp, do giá trị ngõ ra chỉ phụ thuộc vào khối lượng của gói hàng hiện tại, không phụ thuộc vào giá trị ngõ ra trước đó. Tuy nhiên, mạch tạo tín hiệu Grp1-Grp6 là mạch tuần tự, do các tín hiệu này phụ thuộc vào cả ngõ vào hiện tại và ngõ vào trước đó. cu u Các ngõ ra của mạch tuần tự sẽ thay đổi trạng thái khi có cạnh xuống của xung clock. Chú ý rằng tín hiệu clk có tần số cao hơn tần số của tín hiệu khối lượng, thiết kế phải đảm bào mỗi gói hàng chỉ được phân loại và cập nhật một lần. Một gói hàng chỉ được xác định và phân loại khi biến cân nặng trở về 0, để chắc chắn rằng chỉ giá trị khối lượng đầu tiên nhận được sau khi khối lượng được trả về 0 mới được lấy mẫu, mọi sự biến động ở ngõ vào sau đó sẽ bị bỏ qua, không tính là một gói mới. 2. Mô phỏng thiết kế: SV có thể tạo ra nhiều chuỗi ngõ vào khác nhau để kiểm chứng thiết kế của mình. Sau đây là một ví dụ: • Input Sequence: Reset → Nhập gói 250 grams → Lấy gói hàng ra → Nhập gói 300 grams → Lấy gói hàng ra → Nhập gói 501 grams → Nhập thêm gói 512 grams TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 47 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 4 [Khi tạo waveforms, chuỗi tín hiệu ngõ vào có dạng: reset → 250 → 0 → 300 → 0 → 501 → 512] • Kết quả thu được khi mô phỏng: - Grp1 = Grp4 = Grp5 =0x00 - Grp2 = 0x02 - Grp3 =0x01 - currentGrp = 0x05 Chú ý: sau khi phân loại gói 501 grams vào nhóm 3, việc thêm gói 512 gram chỉ thay đổi giá trị currentGrp, không ảnh hưởng đến giá trị Grp5. .c om 3. Thiết kế a. Sơ đồ khối (Block Diagram): ng b. Sơ đồ mạch logic (Logic Diagrams): th an co c. VHDL Code: • //VHDL code ng d. Kết quả mô phỏng ModelSim/VWF (Results) cu u du o e. Kết quả mô phỏng trên kit DE2 TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 48 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 4 ❖ Traffic Light Control: 1. Yêu cầu Thiết kế bộ điều khiển đèn giao thông cho một giao lộ bao gồm: 2 hướng A và B, và lối dành cho người đi bộ qua đường. (Hướng A là hướng ưu tiên so với hướng B). • Hướng A bao gồm 3 đèn tín hiệu: Xanh (Ga), Vàng (Ya) và Đỏ (Ra). • Tương tự, hướng B bao gồm 3 đèn: Xanh (Gb), Vàng (Yb), và Đỏ (Rb). • Tín hiệu cho người đi bộ gồm 2 đèn: Xanh (Gw) và Đỏ (Rw). .c om Chuỗi tín hiệu điều khiển được sắp xếp theo trình tự sau: Ga Rb Rw, Ga Rb Rw, Ya Rb Rw, Ra Gb Rw, Ra Yb Rw, Ra Rb Gw, Ra Rb Rw, Ga RbRw… Với quy ước thời gian: • Hướng ưu tiên (A): co an th ng ➢ Xanh: 3 giây. ➢ Vàng: 1 giây. ➢ Đỏ: 12 giây. • Đèn dành cho người đi bộ: ng ➢ Xanh: 4 giây ➢ Vàng: 2 giây. ➢ Đỏ: 10 giây. • Hướng phụ (B) du o u • ➢ Xanh: 2 giây. ➢ Đỏ: sáng nhấp nháy 4 giây với tần số 1Hz sau đó sáng liên tục 10 giây. Chế độ bảo dưỡng: cu ➢ RST=1: Ra, Rb, and Rw nhấp nháy tần số 1Hz ➢ RST=0: các tín hiệu hoạt động như bình thường với trạng thái bắt đầu từ Ga,Rb,Rw. 2. Các bước thiết kế: 1) Vẽ giản đồ trạng thái của bộ điều khiển. Sinh viên viết code VHDL theo kiểu mô tả hành vi (behavioral), không cần tìm phương trình các hàm trạng thái; chú ý thời gian sáng của các đèn để xác định thời điểm chuyển trạng thái. 2) Viết code VHDL theo giản đồ trạng thái đã thiết lập. Mô phỏng để kiểm tra chức năng của bộ điều khiển. (chú ý: Giảm thời gian của các tín hiệu để rút ngắn thời gian mô phỏng). 3) Tổng hợp và thực hiện mạch trên FPGA. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 49 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI THÍ NGHIỆM 4 ng .c om BỘ MÔN ĐIỆN TỬ co 3. Thiết kế a. Sơ đồ khối (Block Diagram): th du o ng c. VHDL Code: • //VHDL code an b. Sơ đồ mạch logic (Logic Diagrams): cu u d. Kết quả mô phỏng ModelSim/VWF (Results) e. Kết quả mô phỏng trên kit DE2 TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 50 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM 1. Download và cài đặt chương trình co ng .c om Download miễn phí chương trình ModelSim Student Edition (version 6.6d tại 12/2010) tại www.model.com an Làm đúng theo 3 bước được hướng dẫn trên www.model.com th 2. Hướng dẫn cơ bản cu u du o ng a. Khởi động ModelSim b. Tạo Project Bấm File ->New ->Project… TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 51 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM .c om Mạch tổ hợp cần thiết kế bao gồm một AND_GATE và một OR_GATE. ng Nhập tên project là comb_ckt, thường chọn tên project giống với tên file chứa mã VHDL (.vhd) và thông thường cũng giống với tên của entity của mã VHDL. an co Bấm Browse để chọn thư mục chứa project. Nên tạo một thư mục riêng để chứa các file của một project. th Bấm OK cu u du o ng c. Thêm file vào project Bấm Create New File để tạo một file mới. (Nếu lười gõ đoạn mã ví dụ sau đây thì chọn Add Existing File, rồi chọn fie comb_ckt.vhd kèm theo hướng dẫn này ☺) TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 52 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM Bấm Close. du o ng th an co ng .c om Nhập tên file là comb_ckt, chọn loại file là VHDL, giữ nguyên Folder là Top Level, rồi bấm OK. cu u Bấm đôi vào tên file comb_ckt.vhd để mở cửa sổ soạn thảo chương trình Nhập vào đoạn mã VHDL sau ------------------------------------------------------------- Combinational Logic Design -- (ESD book figure 2.4) -- by Weijun Zhang, 04/2001 --- A simple example of VHDL Structure Modeling -- we might define two components in two separate files, -- in main file, we use port map statement to instantiate TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 53 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM -- the mapping relationship between each components -- and the entire circuit. -----------------------------------------------------------library ieee; use ieee.std_logic_1164.all; -- component #1 Mô tả linh kiện thứ 1: OR_GATE entity OR_GATE is port( X: in std_logic; Y: in std_logic; F2: out std_logic); end OR_GATE; -- behavior des. ------------------------------------------------------------library ieee; use ieee.std_logic_1164.all; -- component #2 an th -- behavior des. ng architecture behv of AND_GATE is begin process(A,B) begin F1 <= A and B; end process; end behv; Mô tả linh kiện thứ 2: AND_GATE co ng entity AND_GATE is port( A: in std_logic; B: in std_logic; F1: out std_logic ); end AND_GATE; .c om architecture behv of OR_GATE is begin process(X,Y) begin F2 <= X or Y; end process; end behv; -------------------------------------------------------------- du o library ieee; use ieee.std_logic_1164.all; use work.all; -- top level circuit Mô tả mạch tổ hợp: comb_ckt cu u entity comb_ckt is port( input1: in std_logic; input2: in std_logic; input3: in std_logic; output: out std_logic ); end comb_ckt; architecture struct of comb_ckt is component AND_GATE is port( A: in std_logic; B: in std_logic; F1: out std_logic ); end component; -- as entity of AND_GATE component OR_GATE is port( X: in std_logic; Y: in std_logic; F2: out std_logic ); end component; -- as entity of OR_GATE signal wire: std_logic; -- signal just like wire begin TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 54 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM -- use sign "=>" to clarify the pin mapping Gate1: AND_GATE port map (A=>input1, B=>input2, F1=>wire); Gate2: OR_GATE port map (X=>wire, Y=>input3, F2=>output); end struct; ---------------------------------------------------------------- để lưu chương trình. cu u du o ng th an co ng .c om Bấm File ->Save hoặc bấm biểu tượng d. Biên dịch (compile) Bấm Compile ->Compile All (hoặc Compile Seleted nếu chỉ muốn biên dịch 1 file) TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 55 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM cu u du o ng th an co ng .c om Nếu có thông báo lỗi thì bấm đôi vào dòng thông báo lỗi để mở ra cửa sổ báo lỗi. Xem báo lỗi gì và tại dòng lệnh nào. (Trong ví dụ trên, lỗi thiếu dấu ; tại dòng lệnh 43) Bấm Close để đóng cửa sổ báo lỗi. Sửa lỗi, lưu và biên dịch lại cho đến khi không còn lỗi. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 56 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM th an co ng .c om e. Tạo Testbench Bấm Project -> Add to Project -> New File… để tạo một file testbench. (Nếu lười gõ đoạn mã ví dụ sau đây thì chọn Existing File, rồi chọn fie tb_ckt.vhd kèm theo hướng dẫn này ☺) cu u du o ng Nhập vào tên file testbench là tb_ckt, , chọn loại file là VHDL, giữ nguyên Folder là Top Level, rồi bấm OK. Tương tự như phần tạo file comb_ckt.vhd, nhập đoạn mã VHDL sau cho file tb_ckt.vhd. --------------------------------------------------------------------- Test Bench for comb_ckt.vhd -- (ESD figure 2.4) -- by Weijun Zhang, 04/2001 --- Testbench is used to ensure the design is working properly -- according to the specification. -------------------------------------------------------------------library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 57 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM entity CKT_TB is end CKT_TB; -- empty entity ------------------------------------------------------------------architecture TB of CKT_TB is -- declare the whole circuit(entity of comb_ckt.vhd) as a component component comb_ckt is port( input1: in std_logic; input2: in std_logic; input3: in std_logic; output: out std_logic ); end component; signal T_input1, T_input2, T_input3, T_output: std_logic; begin .c om -- declare all I/O ports from unit under test as signals. -- signals are usually declared within architecture U_UT: comb_ckt port map (T_input1,T_input2,T_input3,T_output); ng process co variable err_cnt: integer := 0; begin th du o -- Test case 2 T_input1 <= '1'; T_input2 <= '1'; T_input3 <= '1'; wait for 10 ns; an case 1 '0'; '0'; '0'; ns; ng -- Test T_input1 <= T_input2 <= T_input3 <= wait for 10 cu u -- Test case 3 T_input1 <= '1'; T_input2 <= '0'; T_input3 <= '1'; wait for 10 ns; -- Test case 4 T_input1 <= '0'; T_input2 <= '1'; T_input3 <= '0'; wait for 10 ns; wait; -- stop running end process; end TB; ------------------------------------------------------------------configuration CFG_TB of CKT_TB is for TB end for; end CFG_TB; -------------------------------------------------------------------- Lưu và biên dịch file tb_ckt.vhd này cho đến khi không còn lỗi. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 58 CuuDuongThanCong.com https://fb.com/tailieudientucntt APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM co ng .c om BỘ MÔN ĐIỆN TỬ cu u du o ng th an f. Chạy mô phỏng Bấm chọn tab Library TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 59 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM Bấm vào dấu cộng trước thư mục work trong cửa sổ Library, rồi bấm đôi vào dòng ckt_tb để bắt đầu chạy mô phỏng cu u du o ng th an co ng .c om Bấm chọn tab Wave để thấy cửa sổ Wave TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 60 CuuDuongThanCong.com https://fb.com/tailieudientucntt APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM co ng .c om BỘ MÔN ĐIỆN TỬ cu u du o ng th an Bấm chọn cửa sổ Objects, rồi bấm Add -> To Wave -> Signals in Region để thêm các tín hiệu cần quan sát vào cửa sổ Wave g. Bắt đầu chạy mô phỏng Cách 1: Bấm Simulate -> Run -> Run 100 để chạy mô phỏng trong 100 ns TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 61 CuuDuongThanCong.com https://fb.com/tailieudientucntt APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM (Run) du o ng th an co ng Cách 2: Nhập thời gian cần chạy mô phỏng, rồi bấm nút .c om BỘ MÔN ĐIỆN TỬ cu u Cách 3: Nhập lệnh run 100 vào dấu nhắc lệnh trong cửa sổ Transcript rồi Enter. Quan sát dạng sóng thu được trên cửa sổ Wave. Để dễ quan sát, bấm nút phải chuột trên cửa số Wave, rồi bấm Zoom Full. TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 62 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM du o ng th an co ng Thời gian t_input1 t_input2 t_input3 t_output 0 – 10 ns 0 0 0 0 10 – 20 1 1 1 1 ns 20 – 30 1 0 1 1 ns 30 – 40 0 1 0 0 ns … Kết quả này chứng tỏ mạch tổ hợp đã thiết kế đúng ☺ ! .c om Kết quả từ dạng sóng: cu u Trong ví dụ trên, ta đã viết mã VHDL của AND_GATE và OR_GATE chung với comb_ckt trong cùng một file comb_ckt.vhd. Ta cũng có thể viết mã VHDL của AND_GATE và OR_GATE trong hai file riêng rẽ là AND_GATE.vhd và OR_GATE.vhd. Khi đó, ta phải thêm vào project tổng cộng là 4 file (comb_ckt.vhd, AND_GATE.vhd, OR_GATE.vhd và tb_ckt.vhd). TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 63 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX B – VHDL CODES CHO CÁC IC THÔNG DỤNG APPENDIX B – VHDL CODES CHO CÁC IC THÔNG DỤNG 1. FULL-ADDER (Bộ cộng toàn phần): .c om a. Sơ đồ khối: b. Phương trình hàm ngõ ra: ng 𝑺𝒖𝒎 = 𝒂𝒊𝒏 ⨁𝒃𝒊𝒏 ⨁𝒄𝒊𝒏 co 𝑪𝒂𝒓𝒓𝒚 = 𝒂𝒊𝒏 . 𝒃𝒊𝒏 + 𝒂𝒊𝒏 . 𝒄𝒊𝒏 + 𝒃𝒊𝒏 . 𝒄𝒊𝒏 cu u du o ng th an c. Sơ đồ logic: TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 64 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM d. HDL Code • // Full Adder (Dataflow) library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity fulladder is port (a_in, b_in, c_in: in std_logic; sum, carry: out std_logic); end fulladder; • // Full Adder (Structural) an co library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; ng .c om architecture dataflow of fulladder is begin sum <= a_in xor b_in xor c_in; carry<= (a_in and b_in) or (b_in and c_in) or (a_in andb_in); end dataflow; ng th entity fulladder is port (a_in, b_in, c_in: in std_logic; sum, carry: out std_logic); end fulladder; u du o architecture structural of fulladder is component halfadder is port (p, q: in std_logic; r, s: out std_logic); end component; cu signal temp1, temp2, temp3: std_logic; begin ha1: halfadder port map (a_in, b_in, temp1,temp2); ha2: halfadder port map (temp1, c_in, sum, temp3); carry <=temp2 or temp3; end structural; Component program: entity halfadder is port (p, q: in std_logic; c, s: out std_logic); end halfadder; architecture dataflow of halfadder is begin s <= p xor q; c <= p and q; end; TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 65 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM 2. 2:4 DECODER(Bộ giải mã 2-4): a. Sơ đồ khối: ng .c om b. Bảng chân trị: u du o ng th an co c. Sơ đồ logic: cu d. HDL Code • //Decoder 2_4 (Dataflow) library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity dec2_4 is port (x1, x0, en :in std_logic ; y0, y1, y2, y3:out std_logic); end dec2_4; architecture dataflow of dec2_4 is begin y0<= (not x1) and (not x0) and en; y1<= (not x1) and x0 and en; y2<= x1 and (not x0) and en; y3<= x1 and x0 and en; end dataflow; TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 66 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM 3. MUX 4-1 (Bộ dồn kênh 4-1): a. Sơ đồ khối và bảng chân trị ➢ Truth Table: ➢ Block Diagram: ➢ .c om ➢ th an co ng b. Sơ đồ logic: du o ➢ //MUX 4-1 ng c. HDL Code u library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; cu entity mux4_1 is Port ( D0, D1, D2,D3 : in std_logic; -- mux inputs sel : in std_logic_vector(1 downto 0); -- selection line Y : out std_logic); -- output data end mux4_1; architecture Behavioral of mux4_1 is begin -- This process for mux logic process (sel, D0, D1, D2, D3) begin case SEL is when "00" =>Y<= D0; when "01" =>Y<= D1; when "10" =>Y<= D2; when "11" =>Y<= D3; when others =>Y<= '0'; end case; end process; end Behavioral; TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 67 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM 4. D-Flipflop: a. Sơ đồ khối: .c om b. Bảng chân trị du o ng th an co ng c. Sơ đồ logic d. HDL Code • // D-FF with asynchrnous Reset cu u library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity DFF1 is Port (D, RESET_n, CLK : in STD_LOGIC; Q : out STD_LOGIC); end DFF1; architecture Behavioral of DFF1 is begin process(CLK) begin if (RESET_n ='0') then Q<='0'; elsif CLK'event and CLK ='1' then Q <= D; end if; end process; end Behavioral; TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 68 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM 5. Counter 4-bit (Bộ đếm lên 4 bit): a. Sơ đồ khối: b. HDL Code: .c om • //Bộ đếm lên với Reset bất đồng bộ ng LIBRARY ieee; USE ieee.std_logic_1164.all USE ieee.std_logic_unsigned.all; ENTITY Upcnt4 IS PORT (Clk, Rst : IN STD_LOGIC; Q: OUT STD_LOGIC_VECTOR(3 downto 0)); END Upcnt4; du o ng th an co ARCHITECTURE Behavioral OF Upcnt4 IS BEGIN PROCESS (Clk, Rst) VARIABLE count: STD_LOGIC_VECTOR (3 downto 0); BEGIN IF Rst ='1' THEN count := (others=>'0'); ELSIF rising_edge(clk) THEN count := count + "0001"; END IF; Q <= count; END PROCESS; END Behavioral; • // Bộ đếm lên với Reset đồng bộ cu u LIBRARY ieee; USE ieee.std_logic_1164.all USE ieee.std_logic_unsigned.all; ENTITY Upcnt4 IS PORT ( Clk, Rst : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(3 downto 0)); END Upcnt4; ARCHITECTURE Behavioral OF Upcnt4 IS SIGNAL count: STD_LOGIC_VECTOR (3 downto 0); BEGIN PROCESS (Clk, Rst) BEGIN IF rising_edge(clk) THEN IF Rst ='1' THEN count <= (others=>'0'); ELSE count <= count + "0001"; END IF; END IF; END PROCESS; Q <= count; END Behavioral; TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 69 CuuDuongThanCong.com https://fb.com/tailieudientucntt BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM Tài liệu tham khảo [1] EE 460M: Digital Systems Design Using HDL (http://www.ece.utexas.edu/undergraduate/courses/460m) [2] ECE-124 Lab: Digital Circuits and Systems (https://ece.uwaterloo.ca/~ece124/) [3] Channabasaveshwara Institute of Technology (http://www.cittumkur.org/manuals/ece/hdlmanual.pdf) cu u du o ng th an co ng .c om [4] Tài liệu hướng dẫn TN_KTS_DE2 – Phạm Đăng Lâm TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 70 CuuDuongThanCong.com https://fb.com/tailieudientucntt