Trong thư viện của bộ công cụ XPS, hãng Xilinx hỗ trợ rất nhiều ngoại vi dưới dạng IP core (Intellectual Property) trong đó có ngoại vi điều khiển hiển thị hình ảnh lên màn hình lõi VGA.
Trong giao diện của công cụ XPS, thêm VGA core bằng cách add IP “XPS_TFT” trong cừa sổ IP Catalog ở mục IO modules. Thêm lõi XPS_TFT vào project, tại cửa sổ đầu tiên chúng ta bỏ chọn thuộc tính “Select TFT interface” do chỉ cần dùng chức năng điều khiển VGA
Hình 3-9: Khởi tạo lõi VGA.
Thiết lập bus cho lõi VGA, giao tiếp với bus PLB gồm giao diện bus chủ PLB_MI và giao diện bus tớ PLB_SI. Hai giao diện này có thể kết nối chung với một kênh truyền thông PLB hoặc hai kênh truyền thông PLB độc lập. PLB_MI giúp lõi điều khiển VGA có thể đọc dữ liệu ảnh từ RAM ngoài vào. PLB_SI giúp lõi điều khiển VGA có thể nhận thông tin điều khiển từ vi xử lý. Chi tiết về các tín hiệu trong giao diện này được trình bày trong các tài liệu [12] và [13] .
47
Hình 3-10: Cấu hình bus cho lõi VGA.
Tiếp theo chúng ta cần thiết lập thông số xung nhịp đồng bộ cho lõi VGA. Trên kit Spartan- 3E, do tần số hoạt động của SoC đạt được là thấp (50 MHz) nên chúng ta chỉ thử nghiệm được thiết kế với chế độ hiển thị VGA 640x480, đồng thời chế độ màu hiển thị là 3-bit – tương ứng với 3-bit thông tin màu RGB. Tần số pixel clock ứng với chế độ hiển thị VGA được đặt bằng 25 MHz. Trên giao diện XPS, vào Hardware chọn thuộc tính Launch Clock Wizard thiết lập thông số SYS_TFT_Clk là 25.000000
48
Lõi VGA cần giao tiếp với màn hình, do đó cần thiết lập các chân tín hiệu của khối VGA là các tín hiệu ngoài “Make External”. Các tín hiệu của lõi VGA như mô tả ở bảng 3.2
Bảng 3-2: Các tín hiệu ngoại vi của lõi VGA
Tín hiệu Chiều
I/O Net Mô tả
SYS_TFT_Clk I Clk_25_000MHz Tín hiệu xung đồng hồ
TFT_VGA_R O xps_tft_0_TFT_VGA_R Giá trị màu đỏ TFT_VGA_G O xps_tft_0_TFT_VGA_G Giá trị màu xanh lục TFT_VGA_B O xps_tft_0_TFT_VGA_B Giá trị màu xanh lam TFT_HSYNC O xps_tft_0_TFT_HSYNC Tín hiệu đồng bộ dòng TFT_VSYNC O xps_tft_0_TFT_VSYNC Tín hiệu đồng bộ mành
Để các tín hiệu được kết nối tới tương ứng các chân trên chip, chúng ta cần khai báo trong file system.ucf. Thêm vào đoạn mã như sau:
NET xps_tft_0_TFT_VGA_R_PIN<0> LOC = "H14" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST ;
NET xps_tft_0_TFT_VGA_R_PIN<*> IOSTANDARD = LVTTL ;
NET xps_tft_0_TFT_VGA_G_PIN<0> LOC = "H15" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST ;
NET xps_tft_0_TFT_VGA_G_PIN<*> IOSTANDARD = LVCMOS33 ;
NET xps_tft_0_TFT_VGA_B_PIN<0> LOC = "G15" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST ;
NET xps_tft_0_TFT_VGA_B_PIN<*> IOSTANDARD = LVCMOS33 ;
NET xps_tft_0_TFT_HSYNC_PIN LOC = "F15" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST ;
NET xps_tft_0_TFT_VSYNC_PIN LOC = "F14" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST ;
Chúng ta cần khởi tạo địa chỉ để định địa chỉ cho các ngoại vi đã thêm vào bằng cách sử dụng thuộc tính “Generate Addresses” nằm trong tab “Addresses”. Tiếp theo đa định địa chỉ bộ nhớ video cho bộ điều khiển VGA. Trong tab Bus Interfaces kích chuột phải vào xps_tft_0 vào chọn thuộc tính “Configure IP…” đặt giá trị địa chỉ cơ sở cho lõi VGA là 0x8E000000 trong mục "Base address of PLB attached Video Memory".
49
Hình 3-12: Tạo ra phần cứng FPGA.
Chúng ta đã khởi tạo và cấu hình đầy đủ các ngoại vi mà hệ thống yêu cầu. Bước cuối cùng để tạo ra file hệ thống nạp xuống bo mạch thực thi phần cứng FPGA, chúng ta chọn thuộc tính “Generate Bitstream” trong menu “Hardware” từ giao diện Xilinx Platform Studio.
50