Міністерство освіти І науки України
національний університет “Львівська політехніка”
Розрахункова робота
з предмету:
“Мови опису апаратних засобів”
тема: Синтез спеціалізованого пристрою
Виконав:
ст. гр. КІ
Перевірив:
Львів 2004Анотація
В даній розрахунковій роботі проводиться проектування завершеного пристрою на базі ПЛІС фірми Xilinx, за допомогою пакету WebPack ISE. Опис вхідного пристрою подається у вигляді VHDL-моделі. До нього також додається спеціальний тестовий опис(testbench) для симуляції пристрою.
Пояснювальна документація детально викладає порядок проведення процесу розробки, його основні етапи та результати отримані на кожному з них. Також приводяться базові відомості про пакет WebPack ISE та методика роботи з ним.
Перевірка на коректність функціонування як VHDL-моделі так і отриманого засобами САПР синтезованого пристрою здійснюється програмою ModelSimXE Starter, яка супроводжує пакет WebPack ISE. Даний програмний продукт дає можливість проілюструвати часові діаграми роботи пристрою.
На завершальному етапі проектування підбирається постійний запам’ятовуючий пристрій (PROM) для конфігурування мікросхеми на виконання закладених в неї функцій. В підсумку розробляється електрична принципова схема завершеного пристрою на базі ПЛІС фірми Xilinx.
Зміст
Теоретична частина
Створення VHDL-моделі спеціалізованого пристрою
1.Опис функціонування розробленого проекту з відповідними VHDL- описами
2.Вміст файлів згенерованого тестового стенду
3.Часові діаграми симуляції та верифікації проекту за допомогою тестового стенду
Синтез VHDL- моделі спеціалізованого пристрою
1. Вихідні дані до реалізації проекту в ПЛІС
2. Поетапний опис процесу реалізації проекту в ПЛІС із зазначенням основних результатів кожного етапу.
3. Скоректований VHDL – опис СП, отриманий в результаті реалізації проекту в ПЛІС.
4. Скоректований VHDL- опис тестового стенду для СП із зазначенням вхідних даних та очікування результату симуляції
5.Часові діаграми функціональної симуляції проекту
6.Часові діаграми часової симуляції проекту
7. Обгрунтування вибору конфігураційної плати
8. Опис електричної принципової схеми СП
Висновки
Список літератури
Додаток 1. Електрична принципова схема СП.
Додаток 2. Перелік елементів СП.
Теоретична частина
Створення VHDL-моделі спеціалізованого пристрою
VHDL-код описує поведінку проектованої цифрової системи і являє собою звичайний текстовий файл. Виконання VHDL-опису проводиться за допомогою спеціальної програми - системи моделювання.
Система моделювання включає засоби, призначені для:
організації проекту - визначення директорії проекту, розташування в ній необхідних файлів з вихідними VHDL-кодами, необхідними пакетами та бібліотеками VHDL-описів;
компіляції - перетворення VHDL-кодів у внутрішнє представлення, яке і виконується (моделюється);
зборки (лінкування);
моделювання - виконання VHDL-кодів, представлених у внутрішній формі;
візуалізації вихідних описів та результатів моделювання в різних формах - текстовій або графічній (часові діаграми).
Для моделювання цифрової системи необхідно створення спеціального тестового опису (теста) - оболонки, основне призначення якої:
організувати подавання вхідних сигналів,
отримати реакцію тестованої системи,
порівняти, якщо потрібно, реакцію схеми з очікуваною.
Тестовий стенд - це середовище, в якому проект перевіряється за допомогою сигналів-стимуляторів з відображенням його реакцій.
Тестовий стенд складається з наступних елементів:
сокет для тестованого пристрою (UUT - unit under test),
генератор стимуляторів (підсистема, що застосовує стимулятори до UUT, генеруючи їх автономно, або читаючи із зовнішнього джерела),
засоби відображення реакцій UUT на стимулятори.
Ідея тестових стендів адаптована до проектів у формі VHDL-специфікації. При цьому тестовий стенд не є самостійною системою, а тільки VHDL-специфікацією, що симулюється VHDL-симулятором. Він складається з реалізації тестованого пристрою (UUT) і процесів, що підтримують стимулятори, які застосовуються до UUT. При цьому створюється гібридна специфікація, в якій використовуються як структурні, так і поведінкові оператори.
Стимулятори для UUT описуються всередині архітектури тестового стенду, або можуть бути прочитані із зовнішнього файлу. Реакції UUT, з іншого боку, можуть спостерігатись як засобами симулятора у вигляді повідомлень симуляції (наприклад, часові діаграми, що спостерігаються на екрані), так і у вигляді файла, створеного операторами текстового вводу-виводу VHDL.
Тестовий стенд має характерні елементи:
інтерфейс тестового стенду не має портів,
реалізація компонента UUT - відповідність між тестовим стендом і UUT задається за допомогою реалізації компонента і структурної специфікації,
стимулятори - це набір сигналів, що декларуються всередині архітектури тестового стенду і присвоюються портам UUT в його реалізації; стимулятори визначаються як часові діаграми в одному або більше поведінковому процесі.
Синтез VHDL-моделі спеціалізованого пристрою
Програмовані логічні інтегральні схеми (ПЛІС) дуже широко використовуються для створення цифрових систем різного призначення. Фірма Xilinx®, яка є провідним світовим виробником ПЛІС, надає розробникам широкий спектр кристалів з різною технологією виробництва, ступенем інтеграції, архітектурою, швидкодією, споживаною потужністю і напругою живлення, що випускаються в різних типах корпусів і в декількох варіантах виконання, включаючи промислове, військове і радіаційно-стійке.
Кристали, що випускаються фірмою Xilinx, повною мірою реалізують переваги ПЛІС у порівнянні з "жорсткою логікою":
висока швидкодія;
можливість перепрограмування безпосередньо в системі;
високий ступінь інтеграції, що дозволяє розмістити цифровий пристрій в одному кристалі і тим самим знизити час і витрати на трасування і виробництво друкованих плат;
скорочення часу циклу розробки і виробництва пристрою;
наявність могутніх інструментів САПР, що дозволяють усунути можливі помилки в процесі проектування пристрою;
порівняно низька вартість (у перерахуванні на один логічний вентиль);
можливість наступної реалізації проектів ПЛІС для серійного виробництва у виді замовлених НВІС, що дозволяє значно знизити їх собівартість.
Етапи проектування цифрових пристроїв на базі ПЛІС Xilinx
У процесі створення цифрових пристроїв на базі ПЛІС Xilinx можна виділити наступні етапи:
створення нового проекту (вибір сімейства і типу ПЛІС, а також засобів синтезу);
підготовка опису проектованого пристрою в схемотехнічній, алгоритмічній або текстовій формі;
синтез пристрою;
функціональне моделювання;
трасування проекту в кристал;
часове моделювання;
програмування ПЛІС (завантаження проекту в кристал).
Вихідна інформація про проектований пристрій може бути представлена у вигляді принципових схем, описів мовою HDL, діаграм станів і бібліотек користувача. У процесі синтезу на підставі вихідних модулів проекту формується список кіл, що далі використовується в якості вихідних даних засобами трасування. Функціональне моделювання пристрою виконується без врахування реальних значень затримок проходження сигналів і дозволяє проконтролювати відповідність вихідних сигналів алгоритмам роботи проектованого пристрою. На етапі трасування проекту в кристал виконується розподіл виконуваних функцій у конфігуровані логічні блоки CLB (Configurable Logic Block) або макрокомірки Macrocell, в залежності від використовуваного сімейства ПЛІС, і формування необхідних зв'язків у кристалі.
В процесі трасування проекту в кристал також визначаються реальні значення затримок поширення сигналів, що необхідні для повного (часового) моделювання пристрою. Основним результатом етапу трасування є формування файлу, в якому міститься інформація про конфігурацію ПЛІС, що реалізує проектований пристрій. Завершенням процесу розробки цифрового пристрою є завантаження конфігураційних даних в кристал за допомогою відповідних програм і завантажувального кабелю.
Етапи функціонального і часового моделювання не є обов'язковими. Однак зневажати цими етапами не рекомендується, тому що високоефективні засоби моделювання пакетів САПР Xilinx дозволяють знайти більшість можливих помилок і тим самим значно скоротити загальний час розробки пристрою. При виявленні помилок на кожному з етапів (наприклад, логічних помилок на етапі функціонального моделювання або при одержанні незадовільних результатів часового моделювання) варто повернутися на стадію розробки вихідних описів проекту, внести необхідні зміни і повторити наступні етапи.
Основні характеристики пакету WebPACK ISE
Програмні засоби WebPACK ISE являють собою систему наскрізного проектування, що реалізує всі етапи створення цифрового пристрою на базі ПЛІС, включаючи програмування кристалу:
розробка проекту,
синтез,
моделювання,
трасування,
завантаження в кристал.
Версія 4.2WP3.x САПР WebPACK ISE призначена для проектування цифрових пристроїв на базі ПЛІС виробництва Xilinx, що відносяться як до сімейств CPLD: XC9500, XC9500XL, XC9500XV, CoolRunner2, CoolRunner XPLA3, так і FPGA: Spartan™-II, Spartan™-IIE, Virtex™-E, Virtex-II.
Відмінні риси пакету:
підтримка різних методів опису проектованих пристроїв (графічних і текстових);
можливість використання проектів, підготовлених в інших системах проектування, у тому числі в середовищі пакета Altera MAX+PlusII™;
наявність схемотехнічного редактора, укомплектованого набором великих бібліотек;
інтелектуальні засоби створення HDL-описів, що формують шаблони на підставі інформації, наданої користувачем, для мов опису апаратури VHDL, Verilog і ABEL HDL;
високоефективні засоби синтезу HDL-проектів, що підтримують мови VHDL, Verilog і ABEL HDL, з можливістю оптимізації;
розвинуті засоби верифікації проекту, що дозволяють скоротити повний час розробки пристрою за рахунок виявлення можливих помилок на більш ранніх стадіях проектування і скорочення тривалості і кількості можливих ітерацій;
автоматичні засоби трасування проекту в кристали різних сімейств ПЛІС Xilinx з врахуванням оптимізації проекту по різних параметрах;
засоби програмування кристалів сімейств ПЛІС Xilinx, виконаних за різною технологією (CPLD і FPGA), що підтримують кілька типів завантажувальних кабелів JTAG-інтерфейсу;
зручний для розробника користувацький інтерфейс і наявність у кожному модулі пакету довідкової системи, що скорочують час освоєння САПР;
наявність інтегрованого з пакетом САПР набору інструментів і утиліт інших фірм, які надають додаткові зручності в процесі проектування, що включає утиліту генерації тестових сигналів HDL Bencher™, програму моделювання ModelSim XE Starter™ і редактор діаграм станів StateCAD™.
Користувацький інтерфейс пакета WebPACK ISE
Керуюча оболонка пакета WebPACK ISE Навігатор проекту (Project Navigator™) надає користувачеві зручний інтерфейс для роботи з проектом і керування всіма процесами проектування і програмування ПЛІС. Запуск усіх необхідних програмних модулів пакета здійснюється безпосередньо в середовищі Навігатора проекту. Основне вікно Навігатора проекту крім стандартних елементів керування (основного меню і оперативної панелі керування) містить чотири вбудованих вікна:
вікно вихідних модулів (файлів) проекту (Sources in Project);
вікно необхідних процедур (процесів) для обраного вихідного модуля проекту (Processes for Current Source);
вікно консольних повідомлень програмних модулів (Console);
вікно редактора текстових HDL-описів проекту.
У вікні вихідних модулів (файлів) проекту відображається ієрархічна структура, що складається з модулів (файлів), в яких міститься опис проектованого пристрою в графічній або текстовій формі, а також опис тестових впливів, що використовуються в процесі моделювання. Кожний тип модуля має відповідне графічне позначення - піктограму.
Вікно необхідних процедур (процесів) показує маршрут обробки виділеного вихідного модуля в процесі проектування пристрою. Таким чином, у даному вікні докладно відображаються всі етапи процесу розробки і програмування ПЛІС, що робить останній "прозорим" для користувача САПР. Послідовність і зміст етапів визначається типом вихідного модуля і сімейством ПЛІС. Навігатор проекту автоматично показує у вікні процедур (процесів) структуру процесу проектування, що відповідає обраному сімейству ПЛІС, виключаючи тим самим можливі помилки в послідовності дій розробника. У цьому ж вікні вказується інформація про додаткові інструменти, що можуть бути використані на кожному етапі.
Вікно консольних повідомлень призначене для виводу інформації програмних модулів пакету, що працюють в консольному режимі. Ряд програмних модулів пакета WebPACK ISE, як, наприклад, програми трансляції, синтезу, автоматичного трасування, є консольними аплікаціями, тобто не створюють власних вікон. Для того, щоб інформація про хід виконання цих програм була доступна розробникові безпосередньо в процесі роботи з проектом, вона відображається у вікні консольних повідомлень Навігатора проекту.
Вікно інтегрованого текстового редактора стає активним, якщо для проектованого пристрою або використовуваних бібліотек обраний спосіб опису мовою HDL.
Структура проекту в САПР WebPACK ISE
Проектом у САПР WebPACK ISE називається сукупність модулів (файлів), що містять інформацію, необхідну для виконання всіх етапів процесу розробки цифрового пристрою на базі ПЛІС Xilinx. У його структурі можна виділити наступні групи модулів:
вихідні описи проектованого пристрою в графічній або текстовій формі;
документація, що супроводжує проект;
проміжні результати, які використовуються в якості вихідних даних для наступних кроків проектування;
звіти про виконання основних етапів проектування;
описи тестових впливів, необхідних для моделювання пристрою;
остаточні результати проектування, які використовуються для конфігурування ПЛІС.
Всі модулі проекту розташовуються в одній директорії, назва якої збігається з назвою проекту. Відпочатку проект представлений тільки заголовком і модулем, у якому вказуються параметри проекту. Пізніше до нього додають модулі опису проектованого пристрою, а після виконання кожного етапу процесу розробки пристрою - результати, отримані на цьому етапі, і відповідний звіт. Крім того, розробник може включити в проект необхідну текстову документацію.
Створення VHDL-моделі спеціалізованого пристрою
Завдання згідно варіанту.
ALU обчислює функцію: Z=(aXY + bX + cY + d) mod 256
1.Опис функціонування розробленого проекту з відповідними VHDL- описами
Спеціалізований пристрій (СП) має наступний інтерфейс:
INCLUDEPICTURE "mhtml:file:///D:\\Keep\\Politech\\4_Course\\rozrah\\Мови%20опису%20апаратних%20засобів.mht!http://svm-070/hdl/images/KKR1.gif" \* MERGEFORMATINET
Призначення портів СП:
RST - вхід початкового скиду,
CLK - вхід тактової частоти,
CX - строб аргумента X,
CY - строб аргумента Y,
EZ - дозвіл видачі результата,
RDY - вихід готовності результату,
DIO(0..7) - двонапрямлена шина даних
Принцип дії проектованого СП повинен відповідати наступній функціональній схемі:
INCLUDEPICTURE "mhtml:file:///D:\\Keep\\Politech\\4_Course\\rozrah\\Мови%20опису%20апаратних%20засобів.mht!http://svm-070/hdl/images/KKR2.gif" \* MERGEFORMATINET
Алгоритм роботи СП:
Вхід CLK використовується для подавання тактової частоти, за якою здійснюється синхронізація роботи всіх внутрішніх блоків СП.
Вхід RST є асинхронним і при RST=1 відбувається початкова ініціалізація СП.
Вхід CX стробує подавання аргумента X по шині даних DIO(0..7) - при CX=0 за додатнім фронтом CLK відбувається запис вхідного аргументу в регістр RGX.
Вхід CY стробує подавання аргумента Y по шині даних DIO(0..7) - при CY=0 за додатнім фронтом CLK відбувається запис вхідного аргументу в регістр RGY.
Після запису нового аргументу в СП (в регістри RGX або RGY) ALU починає обчислення функції вихідного значення Z=F(X,Y).
По закінченні обчислення значення функції її результат записується в регістр RGZ.
На виході RDY формується сигнал готовності результату в регістрі RGZ. Після запису нового аргументу в СП, коли починається обчислення, сигнал RDY скидається в 0, а після його закінчення встановлюється в 1.
Вхід EZ використовується для керування видачею результату обчислення з регістру RGZ на шину даних DIO(0..7) - при EZ=0 видачу дозволено, при EZ=1 - заборонено, тобто виходи регістра RGZ знаходяться в третьому стані.
VHDL – опис розробленого проекту
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
entity Device is
port(
RST : in STD_LOGIC;
CLK : in STD_LOGIC;
CX : in STD_LOGIC;
CY : in STD_LOGIC;
EZ : in STD_LOGIC;
RDY : out STD_LOGIC;
DIO : inout STD_LOGIC_VECTOR(7 downto 0)
);
end entity Device;
architecture Device of Device is
signal X,Y:std_logic_vector(7 downto 0):="00000000";
signal Z,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7:std_logic_vector(7 downto 0);
signal aXY,XY,b_X,c_Y:std_logic_vector(7 downto 0):="00000000";
begin
RG_X:process (CLK,RST,CX)
begin
if RST='1' then X<="00000000";
else
if CX='0' then
if CLK'event and CLK='1' then X<=DIO;
end if;
end if;
end if;
end process;
----------------------------------------------------------------------------
RG_Y: process (CLK,RST,CY)
begin
if RST='1' then Y<="00000000";
else
if CY='0' then
if CLK'event and CLK='1' then Y<=DIO;
end if;
end if;
end if;
end process;
--------------------------------------------------------------
ALU_XY_Z:process (X,Y)
begin
b_X <= X + (X(4 downto 0)&"000") + (X(1 downto 0)&"000000");
c_Y <= (Y(5 downto 0)&"00")+(Y(4 downto 0)&"000")+(Y(2 downto 0)&"00000")+(Y(0)&"0000000");
if X(0)='1' then Z0 <= Y; else Z0<="00000000";end if;
if X(1)='1' then Z1 <= Y(6 downto 0)&"0";else Z1<="00000000";end if;
if X(2)='1' then Z2 <= Y(5 downto 0)&"00";else Z2<="00000000";end if;
if X(3)='1' then Z3 <= Y(4 downto 0)&"000";else Z3<="00000000";end if;
if X(4)='1' then Z4 <= Y(3 downto 0)&"0000";else Z4<="00000000";end if;
if X(5)='1' then Z5 <= Y(2 downto 0)&"00000";else Z5<="00000000";end if;
if X(6)='1' then Z6 <= Y(1 downto 0)&"000000";else Z6<="00000000";end if;
if X(7)='1' then Z7 <= Y(0)&"0000000";else Z7<="00000000";end if;
end process;
---------------------------------------------------------------------
ALU_XY:process (Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7)
begin
XY <= Z0+Z1+Z2+Z3+Z4+Z5+Z6+Z7;
end process;
---------------------------------------------------------------------
ALU_aXY:process (XY)
begin
aXY <= XY(6 downto 0)&"0";
end process;
---------------------------------------------------------------------
ALU_FINAL:process(aXY,b_X,c_Y)
begin
Z <= b_X + c_Y + "01101010" - aXY;
end process;
---------------------------------------------------------------------
RG_Z:process (EZ)
begin
if EZ='0' then
DIO <= Z;
else
DIO <= "ZZZZZZZZ";
end if;
end process;
---------------------------------------------------------------------
Ready:process(CLK,CX,CY,EZ,RST)
begin
RDY <= CX and CY and not RST;
end process;
end Device;
Вміст файлів згенерованого тестового стенду
library ieee;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
entity device_tb is
end device_tb;
architecture TB_ARCHITECTURE of device_tb is
-- Component declaration of the tested unit
component device
port(
RST : in std_logic;
CLK : in std_logic;
CX : in std_logic;
CY : in std_logic;
EZ : in std_logic;
RDY : out std_logic;
DIO : inout std_logic_vector(7 downto 0) );
end component;
-- Stimulus signals - signals mapped to the input and inout ports of tested entity
signal RST : std_logic;
signal CLK : std_logic;
signal CX : std_logic;
signal CY : std_logic;
signal EZ : std_logic;
signal DIO : std_logic_vector(7 downto 0);
-- Observed signals - signals mapped to the output ports of tested entity
signal RDY : std_logic;
begin
UUT : device
port map (
RST => RST,
CLK => CLK,
CX => CX,
CY => CY,
EZ => EZ,
RDY => RDY,
DIO => DIO
);
RSTstimul:process
begin
while true loop
RST<='1';
wait for 5 ns;
RST<='0';
wait for 135 ns;
end loop;
end process;
CLKstimul:process
begin
CLK<='0';
while true loop
wait for 10 ns;
CLK<=not CLK;
end loop;
end process;
CXstimul:process
begin
CX<='1';
wait for 40 ns;
while true loop
CX<='0';
wait for 20 ns;
CX<='1';
wait for 100 ns;
end loop;
end process;
CYstimul:process
begin
CY<='1';
wait for 80 ns;
while true loop
CY<='0';
wait for 20 ns;
CY<='1';
wait for 100 ns;
end loop;
end process;
EZstimul:process
begin
EZ<='1';
wait for 120 ns;
while true loop
EZ<='0';
wait for 20 ns;
EZ<='1';
wait for 100 ns;
end loop;
end process;
DIOstimul:process
begin
wait for 5 ns;
while true loop
wait for 15 ns;
DIO<="ZZZZZZZZ";
wait for 20 ns;
DIO<="11111011";
wait for 20 ns;
DIO<="ZZZZZZZZ";
wait for 20 ns;
DIO<="11111001";
wait for 20 ns;
DIO<="ZZZZZZZZ";
wait for 20 ns;
end loop;
end process;
end TB_ARCHITECTURE;
configuration TESTBENCH_FOR_device of device_tb is
for TB_ARCHITECTURE
for UUT : device
use entity work.device(device);
end for;
end for;
end TESTBENCH_FOR_device;
3.Часові діаграми симуляції та верифікації проекту за допомогою тестового стенду
EMBED Photoshop.Image.7 \s
Синтез VHDL- моделі спеціалізованого пристрою
1. Вихідні дані до реалізації проекту в ПЛІС
Реалізація проекту в ПЛІС - це складний ітераційний процес, що складається з послідовних етапів. У випадку виникнення помилок на деякому етапі необхідно повернутись до попередніх ітерацій для їх виправлення. Лише успішне завершення всіх етапів проектування приводить до отримання закінченої реалізації проекту в ПЛІС.
Весь цикл проектування виконується в пакеті WebPACK ISE. Для ознайомлення з методикою використання пакету WebPACK ISE можна скористатись [1], де на прикладі простого проекту докладно розглянуто всі етапи проектування.
Реалізація СП в рамках даної роботи виконується в ПЛІС FPGA сімейства Spartan-II. Ознайомитись із загальною інформацією про це сімейство ПЛІС можна в [2], з його функціональним описом - в [3], а з електричними та часовими характеристиками - в [4]. В [5] описано призначення виводів кристалів різних типів, що відносяться до цього сімейства, в тому числі виводів живлення, керування, інтерфейсу із конфігураційним ПЗП, інтерфейсу JTAG та виводів вводу-виводу.
Для ПЛІС FPGA фірми Xilinx необхідно забезпечити конфігурування кристалу, тобто завантаження бітової послідовності, отриманої за допомогою програмного забезпечення проектування, у внутрішню конфігураційну пам'ять ПЛІС. Spartan-II може завантажуватись як побітно (ведучий/підпорядкований послідовні режими та JTAG), так і побайтно (підпорядкований паралельний режим). Конфігураційні дані при виключеному живленні повинні зберігатись у зовнішньому пристрої статичної пам'яті. В цій роботі використовуються послідовні ПЗП Xilinx серії XC1700. Вибір необхідного ПЗП можна здійснити за [6].
2. Поетапний опис процесу реалізації проекту в ПЛІС із зазначенням основних результатів кожного етапу.
Створити новий проект в пакеті WebPACK ISE:
задати ім'я проекту та директорію розміщення;
в якості цільового кристалу вибрати ПЛІС Xilinx сімейства Spartan-II (Spartan2) xc2s15-5vq100;
вибрати інструменти синтезу XST VHDL.
За допомогою команди меню Project -> Add source... додати до проекту готовий VHDL-опис СП як VHDL Module; опис тестового стенду як VHDL Test Bench.
Провести функціональну симуляцію тестового стенду (Process Window -> ModelSim Simulator -> Simulate Behavioral VHDL Model) і перевірити коректний результат роботи СП.
Ознайомитись з механізмом призначення номерів виводів кристалу портам СП (Process Window -> Design Entity Utility -> User Constraints -> Edit Implementation Constraints).
Провести синтез проекту (Process Window -> Synthesize) і ознайомитись із звітом про синтез (Synthesis Report).
Провести трасування проекту (Process Window -> Implement Design) і ознайомитись із звітами про трасування (Translation Report, Map Report, Place & Route Report іPad Report).
Провести часову симуляцію тестового стенду (Process Window -> ModelSim Simulator -> Simulate Post-Place & Route VHDL Model) і перевірити результат роботи схеми СП, реалізованої в кристалі ПЛІС.
Згенерувати бітову послідовність для конфігурування ПЛІС (Process Window -> Generate Programming File) і ознайомитись із звітом про генерацію бітової послідовності (Programming File Generation Report).
За [5] для використаного кристалу ПЛІС визначити виводи кіл живлення, кіл керування та кіл конфігурування.
За [6] для використаного кристалу ПЛІС вибрати послідовний ПЗП конфігураційной пам'яті.
На основі пп.9 і 10 та реультатом трасування (Pad Report) скласти електричну принципову схему та перелік елементів розробленого СП
3. Скоректований VHDL – опис СП, отриманий в результаті реалізації проекту в ПЛІС.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
entity Device is
port(
RST : in STD_LOGIC;
CLK : in STD_LOGIC;
CX : in STD_LOGIC;
CY : in STD_LOGIC;
EZ : in STD_LOGIC;
RDY : out STD_LOGIC;
DIO : inout STD_LOGIC_VECTOR(7 downto 0)
);
end entity Device;
architecture Device of Device is
signal X,Y:std_logic_vector(7 downto 0):="00000000";
signal Z,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7:std_logic_vector(7 downto 0);
signal aXY,XY,b_X,c_Y:std_logic_vector(7 downto 0):="00000000";
begin
RG_X:process (CLK,RST,CX)
begin
if RST='1' then X<="00000000";
else
if CX='0' then
if CLK'event and CLK='1' then X<=DIO;
end if;
end if;
end if;
end process;
----------------------------------------------------------------------------
RG_Y: process (CLK,RST,CY)
begin
if RST='1' then Y<="00000000";
else
if CY='0' then
if CLK'event and CLK='1' then Y<=DIO;
end if;
end if;
end if;
end process;
--------------------------------------------------------------
ALU_XY_Z:process (X,Y)
begin
b_X <= X + (X(4 downto 0)&"000") + (X(1 downto 0)&"000000");
c_Y <= (Y(5 downto 0)&"00")+(Y(4 downto 0)&"000")+(Y(2 downto 0)&"00000")+(Y(0)&"0000000");
if X(0)='1' then Z0 <= Y; else Z0<="00000000";end if;
if X(1)='1' then Z1 <= Y(6 downto 0)&"0";else Z1<="00000000";end if;
if X(2)='1' then Z2 <= Y(5 downto 0)&"00";else Z2<="00000000";end if;
if X(3)='1' then Z3 <= Y(4 downto 0)&"000";else Z3<="00000000";end if;
if X(4)='1' then Z4 <= Y(3 downto 0)&"0000";else Z4<="00000000";end if;
if X(5)='1' then Z5 <= Y(2 downto 0)&"00000";else Z5<="00000000";end if;
if X(6)='1' then Z6 <= Y(1 downto 0)&"000000";else Z6<="00000000";end if;
if X(7)='1' then Z7 <= Y(0)&"0000000";else Z7<="00000000";end if;
end process;
---------------------------------------------------------------------
ALU_XY:process (Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7)
begin
XY <= Z0+Z1+Z2+Z3+Z4+Z5+Z6+Z7;
end process;
---------------------------------------------------------------------
ALU_aXY:process (XY)
begin
aXY <= XY(6 downto 0)&"0";
end process;
---------------------------------------------------------------------
ALU_FINAL:process(aXY,b_X,c_Y)
begin
Z <= b_X + c_Y + "01101010" - aXY;
end process;
---------------------------------------------------------------------
RG_Z:process (EZ)
begin
if EZ='0' then
DIO <= Z;
else
DIO <= "ZZZZZZZZ";
end if;
end process;
---------------------------------------------------------------------
Ready:process(CLK,CX,CY,EZ,RST)
begin
RDY <= CX and CY and not RST;
end process;
end Device;
4. Скоректований VHDL- опис тестового стенду для СП із зазначенням вхідних даних та очікування результату симуляції
library ieee;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
entity device_tb is
end device_tb;
architecture TB_ARCHITECTURE of device_tb is
-- Component declaration of the tested unit
component device
port(
RST : in std_logic;
CLK : in std_logic;
CX : in std_logic;
CY : in std_logic;
EZ : in std_logic;
RDY : out std_logic;
DIO : inout std_logic_vector(7 downto 0) );
end component;
-- Stimulus signals - signals mapped to the input and inout ports of tested entity
signal RST : std_logic;
signal CLK : std_logic;
signal CX : std_logic;
signal CY : std_logic;
signal EZ : std_logic;
signal DIO : std_logic_vector(7 downto 0);
-- Observed signals - signals mapped to the output ports of tested entity
signal RDY : std_logic;
begin
UUT : device
port map (
RST => RST,
CLK => CLK,
CX => CX,
CY => CY,
EZ => EZ,
RDY => RDY,
DIO => DIO
);
RSTstimul:process
begin
while true loop
RST<='1';
wait for 5 ns;
RST<='0';
wait for 135 ns;
end loop;
end process;
CLKstimul:process
begin
CLK<='0';
while true loop
wait for 10 ns;
CLK<=not CLK;
end loop;
end process;
CXstimul:process
begin
CX<='1';
wait for 40 ns;
while true loop
CX<='0';
wait for 20 ns;
CX<='1';
wait for 100 ns;
end loop;
end process;
CYstimul:process
begin
CY<='1';
wait for 80 ns;
while true loop
CY<='0';
wait for 20 ns;
CY<='1';
wait for 100 ns;
end loop;
end process;
EZstimul:process
begin
EZ<='1';
wait for 120 ns;
while true loop
EZ<='0';
wait for 20 ns;
EZ<='1';
wait for 100 ns;
end loop;
end process;
DIOstimul:process
begin
wait for 5 ns;
while true loop
wait for 15 ns;
DIO<="ZZZZZZZZ";
wait for 20 ns;
DIO<="11111011";
wait for 20 ns;
DIO<="ZZZZZZZZ";
wait for 20 ns;
DIO<="11111001";
wait for 20 ns;
DIO<="ZZZZZZZZ";
wait for 20 ns;
end loop;
end process;
end TB_ARCHITECTURE;
configuration TESTBENCH_FOR_device of device_tb is
for TB_ARCHITECTURE
for UUT : device
use entity work.device(device);
end for;
end for;
end TESTBENCH_FOR_device;
5.Часові діаграми функціональної симуляції проекту
EMBED PBrush
6.Часові діаграми часової симуляції проекту
EMBED PBrush
7. Обгрунтування вибору конфігураційної плати
Мікросхеми ПЗУ сімейства SpartanII забезпечують легкий у використанні i не дорогий метод зберігання конфігураційних даних.
Аналізуючи специфікацію фірми Xilinx для мікросхем ПЗУ, які використовуються в якості зберігачів конфігураційної інформації підбираємо відповідну до мікросхеми пристрою XC2S15-5VQ100. Даній мікросхемі відповідає мікросхема пам’яті типу XC17S15A.
В даній роботі мікросхема пристрою працює у режимі Master Serial Mode(керуючий послідовний режим зчитування), тобто він посилає такти, які керують мікросхемою пам’яті. Через короткий проміжок часу після додатнього перепаду на вході синхронізації ПЗУ дані з’являються на її виході, який під’єднаний до пристрою конфігурування. Пристрій SpartanII генерує потрібну кількість тактів, щоб завершити конфігурування.
8. Опис електричної принципової схеми СП
Дамо короткий опис функціонування мікросхем та інших елементів пристрою.
Управління мікросхемою PROM:
дані виходять з ПЗУ і надходять на вхід Din керуючої мікросхеми SpartanII
вихід CCLK ведучого пристрою SpartanII керує входом CLK PROM
вхід (-Reset)/OE PROM підєднується до до виводу INIT Spartan II і резистору. Це гарантує, що адресний лічильник ПЗУ є скинутий перед початком будь-якої конфігурації, якщо навіть ініційована реконфігурація.
Вхід (-CE) ПЗУ підєднаний до виводу DONE мікросхеми SpartanII і до резистора.
Після того, як було включено живлення пристрій SpartanII входить у ведучий режим, якщо відповідні виводи режиму встановлені потрібним чином. Дані читаються із памяті послідовно біт за бітом по одній лінії звязку. Синхронізація забезпечується по додатньому фронту тимчасового сигналу CCLK, який генерується на протязі синхронізації.
Ведучий послідовний режии забезпечує простий конфігураційний інтерфейс. Тільки одна лінія даних, дві контрольних лінії, і лінія синхронізації необхідні для конфігурування SpartanII. Дані вичитуються послідовно з використанням внутрішньої адреси, як інкрементується по кожному додатньому перепаду CCLK.
На принциповій схемі крім вищеописаних мікросхем SpartanII і PROM викоритовуються конденсатори в колах живлення, в якості фільтрів від високочатотних завад та розєм для підєднання даного пристрою з іншими.
Висновки
В результаті виконання даної розрахункової роботи було освоєно методику створення завершених пристроїв на базі ПЛІС фірми Xilinx. Проведено ознайомлення з таким засобами САПР як пакет WebPack ISE та ModelSimXE Starter. Освноєно інструмент симуляції ModelSimXE як на функціональному так і на часовому рівнях симуляції. Отримано практичні навики створення та оформлення принципових електричних схем проектів згідно ГОСТів. Отже, реалізація спеціалізованого обчислювача на на базі ПЛІС фірми Xilinx дала можливість отримати цілий спектр переваг та зручностей повязаних із високою швидкодією та ступенем інтеграції, низькою вартістю і скороченням часу розробки, а також можливістю перепрограмування безпосередньо в системі.
Література
HYPERLINK "download/PLDQSHB_45.pdf"Karen Parnell, Nick Mehta. Programmable Logic Design Quick Start Hand Book. - Xilinx, January 2002. - 4 & 5 chapters.
HYPERLINK "download/ds001_1.pdf"Spartan-II 2.5V FPGA Family: Introduction and Ordering Information. - Xilinx, November 2001. - DS001-1 (v2.3).
HYPERLINK "download/ds001_2.pdf"Spartan-II 2.5V FPGA Family: Functional Description. - Xilinx, March 2001. - DS001-2 (v2.1).
HYPERLINK "download/ds001_3.pdf"Spartan-II 2.5V FPGA Family: DC and Switching Characteristics. - Xilinx, August 2001. - DS001-3 (v2.4).
HYPERLINK "download/ds001_4.pdf"Spartan-II 2.5V FPGA Family: Pinout Tables. - Xilinx, April 2001. - DS001-4 (v2.4).
HYPERLINK "download/ds078.pdf"Spartan-II Family of One-Time Programmable Configuration PROMs (XC17S00A). - Xilinx, October 2001. - DS078 (v1.4).