Лекция No 13 Синтезиране на ресурси в структурата на сгис от текстови описания на цифрови устройства



Дата18.11.2017
Размер86.47 Kb.
Размер86.47 Kb.

Проектиране на СГИС Лекция No 13

Синтезиране на ресурси в структурата на

СГИС от текстови описания на цифрови устройства.
Процесът на проектиране на цифрови устройства върху потребителски ориентирани свръхголеми интегрални схеми (ASIC) е значително производителен и гъвкав при използването на развойна система (автоматизирана програмна система) за проектиране. Такава система изисква като входни данни за нея да се създаде описание на устройството, което искаме да се реализира върху чипа. Използва се език за описание на хардуер (HDL). Често употребяван е езикът VHDL заради способностите му за деклариране на кодове и числа като стойности на сигнали, на операции с тях, а също така и заради процедурните му възможности.

На Фиг.3.1.е показана опростена диаграма със стъпките на проектиране на цифрови устройства върху ASIC с масково конфигуриране или електрическо конфигуриране (FPGA). Проектирането се извършва с помощта на развойна система.

Най-удобно е входното за системата описание чрез VHDL да бъде направено въз основа на изградения от проектанта модел на устройството на ниво на междурегистровите прехвърляния (RTL-модел). Това е ниво на описание с компоненти - регистри, аритметически и логически функционални възли, памети, буфери и шини, синхронизирани с тактови сигнали.

Системата за проектиране синтезира от това описание по определени правила абстрактна логическа и RTL-схема (в подчертания блок на Фиг.3.1). Схемата е изградена с компонентите на RTL-модела. В следващите стъпки на процеса на проектиране (разполагане и свързване в чипа) системата за проектиране синтезира и свързва тези компоненти на схемата върху чипа. Ще наричаме по-долу тези компоненти ресурси в структурата на чипа. В този смисъл синтезираните в структурата на СГИС RTL - ресурси (компоненти) от вида, описан по-горе, директно зависят от входното VHDL - описание.

VHDL - конструкцията, която присвоява стойност на сигнал в процес, стартиран по фронт на тактов сигнал, синтезира в структурата на СГИС регистър за сигнала, синхронизиран също по този фронт. В следващия текст този сигнал е R:

architecture Behavioral of ASIC_chip is

begin

signal R: std_logic_vector (15 downto 0);



process (CLK )

begin


