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