Bộ tài liệu thực hành thiết kế hệ thống số được soạn thảo nhằm mục đích hỗ trợ sinh viên chuyên ngành Hệ thống nhúng và điều khiển tự động tiếp xúc với ngôn ngữ mô tả phần cứng (VHDL hoặc Verilog) và hỗ trợ cho môn học Thiết kế hệ thống số. Đây là môn học mang tính thực hành cao nên trong cấu trúc chương trình sẽ dành nhiều thời gian hơn cho thực hành thí nghiệm cũng như bắt buộc sinh viên khi kết thúc môn học phải thực hiện các đồ án bài tập thiết kế cỡ vừa và lớn theo nhóm dưới dạng bài tập lớn. Kiến thức và kỹ năng sinh viên thu được ở môn học Thiết kế hệ thống số sẽ giúp ích rất nhiều cho các bài toán chuyên ngành và Đồ án tốt nghiệp sau này bởi các ứng dụng xử lý số đang dần chiếm vai trò quan trọng trong các hệ thống kỹ thuật. Bên cạnh các công cụ truyền thống là vi xử lý, vi điều khiển và máy tính thì thiết kế phần cứng trên FPGA hoặc trên các nên tảng tương tự đang là hướng phát triển mới triển vọng hơn, mang lại hiệu quả vượt trội. Tài liệu này bao gồm xx bài, tương ứng với 5 buổi thực hành. Nội dung chủ yếu hướng đến việc hướng dẫn sinh viên sử dụng ngôn ngữ VHDL để lập trình và mô phỏng trên các phần mềm chuyên dụng của hãng Xilinx như Vivado và ISE 14.7, đồng thời thao tác trên board phát triển Spartan 6 SP601 và ARTY A7– 35T.
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA ĐIỆN TỬ VIỄN THÔNG
THỰC HÀNH THIẾT KẾ HỆ THỐNG SỐ
GIẢNG VIÊN/SINH VIÊN
Trang 3Giới thiệu Bộ tài liệu thực hành thiết kế hệ thống số được soạn thảo nhằm mục đích hỗ
trợ sinh viên chuyên ngành Hệ thống nhúng và điều khiển tự động tiếp xúc với ngôn ngữ mô tả phần cứng (VHDL hoặc Verilog) và hỗ trợ cho môn học Thiết kế
hệ thống số Đây là môn học mang tính thực hành cao nên trong cấu trúc chương trình sẽ dành nhiều thời gian hơn cho thực hành thí nghiệm cũng như bắt buộc sinh viên khi kết thúc môn học phải thực hiện các đồ án bài tập thiết kế cỡ vừa
và lớn theo nhóm dưới dạng bài tập lớn
Kiến thức và kỹ năng sinh viên thu được ở môn học Thiết kế hệ thống số sẽ giúp ích rất nhiều cho các bài toán chuyên ngành và Đồ án tốt nghiệp sau này bởi các ứng dụng xử lý số đang dần chiếm vai trò quan trọng trong các hệ thống
kỹ thuật Bên cạnh các công cụ truyền thống là vi xử lý, vi điều khiển và máy tính thì thiết kế phần cứng trên FPGA hoặc trên các nên tảng tương tự đang là hướng phát triển mới triển vọng hơn, mang lại hiệu quả vượt trội
Tài liệu này bao gồm xx bài, tương ứng với 5 buổi thực hành Nội dung chủ yếu hướng đến việc hướng dẫn sinh viên sử dụng ngôn ngữ VHDL để lập trình
và mô phỏng trên các phần mềm chuyên dụng của hãng Xilinx như Vivado và ISE 14.7, đồng thời thao tác trên board phát triển Spartan 6 SP601 và ARTY A7–
35T
Trang 4Vì thời gian hạn chế và là một môn học mới do vậy trong quá trình biên soạn tài liệu hướng dẫn thực hành chắc chắn không tránh khỏi các sai sót Vì vậy rất mong tiếp tục nhận được các ý kiến đóng góp từ phía các thầy cô trong khoa cũng như các bạn sinh viên chuyên ngành Hệ thống nhúng và điều khiển tự động Mọi ý kiến đóng góp có thể gửi về Bộ môn Điện tử Máy tính – Học viên
Kỹ thuật Mật mã hoặc vào hòm thư điện tử nguyenhuuson@actvn.edu.vn
Chân thành cảm ơn
Trang 5Mục lục
Bài 1 Tổng quan về phần mềm thiết kế ISE 14.7 trên FPGA 6
I Giới thiệu Board phát triển Spartan 6 SP601 của Xilinx 6
II Cài đặt phần mềm thiết kế ISE của Xilinx 9
III Chương trình trên ISE design suite 10
Bài 2 Tổng quan về phần mềm thiết kế Vivado trên FPGA 19
I Giới thiệu Board phát triển ARTY A7-35T 19
II Cài đặt phần mềm thiết kế Vivado của Xilinx 20
III Chương trình trên Vivado design suite 21
Bài 3: Bộ cộng Full – Adder 4bits 29
I Mục đích 29
II Chuẩn bị và thực hiện 29
III Nội dung 29
Bài 4: Điều khiển màn hình chỉ thị số LED 33
I Mục đích 33
II Chuẩn bị và thực hiện 33
III Nội dung 33
Bài 5: Điều khiển hiển thị ma trận LED 39
I Mục đích 39
II Chuẩn bị và thực hiện 39
III Nội dung 39
Bài 6: Điều khiển hiển thị VGA 43
I Mục đích 43
II Chuẩn bị và thực hiện 43
III Nội dung 43
Bài 7:Thiết kế hệ thống đèn tín hiệu giao thông đơn giản 47
I Mục đích 47
II Chuẩn bị và thực hiện 47
Trang 6Bài 8:Thiết kế bộ xử lý logic và số học (ALU) đơn giản 53
I Mục đích 53
II Chuẩn bị và thực hiện 53
III Nội dung 53
Bài 9: Điều khiển Led RBGs, xung clock, PWM trên board ARTY A7-35T 58
I Mục đích 58
II Chuẩn bị và thực hiện 58
III Nội dung 58
Bài 10: Thiết kế bộ chia tần số đơn giản 62
I Mục đích 62
II Chuẩn bị và thực hiện 62
III Nội dung 62
Bài 11: Mở rộng điều khiển VGA trên board ARTY A7-35T 65
I Mục đích 65
II Chuẩn bị và thực hiện 65
III Nội dung 65
PHỤ LỤC 69
Trang 7Bài 1 Tổng quan về phần mềm thiết kế ISE 14.7 trên FPGA
Mục tiêu:
Làm quen với board phát triển Spartan 6 SP601
Cài đặt và làm quen với phần mêm thiết kế ISE 14.7
I Giới thiệu Board phát triển Spartan 6 SP601 của Xilinx
1 Giới thiệu
Board phát triển SP601 của hãng sản xuất thiết bị nổi tiếng Xilinx sử dụng chip FPGA XC6SLX16 thuộc họ Spartan-6 Các thông số cũng như tính năng kỹ thuật của SP601 phù hợp với những kỹ sư hay sinh viên mới bắt đầu tìm hiểu về môi trường phát triển FPGA
Board SP601 có những tính năng nổi bật như xử lý bộ nhớ DDR2, parallel flash, ethernet 10/100/1000, các cổng GPIO và kết nối UART Các tính năng bổ sung có thể được thêm vào thông qua cổng kết nối mở rộng VITA 57.1.1
4 Linear Flash BPI
5 10/100/1000 Tri-Speed Ethernet PHY
Oscillator Socket (Single-Ended, 2.5V or 3.3V)
SMA Connectors (Differential)
9 VITA 57.1 FMC-LPC Connector
10 LEDs trạng thái
FPGA_AWAKE
Trang 8 3 SPI x4 Flash (both onboard and off-board)
4 Linear Flash BPI
JTAG Configuration
16 Power Management
AC Adapter and 5V Input Power Jack/Switch
Onboard Power Supplies
Sơ đồ khối và các ngoại vi của SP601:
Trang 9Mô tả chi tiết:
Các thành phần hiển thị ở hình trên được chú thích theo bảng dưới đây:
1 Spartan-6 FPGA XC6SLX-2CSG324
DDR2 SDRAM
3 SPIx4 flash và headers SPI và chân cắm ngoài
4 Linear Flash BPI StrataFlash 8-bit (J3 device), 3 pins
shared w/ SPI x4
5 10/100/100 Ethernet GMII Marvell Alaska
6 RS232 UART (USB bridge) Sử dụng kết nối CP2103 Serial-to-USB
7 IIC Kết nối đến chân cắm và VITA 57.1 FMC
8 Clock, socket, SMA
9 VITA 57.1 FMC-LPC Tín hiệu LVDS, clocks, PRSNT
10 Leds Led trạng thái của Ethernet PHY
Trang 1012 LEDs FPGA INIT, DONE
13
Công tắc DIP switch I/O (tích cực mức cao) Nút nhấn PushButton I/O, CPU_RESET (tích cực mức cao) Header 12-chân (8 chân I/O) Header đực 6x2, 08 chân I/O (tích cực
mức cao)
14 Nút nhấn Pushbutton FPGA_PROG_B
15 USB JTAG Đầu nối USB-to-JTAG, cáp nạp
16 Module nguồn Cung cấp nguồn cho board SP601
II Cài đặt phần mềm thiết kế ISE của Xilinx
1 Giới thiệu phần mêm thiết kế ISE design suite
ISE (Intergrated Synthesis Environment) là bộ công cụ được đề xuất bởi Xilinx để tổng hợp
và phân tích các thiết kế HDL Bộ design suite này giúp các lập trình viên trong việc biên dịch các thiết kế, kiểm tra các mô hình RTL đồng thời cũng là một công cụ mô phỏng rất mạnh mẽ ISE design suite được Xilinx khuyến nghị sử dụng cho các sản phẩm của hãng như các dòng Spartan®-6 và Virtex®-6 trở xuống Phần mềm này hoạt động ổn định trên các hệ điều hành như Window XP/7/Server và Linux, riêng phiên bản ISE 14.7 có hỗ trợ thêm Window 10 Với các dòng sản phẩm mới hơn như Virtex®-7, Kintex®-7, Artix®-7, and Zynq®-7000, Xilinx đề nghị sử dụng bộ phần mềm mới hơn là Vivado® Design Suite
Môn thiết kế hệ thống số với mục đích giúp sinh viên chuyên ngành hệ thống nhúng và điều khiển tự động bước đầu làm quen với FPGA và ngôn ngữ mô tả phần cứng VHDL nên vẫn sử dụng Board Spartan 6 SP601 và bộ phần mềm ISE 14.7 Ở những học kỳ sau với những môn chuyên ngành chuyên sâu hơn, khoa Điện tử Viễn thông sẽ cung cấp cho sinh viên những Board phát triển mới hơn như Artix®-7, and Zynq®-7000 và bộ phần mềm Vivado® Design Suite
2 Cài đặt
File cài đặt của ISE design suite 14.7 có thể được tải về trên trang chủ của Xilinx theo đường link sau:
https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadN av/vivado-design-tools/archive-ise.html
Sinh viên lựa chọn phiên bản thích hợp với hệ điều hành trên máy tính của mình
Cấu hình đề xuất để desktop và Laptop chạy ổn định ISE là:
Trang 11CPU: từ Intel CoreI3 thế hệ thứ 8 trở lên RAM: Từ 8GB DDR4 trở lên
HDD: Yêu cầu dung lượng trống để cài đặt từ 30GB trở lên
Khuyến khích sử dụng SSD
Sau khi tải file cài đặt về máy, tiến hành cài đặt như bình thường
Lưu ý: Nếu sinh viên sử dụng Window 10 thì phải bật chế độ Virtualization trong BIOS,
do Xilinx chạy ISE trên Window10 thông qua máy ảo Oracle VM VirtualBox
III Chương trình trên ISE design suite
Phần 3 của buổi 1 sẽ hướng dẫn sinh viên cách viết một chương trình giao tiếp I/O đơn giản trên phần mềm ISE 14.7 và nạp chương trình lên board SP601 Chương trình này sẽ sử dụng 04 công tắc GPIO DIP SW để điều khiển đèn GPIO LED trên board
1 Tạo project
Bước 1: Có 2 cách để tạo một project mới trong ISE 14.7,
vào File > New Project
hoặc chọn New Project ngay tại màn hình bắt đầu
Trang 12Bước 2: Sau khi chọn New Project, chương trình hiện ra cửa sổ New Project Wizard, ta chọn thư mục lưu project cũng như đặt tên cho project tại đây:
Bước 3: Ở cửa sổ tiếp theo, trong tab Evaluation Development Board chọn Spartan-6
SP601 Evaluation platform
Trang 13Bước 4: Sau khi tạo xong project, click phải chuột vào xc6slx 16-2csg324 trong mục
hierarchy r ồi chọn New Source
Tiếp theo chọn VHDL Module và đặt tên cho file thiết kế sử dụng ngôn ngữ VHDL:
Nhấn Next để tiếp tục chuyển đến cửa sổ soạn thảo như dưới đây:
Trang 142 Viết chương trình và biên dịch
Sinh viên có thể viết trực tiếp ở cửa sổ của ISE hoặc trên các phần mềm khác như Notepad++ rồi paste lại Nếu có sẵn file vhd thì chỉ cần thêm file vào project thông qua add
source Chương trình I/O interfacing được viết dưới đây sử dụng ngôn ngữ VHDL để điều khiển 2 leds đơn trên board SP601 bằng 2 switches Sinh viên cũng có thể viết bằng Verilog nếu thích
Để thực hiện biên dịch và tổng hợp thiết kế ta click đúp vào Synthesize trong cửa sổ Design,
ta còn có thể kiểm tra cú pháp (check syntax) và xuất sơ đồ RTL thông qua Synthesize
Trang 15Xuất sơ đồ RTL của thiết kế:
3 Tạo file testbench để mô phỏng
Ngôn ngữ mô tả phần cứng VHDL có rất nhiều các phần mềm mô phỏng mạch số được phát hành bởi các công ty khác nhau, ở đây ta sử dụng công cụ ISIM được tích hợp sẵn trong
bộ công cụ ISE design suite
Để tiến hành mô phỏng thiết kế ở phần trên ta thực hiện các bước sau:
Bước 1: tạo file testbench, thông qua click phải chuột vào xc6slx16-2csg324 và chọn New
Source, sau đó ch ọn VHDL Test Bench và đặt tên cho file, ở đây tên file được đặt là
IO_interfacing_TB
Trang 16Bước 2: Sau khi tạo xong file testbench, ta tiến hành viết mã nguồn để mô phỏng hành vi của Leds và các công tắc (switches) như dưới đây:
Chuyển từ trạng thái Implementation sang Simulation, tiếp theo chọn file
IO_Interfacing và click đúp vào Simulate Behavioral để tiến hành mô phỏng Kết quả mô
phỏng được hiển thị ở hình dưới và nó phản ánh chính xác theo đúng như code VHDL đã thể hiện, switch1 điều khiển led1, switch2 điều khiển led2
4 Cấu hình chân và nạp chương trình lên board SP601
Sau khi hoàn tất việc mô phỏng, ta có thể nạp code vừa được tổng hợp (synthesize) ở trên vào FPGA Board để kiểm tra nếu có Trong trường hợp không có kít thì chỉ có thể kiểm tra dựa vào waveform sinh ra sau khi mô phỏng như trên
Bước 1: Để nạp được code vào Board, ta cần kiểm tra các thành phần và linh kiện mà Board
đó cung cấp đồng thời thấy thông tin về chân của các linh kiện đó, như code ví dụ ở các bước trên ta cần 2 GPIO Leds và 02 GPIO switches Thông tin về chân và các thành phần của Board được cung cấp trong tài liệu SP601 Hardware User Guide, công bố bởi Xilinx Sau khi
Trang 17tra cứu trong Appendix C: SP601 master UCF ( trang 48) ta có được thông tin về GPIO Leds và GPIO switches trên board SP601 như sau:
Bước 2: Khi đã xác định được các thành phần cần thiết, ta thực hiện gán các chân này cho các port mà ta đã khai báo trong ENTITY, cụ thể là switch1, switch2, led1, led2
Bước 3: Để thực hiện gán chân, ta chọn xc6slx16-2csg324, click phải chọn New Source, ở cửa sổ tiếp theo ta chọn Implementation Constraints File rồi đặt tên cho file này, ở đây người viết đặt IO_interfacing_const rồi finish Tiếp theo trong giao diện constrains file ta thực hiện gán chân như hình dưới đây và lưu file:
Bước 4: Tiến hành tổng hợp thiết kế (synthesize), nếu đã tổng hợp trước đó thì có thể sang bước tiếp theo Implement Design và Generate Programming File
Bước 5: Nạp thiết kế vào board Spartan 6 SP601, trước khi nạp code cần kiểm tra lại xem board đã được cấp nguồn vào kết nối với máy tính thông qua USB JTAG hay chưa
Trang 18Nếu nguồn và cổng USB JTAG đã được kết nối ta tiến hành Configure Target Device
Ở cửa sổ ISE IMPACT hiện ra chọn Boundary scan, click phải chuột ở giao diện mới,
chọn Add Xilinx Device rồi tiến hành add file bit tạo ra từ quá trình Configuration, vd như ở đây file của người viết là IO_Interfacing.bit Giao diện Boundary Scan sẽ hiện ra biểu tượng IC FPGA của Xilinx, click phải chuột chọn Program -> Apply -> OK Nếu chương trình được nạp thành công, hộp thông báo màu xanh “Program Succeeded” sẽ
hiện ra như hình dưới
Trang 19Kết quả hiển thị trên Board Spartan6 SP601 như hình dưới
Trang 20Bài 2 Tổng quan về phần mềm thiết kế Vivado trên FPGA
Mục tiêu:
Làm quen với board ARTY A7
Nắm vững các thông số kỹ thuật của ARTY A7
Cài đặt và sử dụng phần mêm thiết kế Vivado
I Giới thiệu Board phát triển ARTY A7-35T
1 Giới thiệu
ARTY A7 là board phát triển FPGA của hãng Digilent được xây dựng dựa trên nền tảng FPGA Artix-7 của Xilinx, sản phẩm gồm 2 phiển bản là ARTY-35T và ARTY-100T, phiên bản được sử dụng trong tài liệu này là ARTY-35T
Sản phẩm này của Digilent rất phù hợp cho các nhà nghiên cứu cũng như các sinh viên trong quá trình học tập vè FPGA do tính linh hoạt trong ứng dụng của nó Ngoài các cổng giao tiếp thông dụng như UARTs, IICs, SPIs và Ethernet MAC, ARTY còn được cung cấp layout headers của Arduino R3 và 4 cổng PMODs, rất tiện dụng trong các project IoTs và ứng dụng vi điều khiển
Trang 21- Tích hợp sẵn bộ chuyển đổi ADC (XADC)
- Nạp chương trình thông qua JTAG và Quad-SPI Flash
- Có sẵn các headers để kết nối với shields sử dụng layout của Arduino
II Cài đặt phần mềm thiết kế Vivado của Xilinx
a Giới thiệu phần mêm thiết kế Vivado design suite
Vivado là bộ phần mềm lập trình cho FPGA và được thiết kế bởi hãng Xilinx Phiên bản tiền nhiệm của Vivado là ISE design suite, bắt đầu từ các dòng sản phẩm spartan-7 trở lên, người dùng bắt buộc phải sử dụng Vivado để làm việc với các sản phẩm mới hơn của Xilinx Ngoài
ra, phần mềm này chỉ tương thích với Window và Linux
b Cài đặt
File cài đặt của Vivado design suite có thể được tải về trên trang chủ của Xilinx theo đường link sau:
https://www.xilinx.com/support/download/index.html/content/xilinx/en/download
Trang 22 Sinh viên lựa chọn phiên bản thích hợp với hệ điều hành trên máy tính của mình Khoa ĐTVT khuyến khích các bạn sinh viên sử dụng phiên bản miễn phí WebPACK
Cấu hình đề xuất để desktop và Laptop chạy ổn định Vivado là:
CPU : từ Intel CoreI3 thế hệ thứ 8
RAM: Từ 8GB DDR4
HDD: Dung lượng file cài đặt là 26GB, yêu cầu dung lượng trống để cài đặt từ
30GB trở lên Khuyến khích sử dụng SSD
Sau khi tải file cài đặt về máy, tiến hành cài đặt như bình thường
III Chương trình trên Vivado design suite
a Tạo 1 project trên Vivado
Mở Vivado, chọn “Create project”
Tiếp theo, đặt tên cho project tại ô “Project name”, chọn tick vào “Create project
subdirectory” để chương trình tự một folder riêng cho project mới
Chọn “RTL Project” và tick “Do not specify sources at this time”
Trang 23Default Part: để chọn đúng board ARTY-35T, ta lựa chọn như sau:
Family: Artix-7 Package: csg324 SpeedL -1L
Trong danh sách các board được liệt kê ở dưới, chọn “xc7a35ticsg324-1L”
(Nếu như phần mềm Vivado đã được cài sẵn Digilent board file thì chỉ cần chọn tab
“Boards” rồi chọn ARTY A7-35T)
Link Digilent board file: vivado/start
https://reference.digilentinc.com/vivado/installing-b Viết chương trình và biên dịch
Sau khi project đã được tạo xong, để tạo file code VHDL hoặc Verilog, trong cửa sổ Sources
-> Design Source, phải chuột chọn Add Sources
Trang 24Chọn “Add or create design source” -> “Create File”
Trong File type: chọn ngôn ngữ lập trình (VHDL/ Verilog)
Trong File name: chọn tên cho file văn bản chứa code -> finish
Ở cửa sổ Define Module tiếp theo, nếu muốn chọn sẵn các cổng input hay output thì chọn
ở I/O Port Definitions, nếu không thì chỉ cần “OK”, các cổng I/O này có thể được định
dạng bằng code
Sau khi file mã nguồn <file_name>.vhd (hoặc <file_name>.v nếu dùng verilog) đã được khởi tạo, ta viết code vào giao diện text editor của phần mềm Vivado như hình dưới
Trang 25c Tạo file testbench
Để tạo file testbench, tương tự như khi tạo file code VHDL hay Verilog, trong cửa sổ
Sources -> Design Source, ph ải chuột chọn Add Sources
Chọn “Add or create simulation source” -> “Create File”
Trong File type: chọn ngôn ngữ lập trình (VHDL/ Verilog)
Trong File name: chọn tên cho file văn bản chứa code -> finish
Sau khi viết file testbench, save file, ta tiến hành mô phỏng file vừa viết bằng công cụ ISIM tích hợp sẵn trong Vivado như sau:
Cửa sổ PROJECT MANAGER chọn SIMULATION
Chọn Run Simulation Run Behavioral Simulation
Sau khi ISIM mô phỏng xong file testbench, kết quả mô phỏng được hiển thị như hình dưới đây:
Trang 26Mã nguồn tham khảo cho testbench:
Trang 27d Cấu hình chân và nạp chương trình
Để cấu hình chân, trong cửa sổ Sources ta chọn Constraints, phải chuột chọn Add
Sources
Chọn “Add or create constraint source” -> “Create File”
Trong File type: chọn ngôn ngữ lập trình (XDC)
Trong File name: chọn tên cho file văn bản chứa code -> finish
Cấu hình chân trên board ARTY A7-35T:
set_property -dict { PACKAGE_PIN H5 IOSTANDARD LVCMOS33 } [get_ports
{ led[ ] }]; #IO_L24N_T3_35 Sch=led[ ]
set_property -dict { PACKAGE_PIN J5 IOSTANDARD LVCMOS33 } [get_ports
{ led[ ] }]; #IO_25_35 Sch=led[ ]
set_property -dict { PACKAGE_PIN T9 IOSTANDARD LVCMOS33 } [get_ports
{ led[ ] }]; #IO_L24P_T3_A01_D17_14 Sch=led[ ]
set_property -dict { PACKAGE_PIN T10 IOSTANDARD LVCMOS33 } [get_ports
{ led[ ] }]; #IO_L24N_T3_A00_D16_14 Sch=led[ ]
Sau khi đã chuẩn bị xong file chương trình vhdl ( hoặc v) và file gán chân xdc, chúng ta tiến hành tổng hợp và cứng hóa chương trình, Run Systhesis Run Implementation Sau khi hoàn tất synthesis và implementation ta tiếp tục Generate Bitstream (có thể trực tiếp Generate Bitstream luôn, lúc này Vivado sẽ tự động thực hiện synthesis và implemantation)
Trang 28hiển thị ở cửa sổ messages, tiến hành sửa lỗi rồi tiếp tục Generate Bitstream Toàn bộ quá trình này sẽ tốn khoảng 3~5 phút tùy thuộc vào cấu hình của máy tính chạy Vivado
Sau khi Generate Bitstream hoàn tất, cửa sổ thông báo sẽ được hiển thị như sau:
Tiếp tục nạp code xuống board ARTY A7-35T, ta chọn Open Hardware Manager
Chọn Open Target rồi Auto connect
Nếu như board đã được kết nối với máy tính thông qua cáp micro USB, cửa sổ Hard ware
sẽ hiển thị như hình dưới, click phải chuột vào xc7a35t_(0) rồi chọn Program Device
Trang 29Ở cửa sổ tiếp theo, trong tab Bitstream File ta trỏ về file bitstream sw_led.bit theo đường
1 Sinh viên tiến hành viết một chương trình điều khiển led thông qua công tắc switch trên board
2 Mở rộng bài toán, sinh viên viết chương trình điều khiển 4leds trên board ARTY A7-35T sử dụng các switches hoặc các nút nhấn buttons
3 Tập làm quen với board clock thông qua điều khiển 4leds đơn hoặc 4leds RBGs
Trang 30Bài 3: Bộ cộng Full – Adder 4bits
II Chuẩn bị và thực hiện
Máy tính cài đặt phần mềm ISE design suite 14.7
Board Spartan-6 SP601
Sinh viên thực hiện bài thực hành theo yêu cầu của giảng viên
Làm báo cáo thực hành
III Nội dung
Bộ cộng full-adder 4bits được xây dựng từ 4 bộ cộng full-adder với bảng sự thật và được mô tả như sau:
Từ mô tả trên, ta định nghĩa được 1 ENTITY với các cổng vào ra như sau:
S: out STD_LOGIC_VECTOR( downto );
Carryout: out std_logic
);
end fourbit_adder;
Trang 31Từ bảng sự thật trên, ta rút ra biểu thức đại số logic của bộ cộng full-adder:
s<=a xor b xor c;
co<=(a and b) or c and A OR B));
Kết hợp 4 bộ cộng này lại ta được full-adder 4bits
Dưới đây là chương trình tham khảo
S: out STD_LOGIC_VECTOR( downto );
Carryout: out std_logic
fa0:fa port map ( =>A 0),b=>B 0),c=>Cin,co=>temp1, =>S 0));
fa1:fa port map ( =>A 1),b=>B 1),c=>temp1,co=>temp2, =>S 1));
fa2:fa port map ( =>A 2),b=>B 2),c=>temp2,co=>temp3, =>S 2));
fa3:fa port map ( =>A 3),b=>B 3),c=>temp3,co=>Carryout, =>S 3));
Trang 33IV Kết quả mô phỏng bằng ISIM:
Bài tập:
1 Bài tập trên lớp: sinh viên thực hiện viết file Testbench cho bộ cộng full – adder
2 Bài tập về nhà: thực hiện xây dựng các mạch logic thông dụng khác sử dụng ngôn ngữ VHDL
Trang 34Bài 4: Điều khiển màn hình chỉ thị số LED
I Mục đích
Giúp sinh viên hiểu phương pháp điều khiển hiển thị lên màn hình chỉ thị LED, cụ thể là
ở đây chúng tôi sử dụng module led 7 đoạn Pmod-SSD của Digilent Đây là bài thực hành tiêu biểu cho bài toán hiển thị vì chức năng này là gần như là bắt buộc với hầu hết các hệ thống số Bài thực hành giúp sinh viên hiểu và có khái niệm rõ ràng hơn khi so sánh chương trình viết cho Vi điều khiển và viết cho FPGA sử dụng VHDL
II Chuẩn bị và thực hiện
Máy tính cài đặt phần mềm Vivado
Board ARTY A7-35T
Sinh viên thực hiện bài thực hành theo yêu cầu của giảng viên
Làm báo cáo thực hành
III Nội dung
1 Sơ lược về module led 7 đoạn Pmod-SSD
Module led 7 đoạn sử dụng trong bài thực hành này được sản xuất bởi hãng Digilent, cấu tạo gồm 2 led 7 đoạn cathode chung trên bảng mạch có 10 chân đầu vào Mỗi một led 7 đoạn bao gồm 7 led đơn dạng thanh xếp theo hình số tám và có thêm 1 led đơn tròn phía góc dưới bên phải Do mạch sử dụng led cathode chung, nên cực cathode của 8 led đơn được đấu chung với nhau và đặt tên là CAT Các chân còn lại dùng để điều khiển trạng thái sáng tắt của led đơn, đặt tên theo thứ tự là AA, AB, AC, AD, AE, AF, AG Các led trên board Pmod-SSD chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1 Cấu tạo của board Pmod-SSD và nguyên lý tắt sáng của
2 led 7 đoạn trên board được thể hiện ở hình dưới:
Ở bài thực hành này, sinh viên được yêu cầu viết chương trình để hiển thị số lên 2 đèn led 7
Trang 359 use IEEE.STD_LOGIC_1164 ALL ;
10 use IEEE.NUMERIC_STD ALL ;
20 the values to display
21 seg1_value : in std_logic_vector( downto );
22 seg2_value : in std_logic_vector( downto );
37 signal mux_state_s : std_logic := '0';
38 signal seg_coder_in_s: std_logic_vector( downto ):=( others =>'0');
39 signal prescale_cnt_s: integer range to CLK_FREQ/MUX_FREQ):=0