Thiết kế logic số (VLSI design)

TS. Hoàng Văn Phúc Bộ môn KT Xung Số-Vi xử lý 11/2014

https://sites.google.com/site/phucvlsi/teaching

Nội dung

 Nhắc lại bài trước: Cấu trúc FPGA  Qui trình thiết kế hệ thống số trên FPGA  Các ví dụ thiết kế

 Thời lượng: 06 tiết

2

Nhắc lại về FPGA: Cấu trúc cơ bản

3

Tái cấu hình cho FPGA

SRAM-based: - Hoạt động phụ thuộc nguồn điện cung cấp - Khả năng tái cấu trúc linh hoạt - Cho phép thực hiện các thiết kế lớn

4

Hoạt động của FPGA

Người dùng ghi giá trị vào bộ nhớ cấu hình (configuration memory) để định chức năng hệ thống:

 Kết nối giữa CLBs và I/O cells  Mạch logic cần thực thi trên CLBs  Các khối I/O

• Thay đổi nội dung bộ nhớ cấu hình  Thay đổi chức năng hệ thống • Việc thay đổi có thể thực hiện khi mạch đang chạy (run-time configuration)  Tính toán tái cấu hình (RC: reconfigurable computing)

5

Kiến trúc của Configurable Logic Blocks (CLBs)

Mỗi CLB bao gồm:

Look-up Tables (LUT): Bảng tra Mạch Carry & Control Các phần tử nhớ

Configurable Logic Block (CLB): Khối logic khả trình (có thể tái cấu hình)

6

Hệ thống nhúng (embedded system) trên FPGA

System on board

System on chip (SoC)

Source: Internet

7

ASIC (Application Specific Integrated Circuit) và FPGA (Field Programmable Gate Array)

ASIC (IC chuyên dụng)

FPGA

Chức năng cố định

Thời gian thiết kế dài và chi phí cao

Người dùng có thể định lại cấu hình cho thiết kế Thời gian thiết kế ngắn và chi phí thấp

Tốc độ và hiệu năng cao Tốc độ và hiệu năng thấp hơn

Tiết kiệm chi phí đối với số lượng sản phẩm lớn

Hiệu quả với số lượng sản phẩm nhỏ

8

Qui trình thiết kế với FPGA và ASIC

9

Đánh giá một thiết kế trên FPGA

 Tốc độ (speed): thông qua tốc độ clock tối đa hoặc

độ trễ dài nhất của mạch tổ hợp (critical path)

 Tài nguyên sử dụng: số lượng LUTs, slices, CLBs…

cần cho thiết kế

 Thông lượng: số lượng bit dữ liệu có thể được xử lý

trong một đơn vị thời gian

 Công suất tiêu thụ

10

Qui trình thiết kế trên FPGA (Tổng quan)

11

Qui trình thiết kế trên FPGA (chi tiết)

Specification (Mô tả bài toán)

Design and implement a simple unit permitting to speed up encryption with RC5-similar cipher with fixed key set on 8031 microcontroller. Unlike in the experiment 5, this time your unit has to be able to perform an encryption algorithm by itself, executing 32 rounds…..

Mô tả VHDL (Source Files) hoặc sơ đồ mạch logic

Library IEEE; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

Functional simulation (Mô phỏng chức năng)

entity RC5_core is port(

clock, reset, encr_decr: in std_logic; data_input: in std_logic_vector(31 downto 0); data_output: out std_logic_vector(31 downto 0); out_full: in std_logic; key_input: in std_logic_vector(31 downto 0); key_read: out std_logic;

); end RC5_core;

Post-synthesis simulation (Mô phỏng sau tổng hợp)

Synthesis (Tổng hợp)

12

Qui trình thiết kế trên FPGA (chi tiết)

Implementation (Thực thi)

Timing simulation (Mô phỏng về thời gian)

Configuration (Cấu hình)

On board testing (Kiểm tra trên mạch)

13

Technology mapping (Ánh xạ công nghệ)

 Là việc ánh xạ từ chức năng logic vào cấu trúc phần

cứng cụ thể của FPGA

 Mạch logic:

 Đường tín hiệu:

14

Technology mapping (tiếp)

15

Phần mềm thiết kế trên FPGA của Xilinx

Phân cấp thiết kế Design/Files/Libraries

Source files/Summary …

Khung để gõ lệnh hoặc thể hiện nhanh kết quả chạy biên dịch thiết kế

ISE: Integrated Software Environment

1616

Các thành phần chính của Xilinx ISE Suite

 XST: Synthesis tool (Công cụ để tổng hợp thiết kế)  Implementation tool (Công cụ thực thi)  Generate programming file (Tạo file cấu hình)  Configuration (Cấu hình cho FPGA)  ISIM: trình mô phỏng tích hợp trong ISE (chức năng tương

tự modelsim)

 Các thành phần khác: Plan-ahead, xPower analyzer …  Ngoài ra, gần đây Xilinx phát triển thêm Vivado Suite có các thành phần hỗ trợ tổng hợp mức cao (high level synthesis) cho phép tổng hợp thiết kế từ các ngôn ngữ bậc cao như C, C++

17

VHDL vs. Schematic

library IEEE; use IEEE.STD_LOGIC_1164.ALL;

entity compare_module is port (value : in std_logic_vector(3 downto 0);

end compare_module;

res : out std_logic);

