Проектиране на сгис упражнение No 6



Дата22.03.2017
Размер176.78 Kb.
#17524

Проектиране на СГИС Упражнение No 6

Проектиране, симулиране и изследване на конвейерни аритметични устройства върху свръхголеми FPGA - чипове
В това упражнение се създава проект, в който се проектира и имплементира върху FPGA - чип цифрово устройство с конвейерна структура, извършващо аритметичните операции Y(i) = A(i) * B(i) + C(i), където операндите и резултатът са двоични числа, едноименни членове на едномерни масиви. Структурата на устройството е показана по-долу. Проектът се допълва с устройство (краен автомат) за тестване на имплементираното устройство.



Извършете проектирането и имплементирането на управляващото устройство с помощта на развойната среда в следната последователност:
1. Създайте с помощта на Project Navigator на Xilinx ISE 9.21 нов проект с име Pipeline09 в работната папка на вашата учебна група, с параметри на проекта:



2. Създайте главен source - модул на проекта с име Pipeline, съдържащ описанието на структурата на проектираното устройство на език VHDL. За тази цел изпълнете от главното меню на Project navigator:

Project => New Source…


В отворилия се прозорец “New Source Wizard – Select Source Type” изберете тип на модула: VHDL Module , а във полето “File name” въведете името на файла , който ще съдържа този модул : Pipeline:

В следващия се отворил прозорец – “New Source Wizard – Define Module” въведете името на архитектурата на този модул - Structural

-В прозореца за редактиране на текст Project navigator извежда текстовата рамка на създадения VHDL – модул.(Pipeline.vhd).
- Изтрийте текстовата рамка и въведете от текста на упражнението VHDL – описанието на проектираното устройство:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

Library UNISIM;

use UNISIM.Vcomponents.all;
entity pipeline 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 pipeline;


architecture Structural of pipeline 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;

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;

3.. Разгледайте текста на модула. В архитектурата са декларирани три компонента в устройството pipeline : reg16, reg36, adder, представящи типовете елементи (блокове) на структурата. Четвъртият компонент (умножител с 18- разрядни операнди MULT18X18) не е деклариран, въпреки че е използван в структурата на устройството. Той, обаче, под същото име е дефиниран в библиотеката Library UNISIM на Project Navigator.


Запишете новия текст на модула във файла pipeline.vhd (File => Save…) или:

В прозореца Sources in Project под главния модул след разширяване се появяват подсказвания за необходимо включване в проекта на описания на трите изброени по-горе компонента на структурата reg16, reg36, adder в самостоятелни модули, подчинени на главния (pipeline.vhd):

4. Създайте в проекта като нови source модули, VHDL-модулите adder.vhd, reg16.vhd, reg36.vhd, описващи компонентите на структурата като самостоятелни устройства със същите имена и входноизходни сигнали, както в съответните декларации на компонентите в главния модул.

Модулите имат следния текст:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity adder is

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

RESULT : out std_logic_vector (35 downto 0));

end adder;

architecture Behav0 of adder is

begin


RESULT <= OPERAND1 + OPERAND2;

end Behav0;


-На модула reg16.vhd, описващ 16- разряден регистър от структурата с архитектура Behav1:
library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity reg16 is

port (CLK: in std_logic;

RESET: in std_logic;

DIN: in std_logic_vector(15 downto 0);

DOUT: out std_logic_vector(15 downto 0) );

end reg16;

architecture Behav1 of reg16 is

begin


process (CLK, RESET)

begin


if RESET='1' then

DOUT <= x"0000";

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

DOUT <= DIN;

end if;

end process;



end Behav1;
-На модула reg36.vhd, описващ 36-разряден регистър от структурата с архитектура Behav2:
library IEEE;

use IEEE.STD_LOGIC_1164.ALL;


entity reg36 is

port (CLK: in std_logic;

RESET: in std_logic;

DIN: in std_logic_vector(35 downto 0);

DOUT: out std_logic_vector(35 downto 0) );

end reg36;

architecture Behav2 of reg36 is

begin


process (CLK, RESET)

begin


if RESET='1' then

DOUT <= (others => '0');

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

DOUT <= DIN;

end if;

end process;



end Behav2;

В прозореца Sources in Project на местата на въпросителните би трябвало да се появят след имената на устройствата и имената на архитектурите им - в скоби преди горните имена на модулите.



5.. Изпълнете процесите на проектиране на устройството. За тази цел:

5.1. В прозореца Processes (при избран главен модул pipeline в прозореца Sources и в режим за този прозорец Synthezis/Implementation) двойно кликнете върху последния процес: Generate Programmilng File

Project Navigator ще изпълни всички процеси на проектиране в необходимата последователност.

5.2. Проверете като резултат от проектирането синтезираната първоначално абстрактна цифрова схема чрез двойно кликване на Synthesize -> View RTL Scematics и влизане в по-ниските нива на схемата.

5.3. Отчетете параметрите на проектираното устройство, отнасящи се до очакваното му бързодействие – минимален период на тактовия сигнал (Minimum period) , респективно максимална допустима честота (Maximum Frequency) - в Synthesize –> View Synthesis Report.

5.4. Проверете разположението на използваните блокове от FPGA-чипа чрез програмата Floor Planer - двойно кликване на Implement Design->Place&Route->View/Edit Placed Design (стартиране на програмата Floor Planner) в прозореца Processes (при избран модул pipeline в прозореца Sources ).


На схемата се отбелязва например използвания за устройството съществуващ в структурата на FPGA - чипа 18- разряден умножител и синтезирания от конфигурируеми логически блокове 36 – разряден суматор:

6. Включете в проекта нов модул (чрез командите Project => New Source…) от тип Test Bench Waveform, с име на модула например testpipe, който служи за задаване на стимули (стойности във времето на входните сигнали) за бъдещата симулация на проектираното устройство.

6.1. Укажете чрез прозореца New Source Wizard – Associate Source, че този модул трябва да бъде подчинен (асоцииран) с главния VHDL-модул , описващ архитектурата на устройството – а именно pipeline.

6.2. Задайте в прозореца Initialize Timing като параметри на симулацията период на тактовия сигнал 100ns (Clock High Time = 50 ns, Clock Low Time = 50 ns), моменти на промяна и отчитане на стойностите на сигналите спрямо нарастващия фронт на тактовия сигнал – Input Setup Time = 3 ns, Output Valid Delay = 2 ns, активен Rising Edge.


6.3. Задайте продължителността на интервала от време за симулация (чрез Initial Length of Test Bench) да бъде 1000 ns.

6.4. Преобразувайте за по-голямо удобство в показалия се прозорец с времедиаграми на testpipe стойностите на сигналите да се показват като десетични числа – чрез кликване върху времедиаграма с десен бутон и съответен избор от отворилото се контексно меню:



6.5. Задайте няколко набора от стойности на входните сигнали (А, В, С) в съседни тактови периоди и подходящи стойности на управляващия сигнал RESET, за да функционира устройството. Нова стойност на входен сигнал, който не е едноразряден, се задава крез кликване с ляв бутон в съответния периoд на таковия сигнал на времедиаграмата и въвеждане на стойността чрез прозореца Set Value:

След въвеждане на стойностите на входните сигнали, прозорецът за редактиране за модула от тип Test Bench Waveform би трябвало да изглежда по принцип така:

6.6. Изпълнете Save за съдържанието на този модул.

7. Стартирайте симулатора Xilinx ISE Simulator. За тази цел при режим на работа Post-Route Simulation в прозореца Sources и активен модул testpipe в същия прозорец изпълнете от прозореца Process командата Simulate Post-Place&Route Model.

Прозорецът с резултати от работата на симулатора би трябвало да изглежда така:



7.1. Проверете от времедиаграмите на горния прозорец дали устройството функционира правилно в конвейерен режим.

