Tạo file cấu hình cho PROM

Một phần của tài liệu SỬ DỤNG NGÔN NGỮ VHDL XÂY DỰNG CHUYỂN MẠCH KHÔNG GIAN ĐƠN GIẢN (Trang 77)

File để nạp cho FPGA là .bit, file để nạp vào Flash PROM XCF04S của là .mcs.

Do đó file .mcs được được tạo ra từ file .bit đã tạo được ở bước 1. Thực hiện: Click đúp vào Generate PROM, ACE, or JTAG File để khởi động chương trình

iMPACT (hình 4-13).

Hình 3.11. Double-Click Generate PROM, ACE, or JTAG File

Click đúp vào PROM File Formatter (hình 3.12).

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 65

Phần target PROM type chọn Xilinx PROM.

Phần PROM File Formats chọn MCS. (chọn định dạng khác cũng được, nhưng

MCS là phổ biến).

Phần PROM File Name đặt tên cho file nạp vào PROM. (hình 3.13).

Hình 3.13. Choose the PROM Target Type, the, Data Format, and File Location Tiếp tục click Next, chọn xcf04s.

Click Add, rồi click Next Finish để hoàn tất lựa chọn. Chương trình sẽ hỏi file .bit , chọn file .bit rồi click OK.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 66

Hình 3.14. Format và config PROM

Kết quả sẽ như hình 3.15. Giá trị % ở PROM là dung lượng file so với tổng dung lượng của PROM.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 67

Hình 3.15. PROM Formatting Completed

Để tạo file thật sự cho PROM ta chọn : Operations -> Generate File (hình 3.16).

Hình 3.16. Click Operations -> Generate File to Create the Formatted PROM File

Đến đây đã hoàn tất việc tạo file cấu hình cho PROM (hình 4-21).

Hình 3.17. PROM File Formatter Succeeded 3.6.2.3. Nạp chương trình vào PROM

Ở bước 1 và 2 đã tạo ra các file cần thiết cho việc cấu hình FPGA. Bước này là nạp file cấu hình vào PROM.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 68

Hình 3.18. Switch to Boundary Scan Mode

Gán file PROM vào XCF04S bằng cách click phải vào biểu tượng của

XCF04S và chọn Assign New Configuration File, chọn file PROM được tạo ở bước trên rồi click OK (hình 3.19).

Hình 3.19. Assign the PROM File to the XCF04S Platform Flash PROM Tiếp tục click phải vào biểu tượng của XCF04S và chọn Program (hình 3.20).

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 69

Hình 3.20. Program the XCF04S Platform Flash PROM

Chương trình sẽ hỏi kiểu PROM mà ta cần nạp vào, lựa chọn XCF04S và click

OK (hình 3.21).

Hình 3.21. Select XCF04S Platform Flash PROM

Trước khi nạp vào PROM ta nên thêm tùy chọn sau:

Đánh chéo (check) vào các ô: Erase Before Programming, Verify, Load FPGA

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 70

Hình 3.22. PROM Programming Options

Cuối cùng click OK để hoàn thành. Quá trình nạp vào PROM và cấu hình lại

FPGA sẽ được thực hiện và chương trình sẽ cho biết quá trình nạp có thành công hay không. Nếu không chéo vào ô Load FPGA (hình 3.22) thì phải nhấn nút

PROG_B (hình 3.7) để reset lại cấu hình cho FPGA. Nếu thành công led DONE

(hình 3.7) sẽ sáng.

3.7. Tổng quan cấu trúc SPARTAN - 3E

Các thành phần:

- Input/Output Blocks (IOBs) : các khối vào ra

- Configurable Logic Blocks (CLBs) : được cấu tạo từ Look-Up Tables (LUTs). - Block RAM : Hỗ trợ 16 Kb RAM trên mỗi Block RAM, số lượng các Block

RAM tùy thuộc vào mỗi chip , với XC3S500E có 20 Block RAM.

- Multiplier Blocks : Khối nhân 2 lối vào 18 bit.

- Digital Clock Manager (DCM) Blocks : khối điều khiển xung clk.

- Interconnect : Các kết nối.

3.7.1. Input/Output Blocks (IOBs) : các khối vào ra

Bao gồm các khối vào ra 2 chiều I/O và các khối ngõ vào input path (không thể làm ngõ ra). Ngõ vào là một khối chức năng có tác dụng làm trì hoãn tín hiệu vào trước khi nó được đưa vào các khối bên trong. Cũng có thể thiết lập sự trì hoãn cho các ngõ I/O. Ta có thể không dùng chức năng trì hoãn này.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 71