process (val, std) begin

architecture Behavioral of compare_module is signal std : std_logic_vector (4 downto 0); begin val <= '0' & value;

sub <= val - std; res <= sub(4);

end Behavioral;

HDL

 Độc lập với công nghệ  Dễ hơn trong quản lý thiết kế phức tạp  Dễ kiểm tra thiết kế hơn

end process;

18

Schematic: Thiết kế bằng sơ đồ nguyên lý

Synthesis (Tổng hợp thiết kế)

Synthesis

Check syntax & synthesis

Create RTL schematic (optional)

Create Technology schematic (optional)

Generate netlist (post simulation model) (optional)

Tạo netlist

Kiểm tra cú pháp và tổng hợp

Tạo sơ đồ nguyên lý RTL

Tạo sơ đồ nguyên lý công nghệ

RTL = Structural HDL Netlist: Bản mô tả thiết kế mạch dưới dạng text

19

Synthesis

UNISIM Library

library IEEE; use IEEE.STD_LOGIC_1164.ALL;

entity compare_module is Port

value: in std_logic_vector (3 downto 0); res : out std_logic);

end compare_module;

architecture Behavioral of compare_module is signal std : std_logic_vector (4 downto 0); begin val <= '0' & value;

process (val, std) begin

sub <= val - std; res <= sub(4);

end process;

end Behavioral;

20

Synthesis - netlist

Netlist: Bản mô tả thiết kế mạch dưới dạng text

library IEEE; library IEEE; use IEEE.STD_LOGIC_1164.ALL; library UNISIM; use UNISIM.VCOMPONENTS.ALL; use UNISIM.VPKG.ALL; entity sp3_led is

port (

LED1 : out STD_LOGIC; LED2 : out STD_LOGIC;

... ); end sp3_led; architecture Structure of sp3_led is signal SW8_IBUF_31 : STD_LOGIC; begin

LED81 : LUT2

generic map(

INIT => X"1"

) port map (

I0 => SW8_IBUF_31, I1 => SW7_IBUF_29, O => LED8_OBUF_15

);

...

21

Synthesis – RTL Schematic

22

Synthesis – Technology Schematic

23

Synthesis – UCF file (user constraint file): Thể hiện các ràng buộc thiết kế của mạch

# IO location defination NET "HIGH_voltage" LOC = P102; NET "LOW_voltage" LOC = P100; NET "voltage[0]" LOC = P160; NET "voltage[1]" LOC = P161; NET "voltage[2]" LOC = P162; NET "voltage[3]" LOC = P163; # Timing constraint INST "LOW_voltage" TNM = "OUT_REG"; INST "HIGH_voltage" TNM = "OUT_REG"; NET "voltage[0]" OFFSET = IN 2 ns VALID 0.5 ns BEFORE "CLK" TIMEGRP "OUT_REG" RISING; NET "voltage[1]" OFFSET = IN 2 ns VALID 0.5 ns BEFORE "CLK" TIMEGRP "OUT_REG" RISING; NET "voltage[2]" OFFSET = IN 2 ns VALID 0.5 ns BEFORE "CLK" TIMEGRP "OUT_REG" RISING; NET "voltage[3]" OFFSET = IN 2 ns VALID 0.5 ns BEFORE "CLK" TIMEGRP "OUT_REG" RISING;

24

Implementation (thực thi): Chuẩn bị dữ liệu cho việc cấu hình FPGA

Post-translate simulation model

Translate (Dịch)

Post-map simulation model

Mapping (Ánh xạ)

Implementation (Thực thi)

Post-map static Timing

Post-place-route static timing

Place & Route

Post-place-route simulation model

Place & Route (P & R): Đặt và định tuyến

2525

Translate (Dịch)

Synthesis

Constraint Editor

Circuit netlist

Timing Constraints

EDIF

NCF

UCF

User Constraint File (Ràng buộc do người dùng)

Translation

NGD

 Native Constraint File: File ràng buộc nguyên gốc  EDIF (Electronic Design Interchange Format): một dạng dữ liệu chung giữa các hãng để chứa thông tin netlist và schematic của mạch điện

 Native Generic Database file (.ngd): File cơ sở dữ liệu chung nguyên gốc

26

Mapping (Ánh xạ)

Ánh xạ các khối sơ đồ logic vào các khối cơ sở của FPGA  file .ncd

27

Place & Route: Đặt vào ví trí cụ thể trên FPGA

28

FPGA Verification (Kiểm tra thiết kế trên FPGA)

Verification

Function (Chức năng)

Timing (Thời gian, tốc độ)

On-circuit testing (trên mạch)

29

Tái cấu hình động trên FPGA

30

Giao thức truyền tin nối tiếp

3131

Máy trạng thái khối thu UART

32

Sơ đồ khối nhận UART

33

Kết quả mô phỏng trên modelsim

34

Khối giao tiếp VGA

35

Tín hiệu quét VGA

3636

Sơ đồ khối VGA

37

Khối NCO

 NCO (Numerically Controler Osillator): khối tổng hợp dao động, có khả năng tổng tạo ra dao động với tần số mong muốn một các trực tiếp bằng một vi mạch số tích hợp

38

Cơ sở toán học

39

Sơ đồ khối

40

Phase quantization

4141

Simulation wave-form

42