7.2. Измерете закъснението, с което се появяват новите стойности на изходните сигнали на устройството след нарастващия фронт на тактовия сигнал чрез команди Zoom+ и Simulation => Markers => Measure Marker :

7.3. Прекратете работата на симулатора.
Ще доизградим досега създадения проект, като към конвейерното аритметично устройство pipeline в проектираната система ще добавим първоначално още две устройства: testmachine и indicator.
А) Устройството testmachine представлява краен автомат за тестване на досега проектираното изчислително устройство pipeline; То подава на входовете на pipeline аргументи за изчислението, изчаква необходимия брой тактови периоди за получаване на резултата на изхода на pipeline , проверява дали полученият резултат е верен и ако е така, установява в единица тригер (вдига флаг), отчитащ резултата от тестването.

В) Устройство – схема за светлинна индикация indicator, показваща чрез примигване на светодиоди, че тестването на изчислителното устройство е извършено от крайния автомат и резултатите от тестването са валидни.
Блоковата схема на проектираната система ще изглежда така:

Включете нов главен source - модул в проекта с име fsm3.vhd, съдържащ описанието на структурата на показаната по-горе система.


8. Включете в проекта модула fsm3.vhd от папката С/Examples чрез командите Project => Add Copy of Source…). В прозореца Add Copies of existing sources намерете папката C/Examples…, в нея изберете модула fsm3 и чрез бутона Open го включете в проекта.

VHDL – текстът на модула fsm3.vhd е показан по-долу.


library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

Library UNISIM;

use UNISIM.Vcomponents.all;
entity fsm3 is

port ( CLK, TESTMODE : in std_logic;

START : in std_logic ;

INDSTATE : out std_logic_vector (3 downto 0);

OKforCALC, OKforRESET : out std_logic;

Indy, nIndy : out std_logic ;

A : inout std_logic_vector (15 downto 0);

Y : inout std_logic_vector (35 downto 0) );

end fsm3;

architecture struct of fsm3 is


component testmachine

port ( CLK : in std_logic;

START : in std_logic;

TESTMODE : in std_logic;

INDSTATE : out std_logic_vector (3 downto 0);

Y : in std_logic_vector (35 downto 0);

A, B, C : out std_logic_vector (15 downto 0);

OKforCALC, OKforRESET : out std_logic;

ResetIndy, ResetCalc : out std_logic );

end component;

component pipeline

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 component;


component Indicator

port ( RESET : in std_logic;

CLK_IN : in std_logic;

Indy : out std_logic;

nIndy : out std_logic );

end component;


-- signal A : std_logic_vector (15 downto 0);

signal B : std_logic_vector (15 downto 0);

signal C : std_logic_vector (15 downto 0);

signal ResetIndy : std_logic;

signal ResetCalc : std_logic;
begin
tst: testmachine port map (CLK => CLK, START => START, TESTMODE => TESTMODE,

Y => Y, INDSTATE => INDSTATE, A => A, B => B, C => C,

ResetIndy => ResetIndy, ResetCalc => ResetCalc,

OKforCALC => OKforCALC, OKforRESET => OKforRESET);

pipe: pipeline port map (A => A, B => B, C => C, Y => Y, CLK => CLK, RESET => ResetCalc );
Indic: Indicator port map (RESET => ResetIndy, CLK_IN => CLK, Indy => Indy, nIndy => nIndy);
end struct;

9. Включете в проекта нов source VHDL – модул testmachine.vhd .

За тази цел изпълнете от главното меню на Project navigator: Project => New Source… и въведете в прозореца на Project Navigator името (testmachine) и типа (VHDL module) на модула.


Този модул описва чрез поведенческа архитектура поведението на крайния автомат testmachine за тестване на работата на изчислителното устройство pipeline.

VHDL – текстът му е показан по-долу.


Графът на преходите и изходите на крайния автомат също е показан по-долу.
Накратко той функционира по следния начин:
Когато не е стартиран да извършва тестване, крайният автомат се намира в състояние s0.

След стартиране от сигнал Start = ‘1’, в зависимост от сигнала TestMode автоматът тества изчислителното устройство по два начина:

А) При TestMode =1, крайният автомат установява (в състояние s1) на входовете на изчислителното устройство сигналите за аргументи А = 3, В = 5, С = 4 , изчаква три тактови периода (в състоянията s2, s3, s4) и в състояние s9 проверява дали на изхода на изчислителното устройство се е установил резултатът 19. Ако е така, автоматът индицира (чрез изходния си сигнал OKforCALC = ‘1’), че устройството изчислява правилно и разрешава светлинната индикация чрез ResetIndy = ‘0’.
Б) При TestMode =0, крайният автомат установява (в състояние s5) сигнала ResetCALC = ‘1’, с което нулира входните регистри на изчислителното устройство , изчаква три тактови периода (в състоянията s6, s7, s8) и в състояние s9 проверява дали на изхода на изчислителното устройство се е установил резултат 0. Ако е така, автоматът индицира (чрез изходния си сигнал OKforRESET = ‘1’), че устройството работи правилно в този режим и отново разрешава светлинната индикация чрез ResetIndy = ‘0’.


Граф на преходите и изходите на крайния автомат testmachine

- Изтрийте текстовата рамка и въведете от текста на упражнението VHDL – описанието на модулa testmachine.vhd :

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity testmachine is

port ( CLK : in std_logic;

START : in std_logic;

TESTMODE : in std_logic;

INDSTATE : out std_logic_vector (3 downto 0);

Y : in std_logic_vector (35 downto 0);

A, B, C : out std_logic_vector (15 downto 0);

ResetIndy, ResetCalc : out std_logic;

OKforCALC : out std_logic;

OKforRESET : out std_logic );

end testmachine;
architecture Behavioral of testmachine is

type state_type is (s0,s1,s2,s3,s4,s5, s6, s7, s8, s9);

signal state , nextstate : state_type ;

begin
process1: process (CLK,START)

begin

if (START ='0') then state <=s0;



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

state <= nextstate;

end if;

end process process1;



process2: process (state, TESTMODE)

begin


case state is

when s0 => if TESTMODE='1' then

nextstate <= s1;

else


nextstate <= s5;

end if;


when s1 => nextstate <= s2;

when s2 => nextstate <= s3;

when s3 => nextstate <= s4;

when s4 => nextstate <= s9;

when s5 => nextstate <= s6;

when s6 => nextstate <= s7;

when s7 => nextstate <= s8;

when s8 => nextstate <= s9;

when s9 => nextstate <= s9;

end case;


end process process2;
process3 : process (state)

begin


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

case state is

when s0 => INDSTATE <= "0000"; ResetCalc <= '0';OKforCALC <= '0';OKforRESET <= '0';

ResetIndy <= '1';A <= x"ffff"; B <= x"ffff"; C <= x"ffff";

when s1 => INDSTATE <= "0001";

A <= x"0003"; B <= x"0005"; C <= x"0004";

when s2 => INDSTATE <= "0010";

when s3 => INDSTATE <= "0011";

when s4 => INDSTATE <= "0100";

when s5 => INDSTATE <= "0101"; ResetCalc <= '1';

when s6 => INDSTATE <= "0110";

when s8 => INDSTATE <= "1000";

when s7 => INDSTATE <= "0111";
when s9 => INDSTATE <= "1001"; ResetIndy <= '0';

if TESTMODE = '0' then

if Y = "000000000" then OKforRESET <= '1';

end if;


else

if Y = x"000000013" then OKforCALC <= '1';

end if;

end if;


end case;

end if;


end process process3;

end Behavioral;


