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

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

Отправлено Виноградов Алексей 12 августа 2002 г. 11:07

Есть простейший проект. Выглядит он так:

%
Для декодирования адреса использован дешифратор. Если адрес порта равен "80h", то узел
"it_is_80h" устанавливается в единицу.
Далее, узел "it_is_80h" своим выходом подключен к D-триггеру. Синхровход
D-триггера подключен к сигналу "/IOW", а выход стробирует защелкивание данных в регистр-
защелку выходных данных. Таким образом, данные на выходе защелки данных не изменятся, пока
не будет выполнена запись в устройство с адресом "80h" и не придет
фронт синала /IOW.
%
SUBDESIGN simple_isa
(
sysclk, rst, /iow : input; %Управляющие сигналы и сихронизация на магистрали%
sa [9..0], sd [7..0] : input; %Входы Шины Данных и Шины Адреса%
a : output; %Единственный выходной сигнал%
)
variable
out_reg [7..0] : dff;
data_latch [7..0] : dff; %Защелки адреса и данных%
out_trigger : dff; %Выход этого триггера стробирует%
%защелку выходных данных%
it_is_80h : node;
count [3..0] : dff; %От этого счетчика тактируется выходная защелка%

BEGIN

out_reg []. (clk, clrn) = (count [3]. q, !rst);
out_reg []. d = data_latch []. q;

count []. (clk, clrn) = (sysclk, !rst);
count []. d = count []. q + 1;

out_trigger. d = it_is_80h;
out_trigger. clk = /iow; %По переходу 0 -> 1 на линии /IOW фиксируются данные.%

out_trigger. clrn = !rst;

data_latch []. clrn = !rst;
%По переходу 0 -> 1 на линии /IOW фиксируются данные.%
data_latch []. clk = out_trigger. q;
data_latch []. d = sd [];

if sa [] == h"80" then it_is_80h = vcc; else it_is_80h = gnd; end if;

a = out_reg [7]. q & out_reg [6].q & out_reg [5].q & out_reg [4].q &
out_reg [3]. q & out_reg [2].q & out_reg [1].q & out_reg [0].q;

END;

Так вот. Если я тактирую регистр OUT_REG от SysClk, все в порядке. Но это слишком быстрый сигнал. Я делю его на 16 счетчиком COUNT и с его старшего разряда снимаю синхроимпульсы для OUT_REG. Проект маленький, но компилятор говорит о том, что он не помещается. Кристалл - EPM7064SLC44-10. Ставишь другой кристалл - то же самое. Не помещается оттого, что: "Error: Illegal Assignment - global clock '/iow' on pin 5". С какой стати среда приняла этот сигнал за глобальный ? Если назначить /iow на один из глобальных синхровходов, проблема исчезает.
Настоящий глобальный синхросигнал - это SYSCLK, и он заведен на глобальный синхровход.
Заранее спасибо за помощь

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru