Заказать курсовые, контрольные, рефераты...
Образовательные работы на заказ. Недорого!

Создание текстового описания модуля проекта на языке 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;

Показать весь текст
Заполнить форму текущей работой