FPGA 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àora (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
Trang 1Phầ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ế
3.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
Trang 24.7 Chức năng linh kiện
Phần II: THIẾT KẾ
Phần III: KẾT LUẬN
Trang 3Năm 1971 với sự ra đời của vi xử lý, đã làm cho kỹ thuật số phát triển nhảyvọ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ạnghơ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ậptrì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 cholĩ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 Trongcô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ànké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, antoàn hơn Nhờ đó năng suất lao động không ngừng được nâng cao Trong đời sốnghằ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 4tí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 đachứ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ẹpcủ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 5Đ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 thamkhả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ụcnhữ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 donhà 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ạocủa nhà trường
Trang 6CHƯƠNG 2 TÌM HIỂU VỀ FPGA & KIT DE2
2.1 FPGA
2.2.2 FPGA là gì ?
FPGA 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 ưuviệ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úcmả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ứakhố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
Trang 7như 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àynhư Synopsys, Synplify Các gói phần mềm này có khả năng thực hiện tất cả cácbướ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 tyXilinx 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 khiCPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLAcò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 (Simpleprogramable devices, thuật ngữ chung chỉ PAL, PLA) SPLD thường là một mảnglogic AND/OR lập trình được có kích thước xác định và chứa một số lượng hạnchế các phần tử nhớ đồng bộ (clocked register) Cấu trúc này hạn chế khả năngthự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ơnnhiề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ứanhiề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 FPGAphức tạp hơn nhiều so với CPLD
Trang 8Một điểm khác biệt với CPLD là trong những FPGA hiện đại được tích hợpnhiề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
Ngoà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 khivẫ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
Trang 92.2.4.1 Khối logic
Hì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ấuthành từ LUT và một phần tử nhớ đồng bộ flip-flop, LUT (Look up table) là khốilogic 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ùyvà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áiniệ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 haiphương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chiathà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,
Trang 10dà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ểnmạch lập trình được (programable switch), trong một khối chuyển mạch chứa một
số 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ácnhau
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 Virtex4,5 của Xilinx có chứa nhân xử lý PowerPC, hay trong Atmel FPSLIC tích hợpnhân ARV…, hay cho những ứng dụng xử lý tín hiệu số DSP trong FPGA đượctí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àngkhô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ớpnhữ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ỏikhố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
Trang 11Với khả năng tái cấu hình mạnh, FPGA đóng một vai trò vô cùng to lớntrong việc giảm giá thành và thời gian chế tạo ASIC bằng cách sử dụng FPGAtrong 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ìnhsả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 DefinedRadio) 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 đổinhanh 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ôngnhữ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ònphù 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ụngtrê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ểnnhữ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áclĩnh vực luận lý số học (digital logic), tổ chức máy tính (computer organization) vàFPGA
Trang 12Hì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áttriển, dưới đây là thông tin chi tiết của một board DE2:
Trang 13Hì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 14- 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
Trang 15Hình 3.5 TV box
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 16CHƯƠ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 17- Design Entry (nhập thiết kế): Mạch logic mong muốn được mô tả bằng ngônngữ 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 chomạ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ểmtra để 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âytrong 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ácnhau 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 mongmuố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
Trang 183.3.1 Tạo 1 project
Bước 1 Vào Menu > file chọn New Project Wizard
Bước 2 Ta chọn thư mục để chứa project và đặt tên cho project, xong chọn Next
xem hình bên dưới
Hình 4.2 Hộp hội thoại tạo mới project
Bước 3 Sau đó ta chọn hãng sản xuất chip và tên loại chip trên mạch.
Trang 19Hình 4.3 Hộp thoại lựa chọn chip
Bước 4 Cuối cùng chọn Finish để hoàn tất
3.3.2 Viết chương trình và biên dịch
Bước 1 Vào Menu > file chọn New
Bước 2 Sau đó chọn loại file mà chúng ta muốn viết chương trình Ở đây ta chọn
loại file VHDL
Trang 20Hình 4.4 Lựa chọn loại file cần tạo
Bước 3 Nhập mã VHDL vào trong cửa sổ soạn thảo văn bản.
Bước 4 Chọn mục File > Save As để mở cửa sổ Save As Trong phần Save as type chọn VHDL File Trong phần File name nhập test Nhấp chọn Save để đưa tệp này
vào trong thư mục của dự án
Bước 5 Biên dịch chương trình.
Trang 21Hình 4.5 Biên dịch chương trình
Bước 6 Chọn OK
3.3.3 Tạo file mô phỏng (simulate) và bắt đầu simulate
Bước 1 Vào Menu > file chọn New, sau đó chọn Vector Waveform File
Bước 2: Nhấp chọn Edit > End Time và nhập vào 200 ns trong hộp thoại bung ra, điều này cho phép thời gian mô phỏng từ 0 dến 200 ns Nhấp chọn View > Fit in
Window để nhìn thấy toàn bộ phần mô phỏng từ 0 đến 200 ns.
Bước 3: Nhấp chọn Edit > Insert > Insert Node or Bus để mở cửa sổ nhập các đầu vào ra Nhấp nút Node Finder để mở cửa sổ như trong hình 4.5.