if (CLK'event and CLK='1') then

R <= ... ;

end if;


end process;

end Behavioral;


Изложеният механизъм на генериране на регистър се прилага за синтезиране в СГИС на структури от регистри, използвани за запомняне на последователно постъпващи в чипа данни (стойности на сигнали), с цел цифрова обработка на сигнали или обработка на изображения. Най-често тези структури са от типа FIFO (First-In–First-Out – първи влязъл – първи излязъл от структурата). В по-долу представената VHDL–архитектура, такава структура е създадена чрез масива от сигнали R, който е от декларирания тип r_data:

architecture Behavioral of Fifo_top is

type r_data is array (511 downto 0) of std_logic_vector (15 downto 0);

signal R : r_data;

begin

fifo_proc: process(CLK)



begin

if(CLK'event and CLK='1') then

for I in 1 to 511 loop

R(I) <= R(I-1);

end loop;

R(0) <= DIN;

Q <= R(0)+ R(2);

end if;


P <= R(127) * R(255);

end process;

end Behavioral;

Структурата на описаното устройство е представена на Фиг. 3.2:



Фигура 3.2

Известно е, че развойните системи синтезират в структурата на СГИС функционални възли за реализация на операциите от VHDL– описанието.

Операторите за присвояване с независими по данни операции предизвикват синтезиране на паралелно работещи независими функционални възли, каквито са суматорът и умножителят в горното устройство на Фиг. 3.2. Те са синтезирани от операторите, присвояващи стойности на сигналите P и Q в последния текст на VHDL. Тъй като операторът за сигнала Q е включен в процеса, стартиран по фронта на CLK, а този за P - не, то само само за Q е синтезиран регистър в структурата.

Операторите за присвояване със зависими по данни операции предизвикват синтезиране на последователно свързани функционални възли. Следващият VHDL-процес включва такива оператори:

process (CLK )

begin


if (CLK'event and CLK='1') then

M <= A*B;

S <= M + C;

end if;


end process;

Структурата на описаното устройство е представена на Фиг. 3.3 .

При положение, че не желаем в структурата да се се синтезира регистър за резултата от първата операция и аргумент на втората (сигналът М), в процеса на негово място се декларира и използува променлива (VARM):

process (CLK )

variable VARM : std_logic_vector(15 downto 0);

begin


if (CLK'event and CLK='1') then

VARM := A*B;

S <= VARM + C;

end if;


end process;

Структурата на описаното устройство е представена на Фиг. 3.4 .

Друга възможност е , ако в процеса не ни е необходим в следващ оператор междинният резултат от първата операция, да запишем изчисленията в общ оператор за присвояване:

S <= A * B + C.



Фигура 3.3 Фигура 3.4

Следващият пример илюстрира синтезирането на регистри и функционални възли в структурата на СГИС (FPGA) при проектиране чрез развойна система WebPACK на реално цифрово устройство – цифров филтър с крайна импулсна характеристика и 8 коефициента. VHDL – текстът с поведенческата архитектура е:

entity filter_top is

port (X : in std_logic_vector(15 downto 0);

C : in std_logic_vector(15 downto 0);

Y : out std_logic_vector(31 downto 0);

CLK : in std_logic;

RESET : in std_logic);

end filter_top;
architecture Behavioral of filter_top is

type CO is array (7 downto 0) of std_logic_vector (15 downto 0);

type MULT is array (7 downto 0) of std_logic_vector (31 downto 0);
signal MO : MULT;--регистри с резултатите от умножението

signal MREG : MULT; --регистри с резултатитте от събирането

signal COEFF : CO; --регистри с коефициентите на филтъра
begin

load_coeff : process (CLK, RESET)

begin

if ((RESET = '1') and (CLK = '1' and CLK'event))then



for I in 1 to 7 loop

COEFF(I) <= COEFF(I-1);

end loop;

COEFF(0) <= C;

end if;

end process;



pipeline1: process(CLK)

begin


if (CLK = '1' and CLK'event) then

for I in 0 to 7 loop

MO(I) <= COEFF(I)* X;

end loop;

end if;

end process;



pipeline2 : process (CLK)

begin


if (CLK = '1' and CLK'event) then

for I in 2 to 7 loop

MREG(I) <= MREG(I-1) + MO(I);

end loop;

MREG(1) <= MO(0) + MO(1);

end if;


Y <= MREG(7);

end process;

end Behavioral;

От първия процес в архитектурата с име load_coeff се синтезират 8 16 – разрядни регистъра за сигналите от масива COEFF. От втория процес (pipeline1) в структурата на СГИС се синтезират други 8 броя 32 – разрядни регистъра за сигналите от масива MO и 8 умножителя. От третия процес (pipeline2) се синтезират нови 7 броя 32 – разрядни регистъра за сигналите от MREG(1) до MREG(7) и 7 суматора. За изходния сигнал на устройството Y не се синтезира допълнителен регистър, тъй като операторът, който му присвоява стойност не се стартира в процеса по нарастващия фронт на тактовия сигнал CLK.

За потвърждение на действието на изтъкнатите по-горе правила за синтезиране на ресурси от VHDL – описания на Фиг. 3.5 е приведен рапортът на програмата за синтезиране на абстрактна RTL – схема на развойната система WebPACK за горния пример. Рапортът показва очаквания брой на различните синтезирани регистри и функционални възли в структурата на схемата. (В него генерираните 8 регистри за масива MO са прикрепени към изходите на умножителите (16x16-bit registered multiplier)).

=============================================

HDL Synthesis Report

Macro Statistics

# Registers : 15

16-bit register : 8

32-bit register : 7

# Adders/Subtractors : 7

32-bit adder : 7

# Multipliers : 8

16x16-bit registered multiplier : 8

=============================================

Фигура 3.5
Друга програма от развойната система за проектиране, наречена Floorplanner, показва графично конфигурируемите логически блокове, умножители и памети на използвания FPGA – чип и заетите от тях за реализация на проектираното цифрово устройство (след решаване от развойната система на задачата за разполагане и свързване в чипа на синтезираните ресурси – според блоковата схема на Фиг. 3.1).

За разглеждания тук пример на цифров филтър реализацията на устройството върху FPGA – чип xc2v80 от фамилията VirtexII на Xilinx е показана на Фиг. 3.6. Върху изображението на чипа чипа могат да бъдат открити синтезираните регистри, 8 – те умножителя и 7 – те суматора, отбелязани за реализация на цифровия филтър с 8 коефициента.



Фигура 3.6

Развойните системи разпознават определени поведенчески конструкции в текста на VHDL и от тях синтезират възли или блокове на RTL - ниво в структурата на СГИС – мултиплексери, дешифратори, памети, регистри (за които се говори по-горе). Тези възли или блокове са библиотечни елементи за системите. Тяхното синтезиране е улеснено, защото в библиотеките на системите за тях се съдържат готови решения – описания в резултат на логическо, електрическо, топологическо проектиране.

Следващият пример е с поведенческа VHDL – архитектура с два процеса, за първия от които (с име mux) се синтезира мултиплексор “2 към 1”. Това е така, защото развойната система разпознава, че в зависимост от стойността на управляващ сигнал (C) изходният сигнал Y приема стойността на един или друг входен сигнал (A или B)..

За втория процес (с име dec и конструкция case) се извършва от развойната система логическо и електрическо проектиране на някаква цифрова схема, функционираща според описанието от процеса. Ако първият присвояван код от сигнала D_OUT, обаче е не "1001", (както е в текста на примера), а "0001", развойната система ще разпознае и синтезира дешифратор “1 от 4” от конструкцията.

Общо генерираната RTL – схема от разглежданата архитектура е дадена на Фиг. 3.7, а рапортът за извършения синтез от развойна система – на Фиг.3.8.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity sintez_top is

port(


C : in STD_LOGIC;

A : in STD_LOGIC_VECTOR(7 downto 0);

B : in STD_LOGIC_VECTOR(7 downto 0);

D_IN: in STD_LOGIC_VECTOR(1 downto 0);

D_OUT: out STD_LOGIC_VECTOR(3 downto 0);

Y : out STD_LOGIC_VECTOR(7 downto 0)

);

end sintez_top;



architecture Behavioral of sintez_top is

begin


mux: process (C, A, B)

begin


if C = '0' then

Y <= A;


else

Y <= B;


еnd if;

end process;

dec: process(D_IN)

begin


case D_IN is

when "00" => D_OUT <= "1001";

when "01" => D_OUT <= "0010";

when "10" => D_OUT <= "0100";

when "11" => D_OUT <= "1001";

when others => NULL;

end case;

end process;

end Behavioral;


Фигура 3.7
========================================================

HDL Synthesis Report

Macro Statistics

# Multiplexers : 1

2-to-1 multiplexer : 1

# Decoders : 1

1-of-4 decoder : 1

=========================================================

Фигура 3.8


Следващият пример илюстрира синтезирането на ресурси в структурата на FPGA - чип от VHDL – описание на цифрово устройство със структурна архитектура. Устройството multadd, което е описано чрез следващия VHDL – текст, изпълнява умножение и сумиране на 16 – разрядни двоични числа.

entity multadd is

port (A : in std_logic_vector (15 downto 0);

B : in std_logic_vector (15 downto 0);

C : in std_logic_vector (15 downto 0);

Y : out std_logic_vector (35 downto 0);

CLK : in std_logic;

RESET : in std_logic);

end multadd;
architecture Structural of multadd is

component reg16

port (DIN: in std_logic_vector (15 downto 0);

DOUT: out std_logic_vector (15 downto 0);

CLK: in std_logic;

RESET: in std_logic);

end component;

component reg36

port (DIN: in std_logic_vector (35 downto 0);

DOUT: out std_logic_vector (35 downto 0);

CLK: in std_logic;

RESET: in std_logic);

end component;

component adder

port (OPERAND1, OPERAND2 : in std_logic_vector (35 downto 0);

RESULT : out std_logic_vector (35 downto 0));

end component;

component MULT18X18

port (A: in STD_LOGIC_VECTOR (17 downto 0);

B: in STD_LOGIC_VECTOR (17 downto 0);

P: out STD_LOGIC_VECTOR (35 downto 0) );

end component;


signal OUT_A, OUT_B, OUT_C, OUT_C_1 : std_logic_vector (15 downto 0);

signal OUT_A_1, OUT_B_1 : std_logic_vector (17 downto 0);

signal OUT_M, OUT_ADD, OUT_M_2, OUT_C_2 : std_logic_vector

(35 downto 0);


begin

reg_A: reg16 port map (DIN => A, DOUT => OUT_A, CLK => CLK,

RESET => RESET);

reg_B: reg16 port map (DIN => B, DOUT => OUT_B, CLK => CLK,

RESET => RESET);

reg_C: reg16 port map (DIN => C, DOUT => OUT_C, CLK => CLK,

RESET => RESET);

multy: MULT18x18 port map (A => OUT_A_1, B => OUT_B_1,

P => OUT_M);

reg_MUL: reg36 port map (DIN => OUT_M, DOUT => OUT_M_2,

CLK => CLK, RESET => RESET);

reg_C_2: reg16 port map (DIN => OUT_C, DOUT => OUT_C_1,

CLK => CLK, RESET => RESET);

add: adder port map (OPERAND1 => OUT_M_2, OPERAND2 => OUT_C_2,

RESULT => OUT_ADD);

reg_out: reg36 port map (DIN => OUT_ADD, DOUT => Y, CLK => CLK,

RESET => RESET);

OUT_A_1 <= “00” & OUT_A;

OUT_B_1 <= “00” & OUT_B;

OUT_C_2 <= x”00000” & OUT_C_1;

end Structural;

Принципът на синтезиране на ресурси от структурна архитектура е прост – при всяко включване на компонент в архитектурата в структурата на СГИС се синтезират ресурсите за този компонент. Така за разглеждания пример се генерират 4 броя 16 – разрядни регистри (компонент reg16), 2 броя 36 – разрядни регистри (компонент reg36), 36 – разряден суматор (компонент adder) и 18 – разряден умножител (компонент MULT18X18). Структурата на устройството е представена на фиг. 2.16.

На Фиг.3.9 са показани синтезираните ресурси в структурата на FPGA – чипа (за примера чипът е xc2v40 от фамилията VirtexII).

Фигура 3.9









Сподели с приятели:


©zdrasti.info 2017
отнасят до администрацията

    Начална страница