xilinx fpga design flow

59
Xilinx FPGA Design Flow Ping-Liang Lai ( 賴賴賴 ) Digital System 賴賴賴賴

Upload: korbin

Post on 31-Jan-2016

129 views

Category:

Documents


3 download

DESCRIPTION

Digital System 數位系統. Xilinx FPGA Design Flow. Ping-Liang Lai ( 賴秉樑 ). Outline of FPGA Design Flow. Project Navigator 視窗介紹 設計流程 I: 以 Schematic 設計電路 建立新的專案 (Project) 以繪圖方式 (Schematic) 設計電路 功能模擬 (Functional Simulation) 的執行 Testbench 的產生 功能模擬 : 使用 Modelsim Simulator 晶片實作 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Xilinx FPGA Design Flow

Xilinx FPGA Design Flow

Ping-Liang Lai (賴秉樑 )

 

Digital System數位系統

Page 2: Xilinx FPGA Design Flow

Outline of FPGA Design Flow

Project Navigator 視窗介紹 設計流程 I: 以 Schematic 設計電路

建立新的專案 (Project) 以繪圖方式 (Schematic) 設計電路 功能模擬 (Functional Simulation) 的執行

» Testbench 的產生» 功能模擬 : 使用 Modelsim Simulator

晶片實作» Implementation Constraints File 的執行» Implementation Design» 時序模擬 (Timing Simulation) 的執行 : 使用 Modelsim Simulator» Configuration 的執行» 驗證電路

設計流程 II: 以 Verilog 設計電路

Page 3: Xilinx FPGA Design Flow

Project Navigator 視窗介紹 (1/2)

Source 視窗

Process Source 視窗

Transcript 視窗

Multi-document Interface

Page 4: Xilinx FPGA Design Flow

Project Navigator 視窗介紹 (2/2)

Source 視窗 Sources Tab

» 專案 (Project) 的名稱、使用者的文件、 FPGA/CPLD 的型號、設計流程與合成的工具與伴隨 Design View 的設計來源檔案。

Snapshot Tab» 顯示目前專案的所有 Snapshot ,所謂 Snapshot 主要在儲存以前儲存過的 Project

。 Library Tab

» 顯示目前所開啟的 Project 用到相關的 Library 。 Processes Source 視窗

顯示目前要處理的有效程序。 Transcript 視窗

Console, Error, Warning, Tcl Console, and Find in Files.

Page 5: Xilinx FPGA Design Flow

Outline of FPGA Design Flow

Project Navigator 視窗介紹 設計流程 I: 以 Schematic 設計電路

建立新的專案 (Project) 以繪圖方式 (Schematic) 設計電路 功能模擬 (Functional Simulation) 的執行

» Testbench 的產生» 功能模擬 : 使用 Modelsim Simulator

晶片實作» Implementation Constraints File 的執行» Implementation Design» 時序模擬 (Timing Simulation) 的執行 : 使用 Modelsim Simulator» Configuration 的執行» 驗證電路

設計流程 II: 以 Verilog 設計電路

Page 6: Xilinx FPGA Design Flow

建立新的專案 (1/8)

Step 1: File → New Project

Page 7: Xilinx FPGA Design Flow

建立新的專案 (2/8)

燒錄的 FPGA 晶片型號 : Spartan 3 XC3S200-FT256

Page 8: Xilinx FPGA Design Flow

建立新的專案 (3/8)

Step 2: 增加一個新的 Source 檔,使用 Schematic 來設計。

Page 9: Xilinx FPGA Design Flow

建立新的專案 (4/8)

New Source Summary

Page 10: Xilinx FPGA Design Flow

建立新的專案 (5/8)

We only need one Source, so Next.

Page 11: Xilinx FPGA Design Flow

建立新的專案 (6/8)

We don’t need and have any Existing Sources, so Next.

Page 12: Xilinx FPGA Design Flow

建立新的專案 (7/8)

New Project Summary

Page 13: Xilinx FPGA Design Flow

建立新的專案 (8/8)

1. 檢查 Source 檔 ,與 Device 。

