Создание текстового описания модуля проекта на языке VHDL
T_aceo:time:=150 ns;— Время выборки сигнала разрешения по выходу. Конец-Считывание———————————————————————; Конец-Проверка———————————————————————; Generic (текстовый программа верификация микросхема. If (CS='0')and (now>1 ns) and (CS'last_event < t_cs or CEO’last_event now) then. Type mem is array (0 to MEM_WORDS-1) of std_logic_vector (0 to MEM_WLENGTH-1); MEM_WLENGTH:integer:=8— Количество… Читать ещё >
Создание текстового описания модуля проекта на языке VHDL (реферат, курсовая, диплом, контрольная)
Описание микросхемы памяти КР573РФ5
library IEEE;
use IEEE. STD_LOGIC_1164.ALL;
use IEEE. STD_LOGIC_UNSIGNED.CONV_INTEGER;
use IEEE. STD_LOGIC_ARITH.CONV_STD_LOGIC_VECTOR;
entity k573rf5 is.
generic (текстовый программа верификация микросхема.
— Динамические параметры микросхемы.
t_aa:time:=450 ns;— Время выборки адреса.
t_cs:time:=450 ns;— Время выбора.
t_aceo:time:=150 ns;— Время выборки сигнала разрешения по выходу.
t_dis_cs:time:=120 ns;— Время восстановления высокого сопротивления после сигнала CS.
t_dis_ceo:time:=120 ns;— Время восстановления высокого сопротивления после сигнала CEO.
— Параметры микросхемы.
A_WIDTH:integer:=11;— Ширина шины адреса.
MEM_WORDS:integer:=2048;— Количество слов.
MEM_WLENGTH:integer:=8— Количество разрядов в слове.
);
— Выводы микросхемы.
Port (A: in STD_LOGIC_VECTOR (A_WIDTH-1 downto 0);
CS: in STD_LOGIC;
CEO: in STD_LOGIC;
DO: out STD_LOGIC_VECTOR (MEM_WLENGTH-1 downto 0):=(others=>'Z').
);
end k573rf5;
architecture Behavioral of k573rf5 is.
type mem is array (0 to MEM_WORDS-1) of std_logic_vector (0 to MEM_WLENGTH-1);
shared variable pzu: mem;
shared variable upAfter: time:=0 ns;
shared variable downAfter: time:=0 ns;
shared variable badAdr: boolean:=false;
shared variable timeUp: time:=0 ns;
shared variable timeDown: time:=0 ns;
shared variable atest: time:=0 ns;
begin.
————————————начало-Заполнение-ПЗУ——————;
process.
variable i: integer;
begin.
for i in 0 to MEM_WORDS-1 loop.
if (i mod 2=0) then.
pzu (i):="H0H0H0H0″ ;
else.
pzu (i):="HHHH0000″ ;
end if;
end loop;
DO<="HHHHHHHH" ;
wait;
end process;
- ———————————конец-Заполнение-ПЗУ————————
- ————————————начало-Считывание—————————
process (CS, CEO, A).
begin.
if (A'event)and (CEO='0')and (CS='0') then.
upAfter := t_aa;
if (badAdr) then.
DO<="XXXXXXXX" after upAfter;
else.
DO<=pzu (conv_integer (A)) after upAfter;
timeUp:=now+upAfter;
end if;
end if;
if falling_edge (CS) then.
if (CEO='0') then.
upAfter := t_cs;
if (badAdr) then.
DO<="XXXXXXXX" after upAfter;
else.
DO<=pzu (conv_integer (A)) after upAfter;
timeUp:=now+upAfter;
end if;
end if;
end if;
if falling_edge (CEO) then.
if (CS='0') then.
if t_aceo-CEO'last_event > t_cs-CS'last_event then.
upAfter := t_aceo;
else.
upAfter := t_cs-(CS'last_event-CEO'last_event);
end if;
if (badAdr) then.
—DO<="XXXXXXXX" after upAfter;
DO<="HHHHHHHH" after upAfter;
else.
DO<=pzu (conv_integer (A)) after upAfter;
timeUp:=now+upAfter;
end if;
end if;
end if;
if rising_edge (CS) then.
downAfter := t_dis_cs;
DO’H') after downAfter;
timeDown:=now+downAfter;
end if;
if rising_edge (CEO) then.
downAfter := t_dis_ceo;
DO’H') after downAfter;
timeDown:=now+downAfter;
end if;
end process;
————————конец-Считывание———————————————————————;
process (A).
begin.
badAdr:=false;
for i in 0 to A_WIDTH — 1 loop.
if A (i) /= '0' and A (i) /= '1' then.
badAdr:=true;
end if;
end loop;
if badAdr and (now>1 ns) and (CS='0') then.
report time’image (now) & «: Некорректные сигналы на адресных входах» severity ERROR;
end if;
if (CS='0')and (now>1 ns) and (CS'last_event < t_cs or CEO’last_event now) then.
report time’image (now) & «: Некорректная расстановка сигналов: Изменение адреса в момент считывания» severity ERROR;
end if;
atest := now;
end process;
————————————-начало-Проверка———————————————-;
process (CS).
begin.
if (now1 ns) and (CS='1') then.
report time’image (now) & «: Некорректная расстановка сигналов: Изменение CS=1 в момент считывания» severity ERROR;
end if;
if (now1 ns) and (CS='0') then.
report time’image (now) & «: Некорректная расстановка сигналов: Изменение CS=0 в момент отключения выходов» severity ERROR;
end if;
if badAdr and (now>1 ns) and (CS='0') then.
report time’image (now) & «: Некорректные сигналы на адресных входах» severity ERROR;
end if;
end process;
process (CEO).
begin.
if (now1 ns) and (CEO='1') then.
report time’image (now) & «: Некорректная расстановка сигналов: Изменение CEO в момент считывания» severity ERROR;
end if;
if (now1 ns) and (CEO='0') then.
report time’image (now) & «: Некорректная расстановка сигналов: Изменение CEO в момент отключения выходов» severity ERROR;
end if;
end process;
—————————конец-Проверка———————————————————————;
end Behavioral;