Розробка комірки функціонального обміну на ПЛІС
ПЛІС сімейства FLEX10K: загальні відомості. Радіоелектронний пристрій, в склад якого входить комірка інформаційного обміну. Технічні вимоги до комірки інформаційного обміну. Мова опису апаратури цифрових систем VHDL. Розрахунок надійності комірки.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 08.09.2014 |
Размер файла | 4,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Затримка вихідного сигналу регістру ЕВР щодо такту
0.2
tIOCOMB
Затримка комбінаційних схем ЕВР
0.0
tIOSU
Час установки регістра ЕВР
2.8
tIOH
Час утримання даних регістра ЕВР
1.0
tIOCLR
Затримка скидання регістра ЕВР
1.0
tOD1
Затримка сигналу від вихідного буфера до виводу, VCCIO = 3.3 В, slew rate = off
2.6
tOD2
Затримка сигналу від вихідного буфера до виводу, VCCIO = 2.5 В, slew rate = off
4.9
tOD3
Затримка сигналу від вихідного буфера до виводу, slew rate = on
6.3
tXZ
Затримка сигналу у вихідному буфері після сигналу заборони виходу
4.5
tZX1
Затримка сигналу у вихідному буфері після сигналу дозволу виходу, VCCIO = 3.3 В, slew rate = off
4.5
tZX2
Затримка сигналу у вихідному буфері після сигналу дозволу виходу, VCCIO = 2.5 В, slew rate = off
6.8
tZX3
Затримка сигналу у вихідному буфері після сигналу дозволу виходу, slew rate = on
8.2
tINREG
Затримка в буфері ЕВР
6.0
tIOFD
Затримка в ланцюзі зворотного зв'язку регістра ЕВР
3.1
tINCOMB
Затримка сигналу від вхідного буфера ЕВР до ГМС
3.1
tEABDATA1
Затримка даних або адреси ВБП до комбінаційного виходу ВБП
1.5
tEABDATA2
Затримка даних або адреси ВБП до реєстрового виходу ВБП
4.8
tEABWE1
Затримка даних ВБП щодо сигналу дозволу запису до комбінаційного виходу ВБП
1.0
tEABCLK
Затримка тактового імпульсу на регістрі ВБП
1.0
tEABCO
Затримка виходу ВБП щодо тактового імпульсу
0.5
tEABBYPASS
Затримка в ланцюзі обходу регістра ВБП
1.5
tEABSU
Час установки регістра ВБП
1.5
tEABCH
Тривалість високого рівня тактового сигналу регістру ВБП
4.0
tEABCL
Тривалість низького рівня тактового сигналу регістру ВБП
5.8
tAA
Час утримання адреси
8.7
tWP
Тривалість імпульсу записи ВБП
5.8
tWDSU
Час установки даних до запису
1.6
tWDH
Час утримання даних при сигналі записи в ВБП
0.3
tWASU
Час установки адреси
0.5
twAH
Час утримання адреси
1.0
tWO
Затримка даних на виході ВБП щодо сигналу дозволу запису
5.0
tDD
Затримка даних від входу до виходу ВБП
5.0
tEABOUT
Затримка даних на виході ВБП
0.5
tEABAA
Час доступу адреси ВБП
13.7
tEABRCCOMB
Тривалість циклу асинхронного читання з ВБП
13.7
tEABRCREG
Тривалість циклу синхронного читання з ВБП
9.7
tEABWP
Тривалість імпульсу записи ВБП
5.8
tEABWCCOMB
Тривалість циклу асинхронної записи в ВБП
7.3
tEABWCREG
Тривалість циклу синхронного запису в ВБП
13.0
tEABDD
Затримка даних від входу до виходу ВБП
10.0
tEABDATACO
Затримка даних на виході ВБП щодо такту
2.0
tEABDATASU
Час установки адреси чи даних у вхідному регістрі ВБП
5.3
tEABDATAH
Час утримання адреси чи даних на вході ВБП
0.0
tEABWESU
Час установки сигналу WE
5.5
tEABWESH
Час утримання сигналу WE
0.0
tEABWDSU
Час установки вхідних даних ВБП без використання вхідного регістра
5.5
tEABWDH
Час утримання вхідних даних ВБП без використання вхідного регістра
0.0
tEABWASU
Час установки адреси ВБП без використання вхідного регістра
2.1
tEABWAH
Час утримання адреси ВБП без використання вхідного регістра
0.0
tEABWO
Затримка даних на виході ВБП щодо сигналу дозволу запису
9.5
tSAMELAB
Затримка даних в ЛМС
0.6
tSAMEROW
Затримка передачі даних усередині однієї і тієї ж рядки ГМС
3.6
tSAMECOLUMN
Затримка передачі даних усередині одного і тогож ГМС
0.9
tDIFFROW
Затримка передачі даних по стовпці з одного рядка ГМС на іншу
4.5
tTWOROWS
Затримка передачі даних з одного рядка ГМС на іншу
8.1
tLEPERIPH
Затримка керуючого сигналу
3.3
tLABCARRY
Затримка перенесення в наступний ЛБ
0.5
tLABCASC
Затримка каскадирования в наступний ЛБ
2.7
tDIN2IOE
Затримка поширення з виділеного виведення до входу управління ЕВР
4.8
tDIN2LE
Затримка поширення з виділеного виведення до входу управління ЛБ або ВБП
2.6
tDCLK2IOE
Затримка поширення тактового сигналу з виділеного виведення до входу тактирования ЕВР
3.4
tDCLK2LE
Затримка поширення тактового сигналу з виділеного виведення до входу тактирования ЛБ або ВБП
2.6
tDIN2DATA
Затримка поширення даних з виділеного виведення до входу ЛБ або ВБП
4.3
tDPR
Тестова затримка регістр - регістр через 4 ЛЕ, 3 ряду і 4 ЛМС
16.1
tINSU
Час установки глобального тактового імпульсу
5.5
tINH
Час утримання даних щодо глобального тактового імпульсу
0.0
tOUTCO
Час затримки вихідних даних щодо глобального тактового імпульсу
2.0
6.7
tISUBIDIR
Час установки двонаправленого висновку щодо глобального тактового імпульсу
4.5
tINHBIDIR
Час утримання двонаправленого висновку щодо глобального тактового імпульсу
0.0
tOUTCOBIDIR
Час затримки вихідних даних на двунаправленном висновку щодо глобального тактового імпульсу
2.0
6.7
tXZBIDIR
Затримка переходу вихідного буфера в третій стан
10.0
tZXBIDIR
Затримка переходу вихідного буфера з третього стану
10.0
Додаток 2
Додаток 3
Розроблена программа
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
ENTITY PIOX_PackDecode IS
PORT
(
aclr : IN STD_LOGIC;
Скидання кінцевого автомата
PIOX_DATA_IN : IN STD_LOGIC_VECTOR(15 DOWNTO 0); -- вхідні лінії піо
PIOX_DATA_OUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); -- вихідні лінії піо
aPIOX_WR : IN STD_LOGIC;
-- сигнал управління на піо (не синхронні) (запис)
sPIOX_RD : IN STD_LOGIC;
-- сигнал управління на піо(синхронний) (читання)
sPIOX_WR : IN STD_LOGIC;
-- сигнал управління на піо (синхронний) (запис)
ADDR : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
-- адреса з заголовка пакета DATA_IN : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
-- дані для пакета
DATA_OUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
-- дані з пакета
PIOX_ERR : OUT STD_LOGIC; -- помилка пакета (невірний формат пакета) скидається успішної обробкою пакета і сигналом aclr (початковій установки)
BORDER : OUT STD_LOGIC;
-- границі пакета
DOUBLE_STROB_OUT: OUT STD_LOGIC; -- парні строби запису в пам'ять
SINGLE_STROB_OUT: OUT STD_LOGIC; -- одиночний стрибає запису в регістр
DOUBLE_STROB_IN: OUT STD_LOGIC; -- парні строби читання з пам'яті
SINGLE_STROB_IN: OUT STD_LOGIC; -- одиночний стрибає читання з регістра
PACK_SUM : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
-- cумма даних пакету з регістра GR_SUM
10011000=0x98
CLK: IN STD_LOGIC;
-- F = 20 МГц
-- debug
-- VEC8 : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
-- VEC2 : OUT STD_LOGIC_VECTOR (1 DOWNTO 0);
deb_a : OUT STD_LOGIC;
deb_b : OUT STD_LOGIC
);
END PIOX_PackDecode;
ARCHITECTURE AUTOMAT OF PIOX_PackDecode IS
signal State : STD_LOGIC_VECTOR(1 downto 0);
-- поточний стан автомата
signal N : std_logic_vector (7 downto 0);
-- номер оброблюваного слова з пакету
signal ssUnion: STD_LOGIC;
- Обедіненіе Вирівняність стробов PIOX_WR і PIOX_RD
signal Reset: STD_LOGIC;
- Складання aclr і SelfReset
signal SelfReset: STD_LOGIC;
- Скидання при некоректному пакеті
signal tSTROB_IN: STD_LOGIC;
- Сигнал служить ознакою генерації парних стробов
signal tData_Out: std_logic_vector (15 downto 0);
- Дані на PIOX в момент PIOX_WR
signal tADD: STD_LOGIC;
- Затримка кордонів пакета BORDER для ПРОХОДЖЕННЯ всіх стробов
tSTROB_OUT
signal tBORDER: STD_LOGIC;
- Кордон інф. частини пакета - провісник сигналу заняття RAM
signal HOLD_sPIOX_WR: STD_LOGIC;
- Затриманий сигнал PIOX_WR використовується для визначення запис / читання в змішаному сигналі ssUnion існує в позитивній області, ті не як PIOX_WR
signal Delay_sPIOX_RD: STD_LOGIC;
- Затриманий сигнал PIOX_RD
signal tPACK_SUM: STD_LOGIC_VECTOR (15 DOWNTO 0);
signal tADDR: STD_LOGIC_VECTOR (7 DOWNTO 0);
signal C_SIGN: STD_LOGIC;
BEGIN
- V1 <= Reset;
- V2 <= SelfReset;
ADDR <= tADDR;
PACK_SUM <= tPACK_SUM;
DATA_OUT <= tDATA_OUT;
ssUnion <= sPIOX_RD AND sPIOX_WR;
- Об'єднання потрібно, так як підрахунок кількості слів йде і в записі і в читанні
Reset <= (SelfReset and (NOT (sPIOX_WR AND sPIOX_RD))) or aclr;
- Скидання відбувається по aclr або помилково протоколу, скидання помилково протоколу утримується до кінця імпульсу PIOX_RD / WR викликав його; після скидання поновлюється і Selfeset звільняється
BORDER <= tBORDER OR tADD;
- Межі пакета формуються від кінця заголовка пакета до кінця останнього слова пакета + час на формування імпульсів запису
PIOX_DATA_OUT <= DATA_IN;
- Просто наскрізне проходження
- Затриманий сигнал PIOX_RD для виділення переднього фронту в імпульсі PIOX_RD
Delay_sPIOX_RD_drive: PROCESS (sPIOX_RD, CLK)
BEGIN
if CLK'event and CLK = '0 'then
Delay_sPIOX_RD <= sPIOX_RD;
else NULL;
end if;
END PROCESS Delay_sPIOX_RD_drive;
- Дані на запис дійсні в момент переднього фронту PIOX_WR
DATA_OUT_drive: PROCESS (aPIOX_WR)
BEGIN
if aPIOX_WR'event and aPIOX_WR = '1 'then
tDATA_OUT <= PIOX_DATA_IN;
else NULL;
end if;
END PROCESS DATA_OUT_drive;
- Адреса формується з заголовка пакета при записі або при читанні між пакетами
- Кількість слів безперервно відстежується для визначення меж пакета
ADDR_N_drive: PROCESS (Delay_sPIOX_RD, sPIOX_RD, State, ssUnion, HOLD_sPIOX_WR)
variable HOLD_sPIOX_RD: STD_LOGIC;
BEGIN
HOLD_sPIOX_RD: = Delay_sPIOX_RD and sPIOX_RD;
if HOLD_sPIOX_RD = '0 'and State = "00" then tADDR <= "00011000";
elsif ssUnion'event and ssUnion = '1 'then
if HOLD_sPIOX_WR = '1 'and State = "00" then
N <= tDATA_OUT (15 downto 8);
tADDR <= tDATA_OUT (7 downto 0);
if tDATA_OUT = "10011000" then NULL;
- На початку пакета лічильник скидається
else tPACK_SUM <= "0000000000000000";
end if;
- Сума підраховується в кінці запису, якщо це не запис заголовка (State = 0) і не регістр GR_sum
- При циклі читання цього регістра його значення гарантовано не змінюється
elsif State = "11" OR State = "10" OR State = "01" then
if State = "11" OR State = "10" then N <= N-1;
else NULL;
end if;
- При зверненні за адресою RG_sum рахунки не відбувається
if tADDR = "10011000" then NULL;
- У записі рахунок значень в момент aWR
elsif HOLD_sPIOX_WR = '1 'then tPACK_SUM <= tPACK_SUM + tDATA_OUT;
- При читанні в момент sRD
elsif HOLD_sPIOX_WR = '0 'then tPACK_SUM <= tPACK_SUM + DATA_IN;
end if;
else NULL;
end if;
else NULL;
end if;
END PROCESS ADDR_N_drive;
BORDER_drive: PROCESS (ssUnion, sPIOX_RD, Reset)
BEGIN
if Reset = '1 'then tBORDER <= '0';
elsif ssUnion'event and ssUnion = '1 'then
if State = "00" then
if HOLD_sPIOX_WR = '1 'then
tBORDER <= '1 ';
else NULL;
end if;
elsif State = "11" OR State = "10" then
if N = "00000001" then tBORDER <= '0 ';
else NULL;
end if;
elsif State = "01" then
if N = "00000000" then tBORDER <= '0 ';
else NULL;
end if;
else NULL;
end if;
else NULL;
end if;
END PROCESS BORDER_drive;
- Парні строби записи формуються після імпульсу PIOX_WR
STROB_OUT_drive: PROCESS (CLK, State, Reset)
variable count: std_logic_vector (2 downto 0);
BEGIN
- SPIOX змінюється по передньому фронку CLK
if Reset = '1 'then count: = "000";
tADD <= '0 ';
HOLD_sPIOX_WR <= '0 ';
DOUBLE_STROB_OUT <= '0 ';
SINGLE_STROB_OUT <= '0 ';
elsif CLK'event and CLK = '0 'then
if sPIOX_WR = '0 'then count: = "111";
elsif sPIOX_WR = '1 'AND count = "000" then NULL;
else count: = count-1;
end if;
- У першому такті nCLK залежні від нього State і count ще не змінилися і в разі якщо State = 0 вони пропускають свій такт установки і не виставляють tADD
if count = "111" and State = "000" then tADD <= '0 ';
- Якщо State не заважає tADD виставляється вже в началн PIOX_WR
elsif count = "111" then tADD <= '1 ';
- По кінцю рахунки сигнал возврвщается в початковий стан
elsif count = "000" then tADD <= '0 ';
else NULL;
end if;
- HOLD_sPIOX_WR подовжує сигнал на 8,5 тактів
if count = "000" then HOLD_sPIOX_WR <= '0 ';
elsif count = "111" then HOLD_sPIOX_WR <= '1 ';
else NULL;
end if;
- Подвійний строб для запису
if tADD = '1 'then
CASE count IS
when "110" => DOUBLE_STROB_OUT <= '1 '; SINGLE_STROB_OUT <= '1 ';
when "101" => DOUBLE_STROB_OUT <= '0 '; SINGLE_STROB_OUT <= '0 ';
when "100" => DOUBLE_STROB_OUT <= '1 '; SINGLE_STROB_OUT <= '0 ';
WHEN OTHERS => DOUBLE_STROB_OUT <= '0 '; SINGLE_STROB_OUT <= '0 ';
END CASE;
end if;
else NULL;
end if;
END PROCESS STROB_OUT_drive;
- Строби читання формуються на початку імпульсу PIOX_RD
STROB_IN_drive: PROCESS (CLK, State, tSTROB_IN)
variable count: std_logic_vector (2 downto 0);
BEGIN
if CLK'event and CLK = '0 'then
if tSTROB_IN = '0 'then count: = "111"; - TSTROB_IN ознака початку генерації
elsif count = "000" then NULL;
else count: = count-1;
end if;
CASE count IS
when "110" => DOUBLE_STROB_IN <= '1 '; SINGLE_STROB_IN <= '0 ';
when "101" => DOUBLE_STROB_IN <= '0 '; SINGLE_STROB_IN <= '1 ';
when "100" => DOUBLE_STROB_IN <= '1 '; SINGLE_STROB_IN <= '0 ';
WHEN OTHERS => DOUBLE_STROB_IN <= '0 '; SINGLE_STROB_IN <= '0 ';
END CASE;
else NULL;
end if;
END PROCESS STROB_IN_drive;
- Кінцевий автомат відстежує фази обробки пакета даних
MAIN: PROCESS (CLK, sPIOX_RD, sPIOX_WR, Reset, State, aclr)
variable StatePrepare: std_logic_vector (1 downto 0); - Наступний стан автомата
BEGIN
- Скидання стану автомата
if Reset = '1 'then
if aclr = '1 'then PIOX_ERR <= '0'; else NULL; end if;
tSTROB_IN <= '0 ';
State <= "00";
StatePrepare: = "00";
elsif CLK'event AND CLK = '0 'then
if sPIOX_RD = '0 'then
CASE State IS
WHEN "00" => tSTROB_IN <= '1 ';
StatePrepare: = "00";
WHEN "01" => tSTROB_IN <= '1 ';
if N = "00000000" then StatePrepare: = "00";
PIOX_ERR <= '0 ';
else StatePrepare: = "10";
end if;
WHEN "10" => tSTROB_IN <= '1 ';
if N = "00000001" then StatePrepare: = "00";
PIOX_ERR <= '0 ';
else StatePrepare: = "10";
end if;
WHEN "11" =>
PIOX_ERR <= '1 ';
SelfReset <= '1 ';
StatePrepare: = "00";
WHEN OTHERS => NULL;
END CASE;
elsif sPIOX_WR = '0 'then
CASE State IS
WHEN "00" => StatePrepare: = "01";
WHEN "01" => if N = "00000000" then StatePrepare: = "00";
PIOX_ERR <= '0 ';
else StatePrepare: = "11";
end if;
WHEN "11" =>
if N = "00000001" then StatePrepare: = "00";
PIOX_ERR <= '0 ';
else StatePrepare: = "11";
end if;
WHEN "10" => PIOX_ERR <= '1 ';
StatePrepare: = "00";
SelfReset <= '1 ';
WHEN OTHERS => NULL;
END CASE;
- Оскільки обидва нуля вже видалені в LineUp в else - випадок коли обидва '1 '
else State <= StatePrepare; - Змінити стан
SelfReset <= '0 ';
tSTROB_IN <= '0 ';
end if;
else NULL;
end if; - Main if
deb_a <= tSTROB_IN;
deb_b <= sPIOX_RD;
END PROCESS MAIN;
END AUTOMAT
Размещено на Allbest.ru
Подобные документы
Проблеми однієї із найсучасніших широкосмугових радіотехнологій – WiMax, розрахунок її покриття. Залежність величини радіусу комірки від чутливості приймача та системного підсилення. Вплив інтерференції на радіус комірки. Проектування покриття комірки.
курсовая работа [1,4 M], добавлен 07.05.2009Технічні засоби міжконтролерного обміну інформацією з визначенням та виправленням помилок: принципи утворення коду, структурна, функціональна та принципова схеми контролера. Обґрунтування вибору елементної бази та мови програмування, розробка програми.
курсовая работа [1,9 M], добавлен 19.01.2010Огляд елементної бази, що застосовується для побудови логічних керуючих автоматів з паралельною архітектурою. Аналіз систем автоматизованого проектування логічних керуючих автоматів на основі ПЛІС, їх різновиди і відмінні особливості, тенденції розвитку.
курсовая работа [478,2 K], добавлен 25.09.2010Загальна характеристика мікроконтролерів сімейства AVR фірми Atmel, складання структурної схеми електронних годинників та інформаційного табло. Розробка мікропроцесорної системи для багатоканального інформаційного табло на основі даного мікроконтролера.
дипломная работа [2,7 M], добавлен 12.12.2010Поняття та сутність ПЛІС, проектування та зародження мови VHDL. Моделювання систем за допомогою MatLab та Quartus II. Принцип роботи блока Stateflow. Створення графа станів для синхронного кінцевого автомата. Одержання VHDL коду в середовищі Quartus.
отчет по практике [2,2 M], добавлен 15.02.2013Роль сигналів у процесах обміну інформацією між окремими підсистемами складних систем різного призначення. Передача повідомлення через його перетворення в електричні сигнали у кодуючому пристрої. Класифікація та способи математичного опису повідомлень.
реферат [104,5 K], добавлен 12.01.2011Шляхи забезпечення захисту мовної інформації в каналі зв'язку, сучасні методи криптографічного захисту. Аналіз організації інформаційного обміну по мережах зв'язку загального користування. Основні методи перетворення мовного сигналу і їх взаємозв'язок.
контрольная работа [380,4 K], добавлен 13.10.2010Розрахунок і розробка топології і конструкції функціональних вузлів радіоелектронної апаратури (РЕА) у виді гібридних інтегральних схем (ГІС) і мікро збірок (МЗБ). Визначення розмірів плати. Вибір матеріалу, розрахунок товстоплівкових резисторів.
курсовая работа [571,9 K], добавлен 27.11.2010Основні вимоги до конструкції пристрою автоматизованої системи управління (АСУ) тестування працездатності. Компонування і аналіз умов експлуатації пристрою АСУ тестування працездатності. Розрахунок основних вузлів, надійності і теплового режиму пристрою.
курсовая работа [408,9 K], добавлен 08.03.2012Розробка програмного забезпечення, структурної та функціональної схеми пультів керування: мікропроцесору, перемикачів, блоків індикації, комутації та мікрофонного підсилювача. Вибір регістрів, операційних підсилювачів і контролера обміну інформацією.
курсовая работа [773,5 K], добавлен 31.07.2011