2. 開始編輯電路。

Page 14: Xilinx FPGA Design Flow

Outline of FPGA Design Flow

Project Navigator 視窗介紹 設計流程 I: 以 Schematic 設計電路

建立新的專案 (Project) 以繪圖方式 (Schematic) 設計電路 功能模擬 (Functional Simulation) 的執行

» Testbench 的產生» 功能模擬 : 使用 Modelsim Simulator

晶片實作» Implementation Constraints File 的執行» Implementation Design» 時序模擬 (Timing Simulation) 的執行 : 使用 Modelsim Simulator» Configuration 的執行» 驗證電路

設計流程 II: 以 Verilog 設計電路

Page 15: Xilinx FPGA Design Flow

Schematic 圖形編輯器 (1/5)

Schematic 快速鍵介紹

Add wireAdd Net Name

Add I/O Maker

Add Symbol

Page 16: Xilinx FPGA Design Flow

Schematic 圖形編輯器 (2/5)

Step 3: Add → Symbol and Wire.

Page 17: Xilinx FPGA Design Flow

Schematic 圖形編輯器 (3/5)

Step 4: Add → IO Maker.

Page 18: Xilinx FPGA Design Flow

Schematic 圖形編輯器 (4/5)

Step 5: Add → Net name.

Page 19: Xilinx FPGA Design Flow

Schematic 圖形編輯器 (5/5)

Step 6: Tool Check schematic, and check no error and Save.

Page 20: Xilinx FPGA Design Flow

Outline of FPGA Design Flow

Project Navigator 視窗介紹 設計流程 I: 以 Schematic 設計電路

建立新的專案 (Project) 以繪圖方式 (Schematic) 設計電路 功能模擬 (Functional Simulation) 的執行

» Testbench 的產生» 功能模擬 : 使用 Modelsim Simulator

晶片實作» Implementation Constraints File 的執行» Implementation Design» 時序模擬 (Timing Simulation) 的執行 : 使用 Modelsim Simulator» Configuration 的執行» 驗證電路

設計流程 II: 以 Verilog 設計電路

Page 21: Xilinx FPGA Design Flow

功能模擬的執行 (1/12)

Step 7: Source for Behavioral Simulation ,點選 fa (fa.sch) , add new source ,檔名為 fa_tbw 。

Page 22: Xilinx FPGA Design Flow

功能模擬的執行 (2/12)

We only have one source, so Next.

Page 23: Xilinx FPGA Design Flow

功能模擬的執行 (3/3)

New Source Summary

Page 24: Xilinx FPGA Design Flow

功能模擬的執行 (4/12)

Page 25: Xilinx FPGA Design Flow

功能模擬的執行 (5/12)

Step 8: 輸入 input 的所有組合, n inputs → 2n input combinations.

Page 26: Xilinx FPGA Design Flow

功能模擬的執行 (6/12)

Step 9: Modelsim Simulator → Simulate Behavioral Model (Double click mouse left key 2 times).

Page 27: Xilinx FPGA Design Flow

功能模擬的執行 (7/12)

叫出 Modelsim Simulator 後, You can see “ Error Loading ”.

Page 28: Xilinx FPGA Design Flow

功能模擬的執行 (8/12)