Sau khi cấu hình cho FPGA, các chân không sử dụng, theo mặc định được thiết

lập thành ngõ vào với một điện trở nội pull-down.

Cấp nguồn cho IOBs :

VCCO : Cấp nguồn cho ngõ ra, tức điện thế ngõ ra sẽ bằng với VCCO. Khoảng

3.3 V

VCCINT : Cấp nguồn cho các khối bên trong FPGA. Khoảng 1.2 V.

VCCAUX : Nguồn hỗ trợ. Ít quan trọng. Khoảng 2.5 V.

3.7.2. Configurable Logic Blocks (CLBs) : Khối chức năng logic

Khối này thực hiện các chức năng logic và lưu trữ. Mỗi CLBs có 8 bảng tìm kiếm LUTs (Look-Up Table) và 8 phần tử nhớ. LUTs là một khối có chức năng

thực hiện các biểu thức logic, ngoài ra mỗi LUTs có thể cấu hình thành một RAM

16 bit hay một thanh ghi 16 bit. Phần tử nhớ là một khối mà có thể chỉ định để trở

thành một Flip-Flop hay latch.

XC3S500E có 1164 CLBs. Tương ứng với 9312 LUTs và 9312 Flip-Flop.

Logic Cell : Mỗi một LUTs kết hợp với một phần phần tử nhớ gọi là một “Logic

Cell”. XC3S500E có 10476 Logic Cell.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 72

Hình 3.23. CLB Locations

3.7.3. Block RAM : Khối nhớ

Các LUTs ở phần CLBs (phần 3.7.2) có thể cấu hình như RAM, nhưng RAM này thường dùng như một bộ buffer dữ liệu, trong khi các Block RAM thường

dùng cho việc chứa dữ liệu có kích thước lớn hơn.

XC3S500E có chứa 20 Block RAM. Mỗi Block RAM có thể chứa 18 Kbit data

(hình 3.24).

Hình 3.24. Spartan 3E Family Architecture

3.7.4. Dedicated Multipliers : Bộ nhân chuyên dụng

Các bộ nhân được đặt cùng với các Block RAM thành một khối. Bộ nhân hỗ

trợ 2 ngõ vào 18 bit và ngõ ra 36 bit. Có thể ghép chồng (cascade) các bộ nhân để tăng số ngõ vào (hình 3.25).

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 73

Hình 3.25. Principle Ports and Functions of Dedicated Multiplier Blocks

3.7.5. Digital Clock Managers (DCMs) : Bộ quản lí xung Clock

Bộ quản lí xung clock là một khối có 3 chức năng chính (hình 3.26):

- Loại bỏ sự lệch xung clock (Clock-skew Elimination): Giúp tăng tốc độ chuyển

mạch.

- Tổng hợp tần số (Frequency Synthesis): Giúp thay đổi tần số ở ngõ ra xung clock.

Qui tắc thực hiện:

- Trong đó CLKOUT là Clock ra, CLKIN là Clock vào, Integer_1 là tùy chọn từ 2 – 32, Integer_2 là tùy chọn từ 1- 32.

- Dịch Pha (Phase Shifting) : Giúp thay đổi pha clock.

XC3S500E có:

- 16 ngõ vào clock toàn cục GCLK0 – GCLK 15 đặt ở phía trên và dưới của

FPGA.

- 8 ngõ vào clock phía phải RHCLK0 – RHCLK7. - 8 ngõ vào clock phía trái RLCLK0 – RLCLK7.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 74

Hình 3.26. DCM Functional Blocks and Associated Signals

3.7.6. Interconnect : Các kết nối

Cung cấp các đường (segment) kết nối, các ma trận chuyển mạch (switch matrix) để tạo thành một mạng các đường tín hiệu giúp kết nối các IOBs, CLBs,

DCMs và block RAM lại với nhau (hình 3.27).

Hình 3.27. Bốn kiểu kết nối (CLBs, IOBs, DCMs, and Block RAM/ Multiplier)

3.8. Sơ lược về ISE 9.2 i

3.8.1. Tạo một Project

Vào Start > All Programs > Xilinx ISE 9.2i > Project Navigator để khởi động chương trình. Vào File > New Project cửa sổ hướng dẫn hiện ra :

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 75

Project Name: Đặt tên project.

Project location : Nơi chứa project.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 76

Ô Family : chọn Spartan3E . Ô Device : chọn XC3S500E. Ô Package : chọn FG320.

Tiếp tục click Next , cửa mới hiện ra, chọn thanh : New Source.

Cửa sổ mới hiện ra, chọn VHDL Module để viết code vhdl, nếu viết bằng verilog