10. Включете в проекта нов source VHDL – модул Indicator.vhd . За тази цел изпълнете от главното меню на Project navigator: Project => New Source… и въведете в прозореца на Project Navigator името (Indicator) и типа (VHDL module) на модула.
Този модул описва чрез поведенческа архитектура поведението на схемата за светлинна индикация, показваща, че крайният автомат е завършил тестването на устройството. Схемата на практика представлява брояч – делител на честотата на входния синхросигнал за системата CLK.
- Изтрийте текстовата рамка и въведете от текста на упражнението VHDL – описанието на модулa Indicator.vhd :
library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity Indicator is

port (RESET : in std_logic;

CLK_IN : in std_logic;

Indy : out std_logic;

nIndy : out std_logic);

end Indicator;


architecture Behavioral of Indicator is
signal Q : STD_LOGIC_VECTOR (22 DOWNTO 0);

begin


process ( RESET, CLK_IN )

begin


if RESET = '1' then Q <= (others => '0');

elsif CLK_IN'event AND CLK_IN = '1'

then Q <= Q + 1 ;

end if;


Indy <= Q(22);

nIndy <= not Q(22);

end process;

end Behavioral;


След въвеждането в проекта на новите source – модули, прозорецът Sources, отразяващ списъка и йерархията им, ще изглежда така:

11. Изпълнете процесите на проектиране на системата (от прозореца Processes ) при активен главен модул fsm3 в прозореца на source – модулите.
12. Симулирайте функционирането на проектираната система в двата режима на работа на тестващия краен автомат. За тази цел:

12.1. Добавете в проекта модул (файл) за управление на симулацията testfsm3.vhd, като изпълните команди Project => New Source … и от прозореца New Source изберете тип на модула Test Bench Waveform, въведете името на модула и укажете, че ще бъде асоцииран към главния VHDL - модул на проекта fsm3. Параметрите на синхронизиращия сигнал CLK да са както тези, представени по-горе в текста на упражнението.

12.2. В прозореца за времедиаграми на модула Test Bench Waveform въведете показаните по-долу времедиаграми на входните сигнали START и TESTMODE (в началото START = ‘0’, с което тестващият автомат застава в начално състояние s0, след това START <= ‘1’, с което тестващият автомат започва проверка на изчислителното устройство , TESTMODE = 1):

Стартирайте симулатора Xilinx ISE Simulator в режим Post-Route Simulation.
Времедиаграмите от функционирането на системата в прозореца за времедиаграми на симулатора би трябвало да изглеждат, както е показано по-долу:



При TestMode =1, крайният автомат установява (в състояние s1 => INDSTATE = 0001) на входовете на изчислителното устройство сигналите за аргументи А = 3, В = 5, С = 4 , изчаква три тактови периода (в състоянията s2, s3, s4) и в състояние s9 (INDSTATE = 1001) проверява дали на изхода на изчислителното устройство се е установил резултатът 19. Ако е така, автоматът индицира (чрез изходния си сигнал OKforCALC = ‘1’), че устройството изчислява правилно.
12.3. Прекратете работата на симулатора. Променете времедиаграмите на входните сигнали в модула Test Bench Waveform така, че да се симулира функционирането на системата при TESTMODE = 0 (както е показано по-долу). Стартирайте отново симулатора.

Времедиаграмите от функционирането на системата в този случай би трябвало да изглеждат, както е показано по-долу:

При TestMode =0, крайният автомат установява (в състояние s5) сигнала ResetCALC = ‘1’, с което нулира входните регистри на изчислителното устройство , изчаква три тактови периода (в състоянията s6, s7, s8) и в състояние s9 проверява дали на изхода на изчислителното устройство се е установил резултат 0. Ако е така, автоматът индицира (чрез изходния си сигнал OKforRESET = ‘1’), че устройството работи правилно в този режим.
13. За да се провери работата на проектираната система, реализирана върху FPGAчип от развойна платка, включително и да се проследи смяната на състоянията на крайния автомат при тестването, трябва да се използват за синхронизация импулсите на тактовия генератор на платката и тъй като честотата им е 50Mhz, тази честота трябва да се намали значително. За тази цел ще се включи в структурата на системата брояч - делител на честотата на тези тактови импулси.

Декларацията на брояча трябва да се включи като декларация на нов компонент с име ClockDivider в декларативната част на архитектурата на главния модул fsm3.vhd:

component ClockDivider

Port ( CLK : in STD_LOGIC;

ClkDiv : out STD_LOGIC );

end component;


Сигналът с намалена честота (1-2 Hz) с име например InternalCLK, генериран от изхода на ClockDivider, ще бъде вътрешен за архитектурата на fsm3 и трябва да бъде деклариран също в декларативната й част като:

signal InternalCLK : std_logic;


В блока на архитектурата на fsm3 трябва да се включи новия компонент ClockDivider :
div : ClockDivider port map (CLK => CLK, CLKDiv => InternalCLK);
Във включванията на компонентите testmachine и pipeline трябва да се смени входния им тактов сигнал CLK, който е входен за цялата система и идва от тактовия генератор, с вътрешния сигнал с намалена честота InternalCLK :
tst: testmachine port map (CLK => InternalCLK, START => START, TESTMODE => TESTMODE,

Y => Y, INDSTATE => INDSTATE, A => A, B => B, C => C, ResetIndy => ResetIndy, ResetCalc => ResetCalc, OKforCALC => OKforCALC, OKforRESET => OKforRESET);

pipe: pipeline port map (A => A, B => B, C => C, Y => Y, CLK => InternalCLK, RESET => ResetCalc );
14. И на края е необходимо в проекта да се включи нов source – модул, описващ като самостоятелно устройство компонента ClockDivider с текст:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity ClockDivider is

Port ( CLK : in STD_LOGIC;

ClkDiv : out STD_LOGIC );

end ClockDivider;
architecture Behavioral of clockDivider is

signal COUNT: STD_LOGIC_VECTOR (28 downto 0) ;

begin

process (CLK)



begin

if CLK'event and CLK = '1' then

COUNT <= COUNT + 1;

end if;


end process;

ClkDiv <= COUNT(26);

end Behavioral;
След като направите горните промени в проекта, укажете необходимо разположение на входно-изходните сигнали на системата върху изводите на чипа, така че да се използват светодиоди, ключове ,бутони и тактов генератор от платката. За тази цел:

15. Добавете в проекта нов модул с име BasicUCF от тип Implementation Constraints File, асоциирайте го с главния модул на проекта fsm3, активирайте го и стартирайте от прозореца Processes командата Assign Package Pins.

В прозореца на стартиралата се програма PACE попълнете следната таблица:

Изпълнете Save за тази информация във файла BasicUCF.ucf, след което стартирайте наново процесите на проектиране на системата върху FPGA - чипа.

Пълният списък на source – модули в проекта трябва да изглежда така:



16. Конфигурирайте FPGA - чипа върху развойната платка, като запишете в него получения от развойната среда файл за конфигуриране fsm3.bit с помощта на програмата ExPort. Проверете работата на проектираното и имплементирано върху чипа устройство.
Според въведените данни в горната таблица, стойностите на входните и изходните сигнали на имплементираната върху FPGA - чипа система се въвеждат от ключовете и се индицират от светодиодите на развойната платка Basis, както е показано на следващата схема:








Каталог: KST%202%20kurs%20Mag -> 2%20sem -> PSGIS -> Uprajneniq
PSGIS -> Лекция No 5 Преглед на архитектурните и схемотехнически особености на съвременните fpga чипове
PSGIS -> Лекция №4 Проектиране на сгис памети в компютърните системи архитектура, логически и схемотехнически характеристики
Uprajneniq -> Упражнение №1, 2009
PSGIS -> Лекция No7 Основни типове данни и операции при vhdl описания на цифрови устройства. Реализа
PSGIS -> Стъпки в процеса на проектиране на цифрови устройства върху конфигурируеми чрез маски сгис. Пример за проектиране “отгоре-надолу”


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




©obuch.info 2024
отнасят до администрацията

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