[an error occurred while processing this directive]
Ответ: при одной и той же логике совпадают до копейки
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено maegg 07 июля 2004 г. 09:44
В ответ на: И вообще, я не пробовал сравнивать AHDL и VHDL для MAX, но отправлено svf 05 июля 2004 г. 17:38

там и там 3 ячейки 7000
VHDL
--формирование строба в один период clk по переднему фронту сигнала
LIBRARY ieee;
USE ieee.std_logic_1164.all;

LIBRARY work;

ENTITY rise_strob IS
port
(
clk : IN STD_LOGIC;
reset : IN STD_LOGIC;
taktin : IN STD_LOGIC;
strob : OUT STD_LOGIC
);
END rise_strob;


ARCHITECTURE a OF rise_strob IS
TYPE STATE_TYPE IS (s0, s1, s2, s3);
SIGNAL state : STATE_TYPE;
BEGIN
PROCESS (clk, reset)
BEGIN
IF reset = '1' THEN
state <= s0;
ELSIF (clk'EVENT AND clk = '1') THEN
CASE state IS
WHEN s0=>
IF taktin = '0' THEN
state <= s1;
ELSE
state <= s0;
END IF;
WHEN s1=>
IF taktin = '1' THEN
state <= s2;
ELSE
state <= s1;
END IF;
WHEN s2=>
state <= s3;
WHEN s3=>
state <= s3;
END CASE;
END IF;
END PROCESS;

PROCESS (state)
BEGIN
IF state = s2 THEN
strob <= '1';
ELSE
strob <= '0';
END IF;
END PROCESS;

END a;

AHDL

SUBDESIGN rise_strb
(
clk : INPUT;
enable : INPUT;
taktin : INPUT;
strobe : OUTPUT;
)
VARIABLE
ss : MACHINE WITH STATES (s0, s1, s2, s3);
BEGIN
ss.clk = clk;
ss.reset = !enable;
CASE ss IS
WHEN s0 =>
strobe = GND;
IF !taktin THEN
ss = s1;
END IF;
WHEN s1 =>
strobe = GND;
IF taktin THEN
ss = s2;
END IF;
WHEN s2 =>
strobe = VCC;
ss = s3;
WHEN s3 =>
strobe = GND;
ss = s3;

END CASE;
END;


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru