Например TDA7294

Форум РадиоКот • Просмотр темы - AHDL сброс регистра
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 06:32:06

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 3 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: AHDL сброс регистра
СообщениеДобавлено: Вт май 17, 2011 17:24:56 
Родился

Зарегистрирован: Вт май 17, 2011 17:08:17
Сообщений: 1
Рейтинг сообщения: 0
Код:
SUBDESIGN check
(
 bit,CLK,IN[2..0]:INPUT;
 OUT[8..0]:OUTPUT;
)
VARIABLE
f[8..0]:DFF;
begin
f[].clk=clk;
IF IN[]==3 THEN
f[].CLRN=GND;
ELSE
f[].d=(f[7..0].q,bit);
OUT[]=f[].q;
END IF;
end;

Мне необходимо обнулить регистр при IN==3, что я не так делаю, компилятор пишет, что f[] всегда состоит из нулей.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AHDL сброс регистра
СообщениеДобавлено: Вт май 17, 2011 20:22:53 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
eXXXXXXXXXXX писал(а):
что я не так делаю.....
f[].CLRN=GND;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AHDL сброс регистра
СообщениеДобавлено: Ср май 18, 2011 08:07:17 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
Так умолчательное состояние линий 0, есл я правильно помню. Т.е. в одной ветки if присвоили 0 -- вот вам 0. В другой не присвоили -- вот вам 0-по-умолчанию.
Чтобы не прописывать все ветки, лучше завести промежуточную переменную, которой присваиваь 1 во всех местах, где нужно сбросить регистр (они все объединятся по ИЛИ):
Код:
SUBDESIGN check
(
    bit,CLK,IN[2..0]:INPUT;
    OUT[8..0]:OUTPUT;
)
VARIABLE
    f[8..0]:DFF;
    f_reset : node;
begin
    f[].clk = clk;
    f[].CLRN = !f_reset;

    IF IN[]==3 THEN
        f_reset = VCC; -- в остальное время она 0
    ELSE
        f[].d=(f[7..0].q,bit);
        OUT[]=f[].q;
    END IF;
end;

Я бы вообще так написал:
Код:
SUBDESIGN check
(
    bit,CLK,IN[2..0]:INPUT;
    OUT[8..0]:OUTPUT;
)
VARIABLE
    f[8..0]:DFF;
begin
    f[].clk=clk;
    f[].CLRN = !(IN[]==3);
    f[].d=(f[7..0].q,bit); -- асинхронный сброс имеет приоритет над этим
    OUT[]=f[].q;
end;
Работать будет так же, а логики сожрёт меньше, со входов f[] и OUT[] ненужная пропадёт.

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y