1.2 Ý nghĩa khoa học và thực tiễn của đề tài 1.2.1 Ý nghĩa khoa học Qua đề tài này tôi nắm được các vấn đề sau: - Hiểu được phần nào công việc thiết kế một hệ thống số - Nắm được cách th
Trang 1BÁO CÁO TIẾN TRÌNH ĐỒ ÁN GIỮA KÌ MỤC LỤC :
Giới thiệu
Trang bìa Phiếu giao đề tài đồ án Bản nhận xét của giáo viên hướng dẫn Bản nhận xét của giáo viên phản biện Lời cảm ơn Muc lục Phần I: CƠ SỞ LÝ THUYẾT Chương 1: Dẫn nhập
1.1 Lý do chọn đề tài
1.2 Ý nghĩa khoa học và thực tiễn của đề tài
Chương 2 : Tìm hiểu về FPGA & kit DE2
2.1 FPGA
2.1.1 FPGA là gì ?
2.1.2 Lịch sữ của FPGA
2.1.3 Kiến trúc của FPGA
3.1.1.1 Khối logic
3.1.1.2 Hệ thống mạch liên kết
3.1.1.3 Các phần tử tích hợp sẵn
3.1.4 Ứng dụng
3.1.5 Ý nghĩa và vai trò của FPGA
4.2 Kit DE2
4.2.1 Giới thiệu
4.2.2 Thành phần
4.2.3 Một vài ứng dụng
Chương 3: Giới thiệu về quartus II
3.1 Các bước thực hiện một thiết kế
Trang 23.2 Giới thiệu
3.3 Cách nạp chương trình cho Quartus II
3.3.1 Tạo 1 project
3.3.2 Viết chương trình và biên dịch
3.3.3 Tạo file mô phỏng và mô phỏng
3.3.4 Cấu hình chân và nạp lên board
Chương 4: Giới thiệu VERILOG
4.1 Verilog là gì ?
4.2 Các cổng cơ bản trong Verilog
4.2 Các dạng dữ liệu
4.3 Toán tử, toán hạng
4.4 Module
4.5 Khuôn mẫu hành vi
4.6 Khối always và khối initial
4.7 Chức năng linh kiện
Phần II: THIẾT KẾ
Phần III: KẾT LUẬN
Trang 3DANH SÁCH HÌNH
Hình 3.1 Kiến trúc tổng quan FPGA
Hình 3.2 Khối logic FPGA
Hình 3.3 Board DE2
Hình 3.4 Thông tin chi tiết của board DE2
Hình 3.5 TV board
Hình 3.6 Chương trình vẽ (paintbrush)
Hình 3.7 Máy hát karaoke và máy chơi nhạc từ card SD
Hình 4.1 Quy trình thiết kế CAD thông dụng
Hình 4.2 Hộp hội thoại tạo mới project
Hình 4.3 Hộp thoại lựa chọn chip
Hình 4.4 Lựa chọn loại file cần tạo
Hình 4.5 Biên dịch chương trình
Hình 4.6 Cửa sổ chọn các tín hiệu vào ra đưa vào dạng sóng mô phỏng
Hình 4.7 Thiết lập giá trị cho các tín hiệu
Hình 4.8 Dạng sóng kiểm tra trước khi mô phỏng
Hình 4.9 Chọn chế độ mô phỏng chức năng cho trình mô phỏng
Hình 4.10 Dạng sóng mô phỏng chức năng
Hình 4.12 Danh sách các chân có thể được gán
Hình 4.13 Giao diện của trình nạp và cấu hình FPGA
Hình 5.1 Sơ đồ mạch giải mã
Hình 5.2 Mạch giải mã 3 sang 8
Hình 5.3 IC74LS138
Hình 5.4 Mạch giải mã dùng IC74LS138
Hình 5.5 Các dạng sóng vào ra của mạch giải mã 3 sang 8
Hình 5.6 Sơ đồ bộ chọn kênh
Hình 5.7 Mạch chọn kênh 2 ngõ vào
Hình 5.8 Mạch chọn kênh 4 ngõ vào
Hình 5.9 Mạch chọn kênh dùng IC74LS151
Hình 5.10 Các dạng sóng của mạch chọn kênh 4 vào
Hình 5.11 Mạch cộng bán phần
Hình 5.12 Mạch cộng toàn phần
Hình 5.13 IC cộng toàn phần
Hình 5.14 Mạch cộng nhìn trước số nhớ
Hình 5.15 Mạch cộng BCD
Hình 5.16 Các dạng sóng của mạch cộng bán phần
Trang 4Hình 5.17 Mô hình đếm lên
Hình 5.18 Mô hình đếm xuống
Hình 5.19 Bộ đếm lên nhị phân 4 bit dùng JK-FF
Hình 5.20 Các dạng sóng ngõ vào ra của mạch đếm
Hình 6.1 Sơ đồ khối một máy tính cổ điển
Hình 6.2 Sơ đồ khối của vi xử lý
Hình 6.3 Sơ đồ khối hệ vi xử lý
Hình 6.4 Các tín hiệu cơ bản trong μP
Hình 6.5 Định thì bus cơ bản
Hình 6.6 Giao tiếp bus cơ bản
Hình 6.7 Giải mã địa chỉ dùng 74LS138
Hình 6.8 74LS138 mắc cascaded (liên tầng)
Hình 6.9 Giải mã dùng bộ so sánh
Hình 6.10 Định thì đọc bộ nhớ
Hình 6.11 Định thì ghi bộ nhớ
Trang 5Năm 1971 với sự ra đời của vi xử lý, đã làm cho kỹ thuật số phát triển nhảy vọt đồng thời những ứng dụng của nó trong cuộc sống cũng ngày càng đa dạng hơn Sự ra đời của các vi mạch lập trình như vi điều khiển, vi xử lý, vi mạch số lập trình…đã tạo ra một bước ngoặc trong lĩnh vực xử lý, điều khiển Chúng làm cho lĩnh vực xử lý, điều khiểm trở nên tự động hóa và ngày càng hiện đại hơn Trong công nghiệp, các thiết bị điều khiểm bằng cơ khí thô sơ có độ chính xác và an toàn kém được thế bằng những thiết bị điều khiển tự động với độ chính xác cao hơn, an toàn hơn Nhờ đó năng suất lao động không ngừng được nâng cao Trong đời sống hằng ngày, vi xử lý được ứng dụng rất nhiều vào các thiết bị dân dụng như máy
Trang 6tính, ti vi, máy điều hòa nhiệt độ, lò vi ba… qua đó làm cho các thiết bị trở nên đa chức năng hơn, dễ dàng sữ dụng hơn, tiện nghi hơn.
Với những ứng dụng rộng rãi như trên, thiết nghĩ việc tìm hiểu vi xử lý, vi điều khiển và những ứng dụng của nó là rất cần thiết Trong khuôn khổ hạn hẹp của đề tài, cũng như kiến thức và khả năng, tôi chỉ tìm hiểu một ứng dụng nhỏ của
vi xử lý là thiết kế một bộ vi xử lý đơn giản
1.2 Ý nghĩa khoa học và thực tiễn của đề tài
1.2.1 Ý nghĩa khoa học
Qua đề tài này tôi nắm được các vấn đề sau:
- Hiểu được phần nào công việc thiết kế một hệ thống số
- Nắm được cách thiết kế hệ tống số với Altera FPGA
- Hiểu thêm về kit DE2 của Altera
1.4.1 Ý nghĩa thực tiễn
Bộ xử lý có khả năng thực hiện các chỉ dẫn sữ dụng bộ nhớ và các thiết bị máy tính
1.5 Tình hình nghiên cứu
Hiện nay trong thực tế các bộ vi xử lý được rất nhiều người qua tâm và thiết
kế Đặc biệt nó được thiết kế sữ dụng cho các CPU của máy tính
1.6 Phương pháp nghiên cứu
Sữ dụng các phương pháp và phương tiện nghiên cứu để thu thập tài liệu về
đề tài đã xác định Dữ liệu thu thập được sẽ là chất liệu để xây dựng nên đề tài
Trang 7Điều cần thiết là thu thập tài liệu một cách đầy đủ, chính xác và phù hợp với đề tài đang thực hiện.
Ở đây tôi sữ dụng phương pháp tham khảo tài liệu là chủ yếu Việc tham khảo các tài liệu nhằm gom góp lại các kiến thức cần thiết Sau đó các tài liệu phải được chọn lọc kỹ càng trên cơ sở kế thừa những nền tảng đồng thời cần khắc phục những mặt hạn chế Đa phần các tài liệu tham khảo là các sách chuyên nghành và những luận văn tốt nghiệp của các khóa trước
Việc xây dựng đề tài được thực hiện theo đúng cấu trúc của một luận văn do nhà trường quy định nhằm đảm bảo tính sư phạm và phù hợp với kế hoạch đào tạo của nhà trường
CHƯƠNG 2 TÌM HIỂU VỀ FPGA & KIT DE2
2.1 FPGA
2.2.2 FPGA là gì ?
Trang 8FPGA là viết tắt của thuật ngữ tiếng anh “Field programmable Gate Array”,
là vi mạch dùng cấu trúc mảng phần tử logic mà người dùng có thể lập trình được
Vi mạch FPGA được cấu thành từ các bộ phận:
Các khối logic cơ bản lập trình được (logic block)
Hệ thống mạch liên kết lập trình được
Khối vào/ra (IO Pads)
Phần tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân vi xử lý
FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC, nhưng nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế trên thư viện logic thì FPGA không đạt đựợc mức độ tối ưu như những loại này, và hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp, tuy vậy FPGA
ưu việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết kế đơn giản do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng
Còn nếu so sánh với các dạng vi mạch bán dẫn lập trình được dùng cấu trúc mảng phần tử logic như PLA, PAL, CPLD thì FPGA ưu việt hơn các điểm: tác vụ tái lập trình của FPGA thực hiện đơn giản hơn; khả năng lập trình linh động hơn;
và khác biệt quan trọng nhất là kiến trúc của FPGA cho phép nó có khả năng chứa khối lượng lớn cổng logic (logic gate), so với các vi mạch bán dẫn lập trình được
có trước nó
Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ
mô tả phần cứng HDL như VHDL, Verilog, AHDL, các hãng sản xuất FPGA lớn như Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình thiết kế, cũng có một số các hãng thứ ba cung cấp các gói phần mềm kiểu này như Synopsys, Synplify Các gói phần mềm này có khả năng thực hiện tất cả các
Trang 9bước của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL (còn gọi là mã RTL).
2.2.3 Lịch sữ của FPGA
FPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty Xilinx vào năm 1984, kiến trúc mới của FPGA cho phép tích hợp số lượng tương đối lớn các phần tử bán dẫn vào 1 vi mạch so với kiến trúc trước đó là CPLD FPGA có khả năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA còn thấp hơn nữa chỉ đạt vài nghìn đến 10.000
CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple programable devices, thuật ngữ chung chỉ PAL, PLA) SPLD thường là một mảng logic AND/OR lập trình được có kích thước xác định và chứa một số lượng hạn chế các phần tử nhớ đồng bộ (clocked register) Cấu trúc này hạn chế khả năng thực hiện những hàm phức tạp và thông thường hiệu suất làm việc của vi mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán
Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic, nhỏ hơn nhiều nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thể chứa nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử logic và hệ thống mạch kết nối, để đạt được mục đích này thì kiến trúc của FPGA phức tạp hơn nhiều so với CPLD
Một điểm khác biệt với CPLD là trong những FPGA hiện đại được tích hợp nhiều những bộ logic số học đã sơ bộ tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao, hay các bộ nhân cộng (multication and accumulation, MAC), thuật ngữ tiếng Anh
là DSP slice dùng cho những ứng dụng xử lý tín hiệu số DSP
Trang 10Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hỗ trợ tái cấu trúc cục bộ, tức là khả năng tái cấu trúc một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác.
2.2.4 Kiến trúc của FPGA
Cấu trúc tổng thể của một FPGA được minh họa ở hình sau
Hình 3.1 Kiến trúc tổng quan FPGA
2.2.4.1 Khối logic
Trang 11Hình 3.2 Khối logic FPGA
Phần tử chính của FPGA là các khối logic (logic block) Khối logic được cấu thành từ LUT và một phần tử nhớ đồng bộ flip-flop, LUT (Look up table) là khối logic có thể thực hiện bất kì hàm logic nào từ 4 đầu vào, kêt quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ flip-flop
Trong tài liệu hướng dẫn của các dòng FPGA của Xilinx còn sử dụng khái niệm SLICE, 1 Slice tạo thành từ gồm 4 khối logic, số lượng các Slices thay đổi từ vài nghìn đến vài chục nghìn tùy theo loại FPGA
Nếu nhìn cấu trúc tổng thể của mảng LUT thì ngoài 4 đầu vào kể trên còn hỗ trợ thêm 2 đầu vào bổ sung từ các khối logic phân bố trước và sau nó nâng tổng số đầu vào của LUT lên 6 chân Cấu trúc này là nhằm tăng tốc các bộ số học logic.2.2.4.2 Hệ thống mạch liên kết
Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai phương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chia thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có 3 loại kết nối: ngắn, dài và rất dài Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được (programable switch), trong một khối chuyển mạch chứa một
Trang 12số lượng nút chuyển lập trình được đảm bảo cho các dạng liên kết phức tạp khác nhau.
2.2.4.3 Các phần tử tích hợp sẵn
Ngoài các khối logic tùy theo các loại FPGA khác nhau mà có các phần tử tích hợp thêm khác nhau, ví dụ để thiết kế những ứng dụng SoC, trong dòng Virtex 4,5 của Xilinx có chứa nhân xử lý PowerPC, hay trong Atmel FPSLIC tích hợp nhân ARV…, hay cho những ứng dụng xử lý tín hiệu số DSP trong FPGA được tích hợp các DSP Slide là bộ nhân cộng tốc độ cao, thực hiện hàm A*B+C, ví dụ dòng Virtex của Xilinx chứa từ vài chục đến hàng trăm DSP slices với A, B, C 18-bit
2.2.5 Ứng dụng
Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính
Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết lớp những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính, ngoài
ra nhờ mật độ cổng logic lớn FPGA được ứng dụng cho những bài toán đòi hỏi khối lượng tính toán lớn và dùng trong các hệ thống làm việc theo thời gian thực
2.2.5 Ý nghĩa và vai trò của FPGA
Với khả năng tái cấu hình mạnh, FPGA đóng một vai trò vô cùng to lớn trong việc giảm giá thành và thời gian chế tạo ASIC bằng cách sử dụng FPGA trong quá trình thiết kế luận lý trước khi đưa ra sản xuất các ASIC mẫu Quy trình
Trang 13sản xuất Chip ASIC bằng cách này gọi là fabless rất phổ biến hiện nay trên thế giới, giúp các công ty nhỏ và vừa và đặc biệt là các nước yếu về công nghệ như Việt nam tham gia vào thế giới của IC.
FPGA rất hay được sử dụng trong các hệ thống SDR (Software Defined Radio) vì khả năng tái cấu hình giúp các chức năng của thiết bị có thể thay đổi nhanh chống
2.3 Kit DE2
Kit DE2 cung cấp cho người sử dụng nhiều đặc điểm linh hoạt để học tập và
có thể phát triển nhiều dự án đa phương tiện khác nhau Chúng được thiết kế không những phù hợp cho môi trường họp tập ở các trường đại học và cao đẳng
mà còn phù hợp với cả trong môi trường làm việc công nghiệp Các khối thiết kế ứng dụng trên KIT được chọn lọc dựa trên những thiết kế phổ biến nhất trong các sản phẩm đa phương tiện như DVD, VCD, MP3 player và nhiều ứng dụng điều khiển khác Kit DE2 cho phép người dùng nhanh chóng thấu hiểu được những thủ thuật để thiết kế các dự án công nghiệp Ngoài ra nó còn cung cấp một nền tảng kiến thức cơ bản cho người dùng đam mê trong lĩnh vực thiết kế vi mạch như phát triển những hệ thống kỹ thuật số tinh vi
2.3.1 Giới thiệu
Board DE2 là board mạch phục vụ cho việc 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
Trang 14Hình 3.3 Board DE2
2.3.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:
Trang 15Hình 3.4 Thông tin chi tiết của board DE2
FPGA:
- Vi mạch FPGA Altera Cyclone II 2C35
- Vi mạch Altera Serial Configuration – EPCS16
- 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
Trang 16- 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
- Bộ dao động 50-MHz và 27-MHz cho đồng hồ nguồn
2.3.3 Một vài ứng dụng của board DE2
Ứng dụng làm TV box
Hình 3.5 TV box
Trang 17 Chương trình vẽ bằng chuột USB (paintbrush)
Hình 3.6 Chương trình vẽ (paintbrush)
Máy hát Karaoke và máy chơi nhạc SD
Hình 3.7 Máy hát karaoke và máy chơi nhạc từ card SD
Trang 18CHƯƠNG 3 GIỚI THIỆU VỀ QUARTUS II
3.1 Các bước thực hiện một thiết kế
Công cụ CAD (Computer Aided Design) tạo nên sự thuận lợi khi thực hiện một mạch logic mong muốn bằng cách sử dụng các thiết bị logic lập trình được, như chip FPGA
Hình 4.1 Quy trình thiết kế CAD thông dụng
Trang 19- Design Entry (nhập thiết kế): Mạch logic mong muốn được mô tả bằng ngôn ngữ mô tả phần cứng như VHDL/Verilog hoặc bằng sơ đồ mạch.
- Synthesis (tổng hợp): Công cụ thực hiện chuyển các biểu diễn mạch điện ở trên thành dạng tệp netlist, trong đó biểu diễn các thành phần logic cần cho mạch cùng các kết nối giữa các thành phần logic
- Functional Simulation (mô phỏng chức năng): Mạch đã tổng hợp được kiểm tra để phân tích tính chính xác về chức năng; trình mô phỏng không quan tâm đến vấn đề thời gian
- Fitting: Công cụ CAD Fitter xác định vị trí đặt các thành phần logic đã đưa
ra trong tệp netlist vào trong FPGA, đồng thời xác định các đường đi dây trong FPGA để kết nối các thành phần logic
- Timinh Analysis (phân tích thời gian): Trễ đường truyền theo các đường khác nhau trong mạch đã được fit ở trên được phân tích để xác định khả năng hoạt động mong muốn của mạch
- Timing Silmulation (mô phỏng thời gian): Mạch đã được fit được kiểm tra
để phân tích cả về chức năng và cả về mặt thời gian
- Programming and configuration (lập trình và cấu hình): Mạch logic mong muốn được triển khai trên FPGA/CPLD thực tế thông qua chương trình nạp
và cấu hình cho FPGA/CPLD
mô phỏng (simulation), và lập trình lên thiết bị (DE2)
3.3 Cách nạp chương trình cho Quartus II