thì chọn : Verilog Module.

Chọn tên file vhdl ở ô File name. (ở đây ta đang tạo bộ đếm nên chọn tên là

counter).

Tiếp tục click Next . Cửa sổ mới hiện ra , ta sẽ chọn giao diện cho vào ra cho khối

counter:

Cột Port Name để chọn tên cổng

Cột Direction để chọn chân là lối vào, lối ra hay cả hai vào/ra

Cột Bus : nếu dùng bus thì tréo vào ô này. Ở đây, bộ đếm của ta có ngõ ra là một

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 77

Tiếp tục click Next -> Next -> Finish.

Xuất hiện cửa sổ thông báo tổng quan về cái project của mình.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 78

Đến đây ta đã tạo ra một project có tên thavali và trong project này có chứa

một file vhdl tên là counter. ( sau này chúng ta cần add thêm một số file khác nữa

vào project).

Công việc tiếp theo là viết code vhdl .

Đoạn code cho bộ counter sẽ như sau: (coppy và bỏ vào cửa sổ soạn thảo).

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

-- Uncomment the following library declaration if instantiating -- any Xilinx primitive in this code.

--library UNISIM;

--use UNISIM.VComponents.all; entity counter is

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 79

DIRECTION : in STD_LOGIC;

COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0)); end counter;

architecture Behavioral of counter is

signal count_int : std_logic_vector(3 downto 0) := "0000"; begin

process (CLOCK) begin

if CLOCK='1' and CLOCK'event then if DIRECTION='1' then count_int <= count_int + 1; else count_int <= count_int - 1; end if; end if; end process; COUNT_OUT <= count_int; end Behavioral;

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 80

Tới đây ta có thể tổng hợp (synthesis) được rồi. Tuy nhiên ta cần mô phỏng kết

quả để kiểm tra hoạt động của mạch. Do đó ta cần tạo file mô phỏng (test bench wave form). Ta làm như sau:

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 81

Sẽ xuất hiện lại cửa sổ sau:

Chọn Test Bench WaveForm, đặt tên cho file là test (file này trong project có đuôi

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 82

Đây là cửa sổ để ta thiết lập các giá trị khởi tạo cho việc mô phỏng.

Ở ô Clock Information chọn kiểu mạch mà ta muốn mô phỏng. Mạch ta tạo ra

là một bộ đếm, là mạch tuần tự có một xung clock nên chọn Single Clock. Nếu là mạch tổ hợp ta chọn combinatorial.

Các tham số khác cũng đã được giải thích ngay trong ảnh.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 83

Click vào dòng tín hiệu ngõ vào DIRECTION để có thể thay đổi dạng sóng của

nó (click vào các chấm xanh da trời). Tất cả các tín hiệu ngõ vào điều có thể thay đổi theo ý, còn ngõ ra thì không ( điều hiển nhiên).

Click File -> Save để lưu tùy chọn dạng sóng.

Bây giờ quay lại cửa sổ sources window để tổng hợp và chạy mô phỏng.

Xem kết quả mô phỏng:

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 84

Behavioral Simulation

Trong cửa sổ mới chọn test.tbw. Trong ô Processes click đúp vào Simulate Behavioral Model và chờ một lát.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 85

Đến đây ta đã hoàn thành việc mô phỏng, như vậy trong Project của ta lúc này có thêm một file nữa là test.tbw.

Bây giờ ta sẽ thực hiện các ràng buộc (Constraints), gán chân (Assigning Pin),

tổng hợp (Synthesis) và nạp vào chip FPGA .

Trước hết là tạo các ràng buộc.

Quay lại cửa sổ Sources Window chọn Synthesis/ Implement Design và chọn

counter-behavioral.

Trong cửa sổ processes click vào dấu + ở dòng User Constraints .

Click đúp vào Create Timing Constraints sẽ xuất hiện thông báo yêu cầu thêm

file .UCF vào project, đương nhiên ta đồng ý (chọn YES ).

Cửa sổ mới xuất hiện:

Phía dưới cửa sổ chọn Global, phía trên chọn CLOCK rồi click vào nút (ở dưới chữ window). Sẽ xuất hiện cửa sổ mới, chọn các giá trị như hình.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 86

40 ns : chu kì clock. 50 % : cycle duty.

Click OK để hoàn thành lựa chọn.

Tiếp tục click vào biểu tượng để thiết lập pad to setup.

Pad to setup là thời gian tối ta mà dữ liệu phải đặt vào chân ngõ vào của chip

trước khi có xung clock. Tức là ta phải có dữ liệu ở chân ngõ vào một khoảng thời gian trước khi có xung clock.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 87

Ta chọn các thông số cho pad to setup như hình liền dưới, rồi click OK.

Tiếp tục click vào biểu tượng để thiết lập thông số Clock to Pad .

Clock to Pad là thời gian tối thiểu để dữ liệu ở ngõ vào được đưa tới ngõ ra sau khi có cạnh (lên hay xuống) của xung clock.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 88

Cửa sổ xuất hiện, ta chọn các thông số như hình liền dưới rồi click OK.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 89

Chọn File -> Save để lưu kết quả lại.

Ta cũng có thể đóng luôn cửa sổ Constraints Editor lại. Như vậy ta đã tạo xong các ràng buộc (Constraints).

Việc tiếp theo là gán chân (Assigning Pin).

Bây giờ quay trở lại cửa sổ chương trình chính ISE.

Click đúp vào Assign Package Pins cửa sổ mới hiện ra, chọn thanh Package View ở phía dưới.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 90

Dùng chuột kéo các tín hiệu của bộ counter của cửa sổ Design Object List (ở

bên trái) rồi thả vào các chân của FPGA (bên phải).

Bỏ CLOCK vào chân U10. (đây là chân cấp clock cho FPGA)

Bỏ DIRECTION vào chân U1. (chân input của FPGA)

Bỏ COUNT_OUT(0) vào chân T12. (chân I/O của FPGA)

Bỏ COUNT_OUT(1) vào chân R12. (chân I/O của FPGA)

Bỏ COUNT_OUT(2) vào chân R11. (chân I/O của FPGA)

Bỏ COUNT_OUT(3) vào chân R10. (chân I/O của FPGA)

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 91

Click File -> Save -> OK để hoàn thành việc gán chân.

Ta có thể đóng cửa sổ của PACE editor lại.

Tới đây ta đã hoàn thành công việc gán chân.

Tiếp theo là tổng hợp (synthesis).

Thực ra trong quá trình mô phỏng thì quá trình tổng hợp đã xảy ra rồi. Thực ra,

nếu bạn chỉ mô phỏng không thôi thì tổng hợp sẽ là công việc đầu tiên và không cần các bước ràng buộc (Constraints), gán chân (Assigning Pin) gì cả. Do đó bước

này phải gọi là: Map, Place and Route mới đúng.

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 92

Chương 3: Giới thiệu Kit Spartan 3E và công cụ ISE 9.2i 93

Bạn cũng có thể xem mạch được tổng hợp như thế nào bằng cách:

Trong cửa sổ Processes, chọn synthesize -> View Technology Schematic (mức

cổng). hay: synthesize -> View RTL Schematic (mức thanh ghi).

Chương 4: Thiết kế mạch và nạp Kit 94

CHƯƠNG 4

THIẾT KẾ MẠCH VÀ NẠP KIT

4.1. Ý tưởng thiết kế mạch

Hiện nay, chuyển mạch không gian đang được sử dụng phổ biến trong các loại

tổng đài điện tử số hiện đại. Trong khuôn khổ một đồ án tốt nghiệp, chúng em chỉ đưa ra mô hình chuyển mạch không gian đơn giản dùng ma trận chuyển mạch.

Hình 4.1. Ma trận chuyển mạch không gian

Chuyển mạch ma trận gồm m × n điểm thông đóng/ mở được điều khiển bởi bộ

nhớ CM. Mỗi địa chỉ nhị phân đánh dấu một điểm thông thích hợp để thiết lập nối

kết giữa ngõ ra và ngõ vào trên bus. Kích thước mỗi từ của CM phải đáp ứng được

yêu cầu cất giữ địa chỉ nhị phân cho 1 trong n điểm thông và có thể thêm 1 địa chỉ để thể hiện rằng mọi điểm thông trong cột là mở. Như vậy gồm n +1 địa chỉ. Vậy,

mỗi từ CM gồm log2(n +1) bits.

Mỗi bộ nhớ CM phải lưu được toàn bộ địa chỉ điểm thông trong 1 khung và để

CM làm việc một cách đồng bộ với ma trận chuyển mạch nên các ô nhớ của CM

sẽ tương ứng với thứ tự các khe thời gian vào, cho nên , nó phải có ít nhất R ô nhớ

( R là số khe thời gian trong một khung). Như vậy, địa chỉ của điểm thông sẽ được

nối trong khe thời gian TS1 sẽ được lưu trữ trong ô nhớ đầu tiên trong CM.

Một phần của tài liệu SỬ DỤNG NGÔN NGỮ VHDL XÂY DỰNG CHUYỂN MẠCH KHÔNG GIAN ĐƠN GIẢN (Trang 77)