ThS NGUYỄN ĐÌNH PHÚ ThS TRƯƠNG THỊ BÍCH NGÀ GIÁO TRÌNH THỰC HÀNH THIẾT KẾ VI MẠCH SỐ VỚI VHDL ThS NGUYỄN ĐÌNH PHÚ ThS TRƯƠNG THỊ BÍCH NGÀ GIÁO TRÌNH THỰC HÀNH THIẾT KẾ VI MẠCH SỐ VỚI VHDL NHÀ XUẤT BẢN[.]
HƯỚNG DẪN SỬ DỤNG KIT FPGA XILINX
GIỚI THIỆU BỘ KIT FPGA - XILINX
Kit FPGA có nhiều dạng khác nhau, sử dụng nhiều loại chip của các hãng khác nhau nhưng hiện tại có 2 loại chip phổ biến nhất là của hãng Xilinx và Altera
Các nhà thiết kế kit sử dụng chip FPGA kết nối thêm các ngoại vi để tạo thành kit nhằm phục vụ cho việc nghiên cứu và thực hành
Chương này sẽ trình bày cấu hình kit thực hành FPGA nhằm giúp cho người thực hành nắm bắt, hiểu biết được kết nối của phần cứng để lập trình thực nghiệm cho chính xác
Kit thực hành dùng chip FPGA XILINX như hình 1-1
Hình 1-1 Kit dùng chip – FPGA XILINX – XC3S500E – PQ208
Kit có cấu hình gồm:
FPGA dùng chip FPGA XILINX – XC3S500E – PQ208
- Hỗ trợ lên đến 158 chân I/O
- Cấu hình chip có thể xem datasheet để biết chi tiết
Các giao tiếp giữa FPGA và các thiết bị ngoại vi như hình 1-2:
Có cổng giao tiếp VGA 8 bit
Có mạch dao động 50MHz
Có 1 cảm biến nhiệt 1 dây DS18B20
Có giao tiếp UART, VGA, PS2
Có đồng hồ thời gian thực
Có bộ nhớ EEPROM giao tiếp theo chuẩn I2C
Có giao tiếp mạch công suất ULN2003 để điều khiển động cơ bước
Có giao tiếp 1 màn hình LCD16x2
Có giao tiếp màn hình GLCD 128x64
Có giao tiếp bộ nhớ SRAM và SDRAM
(GẠT LÊN MỨC 0, GẠT XUỐNG
GIAO TIẾP UART, VGA, PS2
GIAO TIẾP BUZZER, CÔNG SUẤT UL2003
Hình 1-2 Giao tiếp FPGA với các ngoại vi
KHẢO SÁT CÁC THÀNH PHẦN CƠ BẢN CỦA KIT
Nguồn cung cấp cho Kit là 5V
1.2.2 CÁC SWITCH GẠT – SLICE SWITCH
Kit có 8 Switch gạt từ SW7 đến SW0, các SW nối với các IO được trình bày ở bảng 1-1
Sơ đồ kết nối của các switch với FPGA như hình 1-3
Switch có 3 chân: chân thứ nhất nối lên nguồn Vcc (3,3V) qua điện trở hạn dòng 4.7kΩ, chân thứ 2 (là chân giữa) nối với port IO của FPGA và thường là port vào, chân thứ 3 nối mass – 0V
Hoạt động của các SW gạt như sau:
Khi switch ở vị trí 3 hay nối chân thứ 2 với chân thứ 3 là 0V thì có nghĩa là nối chân FPGA với 0V – tạo ra mức 0
Khi switch ở vị trí 1 hay nối chân thứ 2 với chân thứ 1 Vcc thì có nghĩa là nối chân FPGA với nguồn 3,3V – tạo ra mức 1
Hình 1-3 Sơ đồ mạch giao tiếp với các switch
1.2.3 CÁC NÚT NHẤN – PUSH BUTTON
Kit có 5 nút nhấn với các tên từ BTN_N0 đến BTN_N4, nối với các IO được trình bày trong ở bảng 1-2
Sơ đồ kết nối của các nút nhấn với FPGA như hình 1-4
Chân thứ 2 nối lên nguồn Vcc (3,3V) qua điện trở hạn dòng 4.7kΩ đồng thời nối đến port vào của FPGA
Hình 1-4 Sơ đồ mạch giao tiếp với các nút nhấn
Hoạt động của các BTN như sau:
Khi không nhấn thì nối chân của FPGA với 3.3V – tạo ra mức 1
Khi nhấn thì nối chân của FPGA với 0V – tạo ra mức 0
Kit có 8 led LD0 đến LD7, các led nối với các IO được trình bày ở bảng 1-3
Sơ đồ kết nối của các led đơn với FPGA như hình 1-5
Led có 2 chân: chân anode thứ nhất nối lên nguồn Vcc (3,3V), chân cathode nối với điện trở hạn dòng 1kΩ và sau đó nối vào port IO của FPGA
Hình 1-5 Sơ đồ mạch giao tiếp với các led đơn
Hoạt động của các led như sau:
Mức 1 làm led tắt – mức 0 làm led sáng
Khi sử dụng thì phải đảo giá trị trước khi gán cho ngõ ra
Chú ý: Led sáng tích cực mức 0 ngược với các yêu cầu nên thường đảo các ngõ ra của các thiết kế rồi sau đó gán cho led
Kit có 8 led 7 đoạn loại anode kết nối theo phương pháp quét Các đoạn a, b, c, d, e, f, g, dp nối với các điện trở hạng dòng rồi nối với tín hiệu được đặt tên là SSGE (Seven Segments) và các Anode của 8 led nối với 8 transistor và nối với các IO của FPGA và được đặt tên là ANODE0 đến ANODE7 tương ứng như bảng 1-4
B ả ng 1-4 Các đoạn và các anode của 8 led 7 đoạn
CÁC ĐOẠN CHÂN CÁC ANODE CHUNG CHÂN
Sơ đồ kết nối của 8 led 7 đoạn anode chung với FPGA như hình 1-6 Hoạt động của 8 led 7 đoạn như sau:
Cách thức điều khiển thì tiến hành xuất dữ liệu ra các đoạn và cho 1 transistor dẫn, sau đó thực hiện cho led tiếp theo và cho đến led cuối cùng rồi quay lại Chu kỳ quét cho 8 led nằm trong phạm vi từ 1ms đến 8ms
Hình 1-6 Sơ đồ mạch giao tiếp với 8 led 7 đoạn anode chung
Led sử dụng là led anode chung: mức 0 thì led sáng, 1 thì led tắt nên mã 7 đoạn của các số là:
Số hex dp g f e d c b a Mã số hex
Kit có 1 led ma trận 8×8 bao gồm 8 hàng và 8 cột, có dùng transistor khuếch đại dòng Các IO của FPGA kết nối với led ma trận 8×8 như bảng 1-6
B ả ng 1-6 Bảng IO kết nối led ma trận CÁC CỘT CHÂN CÁC HÀNG CHÂN
Cách tìm mã kí tự dựa vào bảng theo sau
B ả ng 1-7 Mã kí tự của A
B ả ng 1-8 Mã của tất cả các kí tự
TT Kí tự Mã ma trận
Sơ đồ kết nối của 8 led 7 đoạn anode chung với FPGA như hình 1-7
Led ma trận 8x8 thì có 8 hàng và 8 cột, 8 hàng thì kết nối với 8 IO của FPGA, 8 cột thì kết nối điều khiển thông qua 8 transistor để điều khiển quét cho từng cột
Các tín hiệu điều khiển dùng chung với quét 8 led 7 đoạn
Hoạt động của led ma trận 8x8 như sau:
Gởi dữ liệu thứ 0 ra hàng, gởi mã quét ra 8 cột để cho cột thứ 0 dẫn, sau 1 khoảng thời gian thì gởi mã tắt cột đã mở
Tiếp tục công việc cho dữ liệu và mã quét cột tiếp theo cho đến hết thì lặp lại
Chú ý: Dữ liệu điều khiển thực tế thì phải đảo cả hàng và cột
Hình 1-7 Sơ đồ mạch giao tiếp với 1 led ma trận 8x8
Kit có thiết kế giao tiếp với LCD, ta có thể gắn LCD 16×2 hoặc 20×4
Các IO của FPGA kết nối với LCD như bảng 1-9
B ả ng 1-9 Bảng IO kết nối LCD CÁC CỘT CHÂN
LCD_ D6 P98 LCD_ D5 P50 LCD_ D4 P48 LCD_ D3 P64 LCD_ D2 P62 LCD_ D1 P40 LCD_ D0 P49
1.2.8 BUZZER – CẢM BIẾN NHIỆT 1 DÂY DS18B20 – LED THU
Kit có thiết kế giao tiếp với 1 buzzer, 1 cảm biến nhiệt 1 dây DS18B20, 1 led thu hồng ngoại để nhận tín hiệu từ remote
B ả ng 1-10 Bảng tên các tín hiệu nối với các cảm biến
Khi sử dụng đối tượng nào thì bạn dùng dây nối đối tượng đó với ngõ IO là OUT8 Ví dụ muốn dùng cảm biến DS18B20 thì nối chân DS18B20 với OUT8
1.2.9 GIAO TIẾP CÔNG SUẤT ULN2003
Kit có thiết kế giao tiếp với 1 IC công suất ULN2003 dùng 4 cổng Not để đệm tín hiệu IO của FPGA để có thể điều khiển đối tượng công
B ả ng 1-11 Bảng tên các tín hiệu của IC giao tiếp ULN2003
TÊN TÍN HIỆU VÀO TÊN TÍN HIỆU VÀO
Khi sử dụng điều khiển thì phải dùng dây nối
Sơ đồ kết nối của IC đệm ULN2003 như hình 1-8
Hình 1-8 Sơ đồ mạch công suất của IC ULN 2003
1.2.10 GIAO TIẾP IC THỜI GIAN THỰC DS1302
Kit có thiết kế giao tiếp với 1 IC thời gian thực DS1302 giao tiếp nối tiếp đồng bộ (không phải giao tiếp I2C)
B ả ng 1-12 Bảng tên các tín hiệu giao tiếp DS1302
Sơ đồ kết nối của IC thời gian thực DS1302 như hình 1-9
Hình 1-9 Sơ đồ mạch IC thời gian thực với FPGA
1.2.11 GIAO TIẾP IC NHỚ EEPROM AT24C04 THEO CHUẨN I2C
Kit có thiết kế giao tiếp với 1 IC EEPROM AT24C04 giao tiếp nối tiếp đồng bộ theo chuẩn I2C
B ả ng 1-13 Bảng tên các tín hiệu Eeprom AT24C04
Sơ đồ kết nối của IC nhớ nối tiếp EEPROM AT24C04 như hình 1-
Kit có thiết kế giao tiếp với 1 IC DAC 0832 giao tiếp song song Khi sử dụng thì kết nối Ngõ ra thì điều khiển led Sơ đồ kết nối của IC DAC 0832 như hình 1-11
B ả ng 1-14 Bảng tên các tín hiệu DAC 0832
Hình 1-11 Sơ đồ mạch IC DAC 0832
1.2.13 GIAO TIẾP VỚI IC MAX232 CHUẨN RS232
Kit có thiết kế giao tiếp với 1 IC MAX232 chuyển đổi để giao tiếp theo chuẩn RS232
Sơ đồ kết nối của IC MAX 232 như hình 1-12
Hình 1-12 Sơ đồ mạch IC Max 232 với FPGA
B ả ng 1-15 Bảng tên các tín hiệu giao tiếp IC chuẩn RS232
Kit có thiết kế giao tiếp chuẩn PS/2
Sơ đồ kết nối của cổng PS2 như hình 1-13
Hình 1-13 Sơ đồ mạch chuẩn PS2 với FPGA
B ả ng 1-16 Bảng tên các tín hiệu chuẩn PS/2
Kit có thiết kế giao tiếp SD card
Sơ đồ kết nối của SD card như hình 1-14
Hình 1-14 Sơ đồ mạch kết nối SD card với FPGA
B ả ng 1-17 Bảng tên các tín hiệu SD card
SD_CS SD_DO SD_DI SD_CK
Kit có thiết kế giao tiếp VGA
Sơ đồ kết nối của cổng VGA như hình 1-15
Hình 1-15 Sơ đồ mạch kết nối cổng VGA với FPGA
B ả ng 1-18 Bảng tên các tín hiệu VGA TÊN TÍN HIỆU CHÂN
Tên và vị trí: Kit hỗ trợ nguồn xung clock
Nguồn xung clock 50Mhz nối với chân PIN_183
Sơ đồ kết nối của mạch dao động như hình 1-16
Hình 1-16 Sơ đồ mạch kết nối mạch dao động với FPGA
1.2.18 GIAO TIẾP SRAM IS61 LV 25616
Kit có thiết kế giao tiếp SRAM LV25616 có dung lượng 256K word (16 bit)
Sơ đồ kết nối của bộ nhớ SRAM như hình 1-17
B ả ng 1-19 Bảng tên các tín hiệu SRAM LV25616 ĐỊA
LIỆU CHÂN TÍN HIỆU ĐIỀU
Hình 1-17 Sơ đồ mạch kết nối bộ nhớ SRAM với FPGA
1.2.19 GIAO TIẾP SDRAM IS4 2S1 6400/HY57V1620
Kit có thiết kế giao tiếp SDRAM IS4 6400 HY57V1620
Sơ đồ kết nối của bộ nhớ SDRAM như hình 1-18
B ả ng 1-20 Bảng tên các tín hiệu SDRAM IS4 6400 ĐỊA
LIỆU CHÂN TÍN HIỆU ĐIỀU
Hình 1-18 Sơ đồ mạch kết nối bộ nhớ SDRAM với FPGA
Chương 2 HƯỚNG DẪN SỬ DỤNG ISE DESIGN SUITE 14.2
2.1 KHỞI ĐỘNG XILINX ISE DESIGN SUITE
Do có nhiều nhóm thực tập nên mỗi nhóm cần tạo 1 thư mục ở ổ đĩa D hoặc E, đặt tên theo buổi học, theo thứ, theo nhóm để lưu file
Ví dụ: “E:\TTTKVMS_SANG_THU2_NHOM_X” – với X là thứ tự của nhóm
Nhấp đúp vào biểu tượng của chương trình Xilinx ISE Design Suite trên màn hình Windows để bắt đầu lập trình
Hình 2-1 Biểu tượng chương trình Xilinx ISE Design Suite 14.2
Màn hình sau khi khởi động xong như hình 2-2:
Hình 2-2 Giao diện của chương trình ISE
Hãy nhấn nút “OK” để thóat khỏi menu “Tip of the Day” nếu có Cột bên trái sẽ hiển thị các thông tin của file soạn thảo của chương trình trước
2.2 SOẠN THẢO CHƯƠNG TRÌNH ISE WEBPACK Để soạn thảo chương trình mới hãy chọn “New Project” xem như hình 2-3:
Sau khi chọn “New Project …” thì màn hình xuất hiện như hình 2-4:
Hình 2-4 Menu để nhập tên thư mục cho Project
Hãy bấm chuột vào ô 3 dấu chấm ở mục “Location” (vị trí 1) để chỉ đến thư mục mà bạn đã tạo Trong bài này thư mục được chọn là TTTKVMS_SANG_THU2_NHOM_X nằm ở đĩa E Từ bài thứ 2 trở đi thì phần mềm nhớ luôn thư mục này, bạn phải để ý đến mục này để lưu cho đúng thư mục vì có nhiều nhóm thực tập trên cùng 1 máy hoặc do máy đóng băng nên khi khởi động lại sẽ không nhớ đường dẫn này
Mỗi một Project thì có rất nhiều file do chương trình tạo ra nên để dễ quản lý thì ISE yêu cầu người lập trình phải nhập tên thư mục cho
Người lập trình hãy nhập vào ô “Name” tên của Project (vị trí 2) Khi đặt tên cho Project thì nên đặt tên gần với yêu cầu của bài lập trình
Ví dụ ta lập trình bài cổng AND thì ta đặt tên như hình 2-5:
Hình 2-5 Nhập tên thư mục cho Project là “BAI_VD_001_CONGAND”
Sau khi nhập tên xong bạn nhấn nút “Next” thì menu mới xuất hiện như hình 2-6:
Hình 2-6 Menu dùng để chọn các thông số của Project
Các thông tin trong hình 2-6 đã được hiệu chỉnh cho kit dùng chip FPGA Spartan3E – mã số là XC3S500E với kiểu vỏ là PQ208
Nếu chưa đúng thì bạn phải hiệu chỉnh lại cho đúng bằng cách bấm vào mũi tên bên phải và lựa chọn cho phù hợp
Nhấn nút “Next” thì có 1 cửa sổ xuất hiện thông báo các thông tin của Project mà bạn đang thực hiện Tiếp tục nhấn nút “Finish” thì màn hình xuất hiện như hình 2-7
Hình 2-7 Màn hình sau khi khai báo xong tên và chọn chip FPGA
Tiếp theo thì tạo file nguồn cho Project bằng cách bấm chuột vào ô nằm bên dưới chữ “Design” xác định như trong hình 2-8:
Sau khi bấm vào biểu tượng để chọn file mới thì màn hình sau sẽ xuất hiện:
Hình 2-9 Màn hình chọn kiểu lập trình và đặt tên cho file nguồn mới
Trong màn hình trên ta tiến hành theo thứ tự các bước 1, 2, 3 Bước
1 thì chọn kiểu lập trình là “VHDL Module” Bước 2 tiến hành nhập tên
“CONGAND” trong ô “File name” Bước 3 nếu đúng tên đường dẫn thì giữ nguyên, nếu sai thì hiệu chỉnh cho đúng
Tiếp tục nhấn “Next” thì màn hình sau xuất hiện:
Hình 2-10 Màn hình thiết lập các tín hiệu vào ra
Hình 2-11 Màn hình xuất hiện 2 tag
Trong hình trên đã tiến hành khai báo tín hiệu vào cổng AND là A và B: tiến hành trỏ chuột vào và đánh A, B (có khoảng cách hoặc không có đều được), đánh Y vào hàng thứ 2, chọn chiều (Direction) cho Y là out
Tiến hành nhấn “Next” và “Finish” cho đến khi xuất hiện màn hình soạn thảo như hình sau:
Trong hình trên hiển thị từ hàng thứ 20 đến hành thứ 39 Có 2 tag: một cho file nguồn là CONGAND.vhd và một cho phần tóm tắt Project
Màn hình chứa các hàng lệnh khai báo các tín hiệu vào ra còn kiến trúc chương trình chưa có gì như hình sau:
Hình 2-12 Màn hình file nguồn chưa có lệnh Đến đây bạn bắt đầu tiến hành nhập các mã lệnh vào trong thân chương trình theo yêu cầu của Project Với bài cổng AND có 2 ngõ vào thì các lệnh nhập vào trong thân chương trình và kết quả cuối cùng như hình 2-13
Hình 2-13 Màn hình file nguồn sau khi nhập các lệnh Đối với chương trình đơn giản của bài này thì bạn hãy nhập 1 lệnh duy nhất
Hãy lưu chương trình và tiến hành tổng hợp xem cú pháp lệnh có đúng hay không bằng cách bấm đúp chuột vào mục “Synthesize - XST” trong cửa sổ “Processes: CONGAND - Behavioral” như hình 2-14:
Hình 2-14 Chọn chức năng tổng hợp chương trình
Thời gian kiểm tra tùy thuộc vào chương trình dài hay ngắn, phụ thuộc vào tốc độ làm việc của máy tính, trong quá trình đang kiểm tra thì
ISE có hiển thị ô tròn nhấp nháy
Sau khi tổng hợp xong thì phần mềm sẽ cho biết kết quả tốt bằng cách hiển thị dấu tick màu xanh ở vị trí hàng “Synthesize - XST” nếu bạn viết đúng cú pháp – xem hình 2-15
Hình 2-15 Kết quả tổng hợp thành công
Nếu chương trình viết sai cú pháp thì sẽ đánh dấu chéo màu đỏ vào mục “Synthesize - XST” và có thông báo lỗi chương của từng lệnh 1 như hình 2-16
Trong chương trình trên bị mất dấu “;” ở hàng lệnh số 38, kết quả biên dịch cho hay chương trình viết chưa đúng hiển thị dấu chéo màu đỏ ở mục “Synthesize - XST” số thứ tự 1