Step 10: Select work → Compiler AND2, OR3, and XOR2. (file path: C://Xilinx/9.2i/ISE/verilog/src/unisims)

Page 29: Xilinx FPGA Design Flow

功能模擬的執行 (9/12)

Step 11: In fa_tbw, Right click → Simulate

Page 30: Xilinx FPGA Design Flow

功能模擬的執行 (10/12)

Step 12: Right Click “fa_tbw” to select Add → To Wave → All items in region.

Page 31: Xilinx FPGA Design Flow

功能模擬的執行 (11/12)

Behavioral Waveform Window

Page 32: Xilinx FPGA Design Flow

功能模擬的執行 (12/12)

Step 14: Run all, and Step 15: Zoom fit.

Page 33: Xilinx FPGA Design Flow

Outline of FPGA Design Flow

Project Navigator 視窗介紹 設計流程 I: 以 Schematic 設計電路

建立新的專案 (Project) 以繪圖方式 (Schematic) 設計電路 功能模擬 (Functional Simulation) 的執行

» Testbench 的產生» 功能模擬 : 使用 Modelsim Simulator

晶片實作» Implementation Constraints File 的執行» Implementation Design» 時序模擬 (Timing Simulation) 的執行 : 使用 Modelsim Simulator» Configuration 的執行» 驗證電路

設計流程 II: 以 Verilog 設計電路

Page 34: Xilinx FPGA Design Flow

Implementation Constraints File 的執行 (1/8)

Step16: Sources for “ Synthesis/Implementation “ Step 17: 點選 fa.sch , Project → New Source

Page 35: Xilinx FPGA Design Flow

Implementation Constraints File 的執行 (2/8)

Page 36: Xilinx FPGA Design Flow

Implementation Constraints File 的執行 (3/8)

Step 18: 點選 fa.ucf , User Constraints → Assign Package Pins.

Page 37: Xilinx FPGA Design Flow

Implementation Constraints File 的執行 (4/8)

Xilinx PACE 視窗

Page 38: Xilinx FPGA Design Flow

Implementation Constraints File 的執行 (5/8)

Step 19: 點選 Package View ,展開 Design Browser 的 I/O Pins

Page 39: Xilinx FPGA Design Flow

Implementation Constraints File 的執行 (6/8)

Step 20: 找出 Spartan-3 FPGA XC3S200-FT256 的 Datasheet Slide Switches

LEDs

Page 40: Xilinx FPGA Design Flow

Implementation Constraints File 的執行 (7/8)

完成後, File Save 。

Page 41: Xilinx FPGA Design Flow

Implementation Constraints File 的執行 (8/8)

檢查 Edit Constraints (Text)

Page 42: Xilinx FPGA Design Flow

Outline of FPGA Design Flow

Project Navigator 視窗介紹 設計流程 I: 以 Schematic 設計電路

建立新的專案 (Project) 以繪圖方式 (Schematic) 設計電路 功能模擬 (Functional Simulation) 的執行

» Testbench 的產生» 功能模擬 : 使用 Modelsim Simulator

晶片實作» Implementation Constraints File 的執行» Implementation Design» 時序模擬 (Timing Simulation) 的執行 : 使用 Modelsim Simulator» Configuration 的執行» 驗證電路

設計流程 II: 以 Verilog 設計電路

Page 43: Xilinx FPGA Design Flow

Implement Design (1/6)

Step 21: Implement Design

Page 44: Xilinx FPGA Design Flow

Implement Design (2/6)

Page 45: Xilinx FPGA Design Flow

Implement Design (3/6)

可點選 Place & Route → View/Edit Routed Design (FPGA Editor) ,來觀看實際上 LUT 配置的情形。

Page 46: Xilinx FPGA Design Flow

Implement Design (4/6)

FPGA 晶片資源利用報告 (Design Summary → Summary)

Page 47: Xilinx FPGA Design Flow

Implement Design (5/6)

Pinoout Report (Design Summary Pinout Report)

Page 48: Xilinx FPGA Design Flow

Implement Design (6/6)

時序報告的檢視 : Generate Post-Place & Route Static Timing → Analyze Post-Place & Route Static Timing.

Page 49: Xilinx FPGA Design Flow

Outline of FPGA Design Flow

Project Navigator 視窗介紹 設計流程 I: 以 Schematic 設計電路

建立新的專案 (Project) 以繪圖方式 (Schematic) 設計電路 功能模擬 (Functional Simulation) 的執行

» Testbench 的產生» 功能模擬 : 使用 Modelsim Simulator

晶片實作» Implementation Constraints File 的執行» Implementation Design» 時序模擬 (Timing Simulation) 的執行 : 使用 Modelsim Simulator» Configuration 的執行» 驗證電路

設計流程 II: 以 Verilog 設計電路

Page 50: Xilinx FPGA Design Flow

時序模擬 (Timing Simulation)

與 Functional Simulation 相同的步驟。

Page 51: Xilinx FPGA Design Flow

Outline of FPGA Design Flow

Project Navigator 視窗介紹 設計流程 I: 以 Schematic 設計電路

建立新的專案 (Project) 以繪圖方式 (Schematic) 設計電路 功能模擬 (Functional Simulation) 的執行

» Testbench 的產生» 功能模擬 : 使用 Modelsim Simulator

晶片實作» Implementation Constraints File 的執行» Implementation Design» 時序模擬 (Timing Simulation) 的執行 : 使用 Modelsim Simulator» Configuration 的執行» 驗證電路

設計流程 II: 以 Verilog 設計電路

Page 52: Xilinx FPGA Design Flow

Configuration 的執行 (1/2)

Step 22: Generate Programming File

Page 53: Xilinx FPGA Design Flow

Configuration 的執行 (2/2)

點選 Configure Device (iMPACT) Step 22: iMPACT 視窗,選擇 Configure devices using Boundary-Scan

(JTAG) Automatically …

Page 54: Xilinx FPGA Design Flow

Outline of FPGA Design Flow

Project Navigator 視窗介紹 設計流程 I: 以 Schematic 設計電路

建立新的專案 (Project) 以繪圖方式 (Schematic) 設計電路 功能模擬 (Functional Simulation) 的執行

» Testbench 的產生» 功能模擬 : 使用 Modelsim Simulator

晶片實作» Implementation Constraints File 的執行» Implementation Design» 時序模擬 (Timing Simulation) 的執行 : 使用 Modelsim Simulator» Configuration 的執行» 驗證電路

設計流程 II: 以 Verilog 設計電路

Page 55: Xilinx FPGA Design Flow

設計流程 II: 以 Verilog 設計電路 From Step 2 to choose a Verilog Module, and repeat Step3 ~ Step 22. Design example: 4-bit Ripple Carry Counter

Page 56: Xilinx FPGA Design Flow

4-bit Ripple Carry Counter

q0 q1 q2 q3

clock

reset

T_FF T_FF T_FF T_FF

q q qq

Ripple Carry Counter

clock

T_FF

D_FF

q

q

d

reset

reset ck qn qn+1

1 * 1 0

1 * 0 0

0 ↓ 0 1

0 ↓ 1 0

Page 57: Xilinx FPGA Design Flow

Design Block

module ripple_carry_counter (q, clk, reset);

output [3:0] q; input clk, reset;

T_FF tff0 (q[0], clk, reset); T_FF tff1 (q[1], q[0],

reset); T_FF tff3 (q[2], q[1],

reset); T_FF tff4 (q[3], q[2],

reset);

endmodulemodule T_FF (q, clk, reset);

output q; input clk, reset;

wire d; D_FF dff0 (q, d, clk, reset); not n1 (d, q);

endmodule

module D_FF (q, d, clk, reset);

output q; input d; input clk; input reset;

reg q;

always @ (posedge reset or negedge clk)

if (reset)q = 1'b0;

elseq = d;

endmodule

Example:

Ripple Carry Counter Top Block (ripple_carry_counter.v)

Flip-flop T_FF (tff.v)

Flip-flop D_FF (dff.v)

Page 58: Xilinx FPGA Design Flow

Stimulus Block

module rcc_testbench;

reg clk;reg reset;wire [3:0] q;

ripple_carry_counter r1 (q, clk, reset);

initialclk = 1'b0;

always#5 clk = ~clk;

initialbegin

reset = 1'b1;#15 reset = 1'b0;#180 reset = 1'b1;#10 reset = 1'b0;#20 $finish;

end

initial $monitor($time, "Output q = %d", q);

endmodule

Page 59: Xilinx FPGA Design Flow

Design Block and Stimulus Block

Two styles of stimulus application Stimulus block instantiates design block Dummy top-level module

d_clk

d_reset

c_q

clk

reset

q

Top-Level Block

Stimulus Block Design Block

clk reset

q

(Stimulus block)

Design Block

Fig. 1. Stimulus block instantiates design block

Fig. 2. Stimulus and design blocks instantiated in a Dummy top-level module