Bài giảng Thiết kế logic số: Lecture 3.2 trình bày về Cấu trúc FPGA. Nội dung cụ thể của chương này gồm có: 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ế.
Trang 1TS Hoàng Văn Phúc
Bộ môn KT Xung Số-Vi xử lý
11/2014
Thiết kế logic số (VLSI design)
https://sites.google.com/site/phucvlsi/teaching
Trang 2Nội dung
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
Trang 3Nhắc lại về FPGA: Cấu trúc cơ bản
3
LOGIC BLOCK LOGIC BLOCK ……… LOGIC BLOCK
LOGIC BLOCK LOGIC BLOCK ……… LOGIC BLOCK
LOGIC BLOCK LOGIC BLOCK ……… LOGIC BLOCK
Interconnect wires
Trang 4Tái cấu hình cho FPGA
SRAM-based:
Trang 5Hoạ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
Trang 6Kiến trúc của Configurable Logic Blocks (CLBs)
Mỗi CLB bao gồm:
Trang 7Hệ thống nhúng (embedded system) trên FPGA
Source: Internet 7
System on board
System on chip
(SoC)
Trang 8ASIC (Application Specific Integrated Circuit) và
FPGA (Field Programmable Gate Array)
Chức năng cố định Người dùng có thể định lại
cấu hình cho thiết kế Thời gian thiết kế dài và
Trang 9Qui trình thiết kế với FPGA và ASIC
9
Trang 10 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)
cần cho thiết kế
trong một đơn vị thời gian
Đánh giá một thiết kế trên FPGA
Trang 11Qui trình thiết kế trên FPGA (Tổng quan)
Trang 12Qui trình thiết kế trên FPGA (chi tiết)
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…
Library IEEE;
use ieee.std_logic_1164 all ;
use ieee.std_logic_unsigned all ;
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;
Specification (Mô tả bài toán)
Mô tả VHDL (Source Files) hoặc sơ đồ mạch logic
Functional simulation(Mô phỏng chức năng)
Post-synthesis simulation(Mô phỏng sau tổng hợp)Synthesis
(Tổng hợp)
Trang 13On board testing(Kiểm tra trên mạch)
Qui trình thiết kế trên FPGA (chi tiết)
13
Trang 14Technology mapping (Ánh xạ công nghệ)
cứng cụ thể của FPGA
Trang 15Technology mapping (tiếp)
15
Trang 16Phầ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 …
Trang 17Các thành phần chính của Xilinx ISE Suite
tự modelsim)
C++
17
Trang 18VHDL vs Schematic
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;
Trang 19model) (optional)
Create Technology schematic (optional)
Create RTL schematic(optional)
Netlist: Bản mô tả thiết kế mạch dưới dạng text
Trang 20library 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);
UNISIM Library
Trang 21LED1 : out STD_LOGIC;
LED2 : out STD_LOGIC;
);
end sp3_led;
architecture Structure of sp3_led is
signal SW8_IBUF_31 : STD_LOGIC;
Trang 22Synthesis – RTL Schematic
Trang 23Synthesis – Technology Schematic
23
Trang 24Synthesis – 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;
Trang 25Mapping(Ánh xạ)
Post-map simulation modelPost-map static Timing
Trang 26Translate (Dịch)
Translation
UCF EDIF NCF
Trang 27Mapping (Ánh xạ)
Ánh xạ các khối sơ đồ logic vào các khối cơ sở của
FPGA file ncd
27
Trang 28Place & Route: Đặt vào ví trí cụ thể trên FPGA
Trang 29FPGA 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
Trang 30Tái cấu hình động trên FPGA
Trang 31Giao thức truyền tin nối tiếp
IDLE START DATA PARITY STOP IDLE
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 15
14 13
SAMPLE RX
Tbraud
31 31
Trang 32Máy trạng thái khối thu UART
IDLE
START FRAME DETECTOR
RECEIVE
DATA
CNT16 = 8 and RX = 1
RX = 0, Rx_Reg = 1 (Fall_edge) CNT_BIT = 8
Trang 33Sơ đồ khối nhận UART
CNT RESET ENABLE
CNT RESET ENABLE
Trang 34Kết quả mô phỏng trên modelsim
Trang 35Khối giao tiếp VGA
35
Trang 36Tín hiệu quét VGA
Trang 37Sơ đồ khối VGA
HORIZONTAL COUNTER
VERTICAL COUNTER
DCM_BLOCK (optional)
CHARACTER_
ROM (optional)
DATA_RAM (optional)
RGB GENERATOR
HS
VS
R G B
DCM_CLK CLK_IN
37
Trang 38Khố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
Trang 39Cơ sở toán học
39
Trang 40Sơ đồ khối
Trang 41Phase quantization
Trang 42Simulation wave-form