Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования




Скачать 1.44 Mb.
Название Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования
страница 23/23
Тип Документы
rykovodstvo.ru > Руководство эксплуатация > Документы
1   ...   15   16   17   18   19   20   21   22   23

Приложение 4

Разработанная программа



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;

1   ...   15   16   17   18   19   20   21   22   23

Похожие:

Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
«Формирования и реализация инновационной политики коалиционного правительства Великобритании»
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации федеральное государственное автономное...
Маркетинговый план для усиления конкурентоспособности компании «Прогноз» 53
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Регрессионный анализ влияния макрофакторов на показатели банковской деятельности 21
Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования icon Правительство Российской Федерации Федеральное государственное автономное...
Зона свободной торговли асеан – Австралия и Новая Зеландия

Руководство, инструкция по применению








Заказать интернет-магазин под ключ!

При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск