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

Отправлено Vallav 17 июля 2002 г. 21:21
В ответ на: Напишите, плиз, что надо добавить. Ничего не выходит ... отправлено Виноградов Алексей 17 июля 2002 г. 18:59

SUBDESIGN simple_da_5
(
rxd, clk, clear : INPUT;
load, q[7..0] : OUTPUT;
)
VARIABLE
ss : machine with states (s0, s1);
count [6..0] : dffe;
qt [7..0] : dffe;

BEGIN
qt [].clk = clk;
qt [].d = rxd;
qt[].clrn=clear;

count [].clrn = clear;
count [].clk = clk;

ss.clk = clk;
ss.reset = !clear;

case ss is
when s0 =>
load = gnd;
count [].d = 0;
if !rxd then ss = s1;
end if;

when s1 =>
case count [].q is
when 12 => qt[0].ena = vcc; count [].d = count [].q + 1;
when 20 => qt[1].ena = vcc; count [].d = count [].q + 1;
when 28 => qt[2].ena = vcc; count [].d = count [].q + 1;
when 36 => qt[3].ena = vcc; count [].d = count [].q + 1;
when 44 => qt[4].ena = vcc; count [].d = count [].q + 1;
when 52 => qt[5].ena = vcc; count [].d = count [].q + 1;
when 60 => qt[6].ena = vcc; count [].d = count [].q + 1;
when 68 => qt[7].ena = vcc; count [].d = count [].q + 1;
when 76 => load = vcc; ss = s0;
when others => count [].d = count [].q + 1;
end case;

end case;
q[]=qt[];
END;

Замечания:
1. На симуляторе не гонял, только посмотрел уравнения для q[]. Вроде
правильные.
2. q[] должно держаться до следующего цикла.
3. load не переделывал, будет держаться всего один такт
4. Нет ожидания прихода stop, хотя надо бы.
P.S. Если не работает, сильно не ругайте.


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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru