Перейти к содержанию
    

Нет сигнала пока не подклчюен внешний пин. Почему?

Добрый день !

 

Есть QII v8.1 и Cyclon II. Нарисован некий проект верхнего уровня - несколько символьных блоков, каждый из которых представляет из себя различные VHDL файлы. Есть линия соединяющяя выход одного блока с тристэйт буфером, далее сигнал с этого буфера идет на вход другого блока. Компилируем, заливаем в чип, проверяем. Так вот - сигнал с блока 1 не проходит на блок 2 или возможно проходит но искаженный (разрешение прохождениея сигнала через буфер выбрано жестко и подозрений не вызывает). Если же подключить какой либо внешний пин к линии соединяющей выход первого блока со входом тристэйт буфера, то все становится чудесно, данные идут непрерывно и безошибочно. Данный пин просто висит в воздухе на плате.

В чем может быть дело? Такое ощущение, что квартус просто игнорирует данное соединение, пока его не ассигнуешь на выход чипа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 DeC_NN

какая то у вас хитрая конструкция :05:

да и тристейтов то внутри чипа физически нет - они представляются мультиплексорами - наверно квартсу заоптимизировал ваш мультиплексор. Потому как если назначить выходной пин - то на лапе квартус можети использовать честный 3tate примитив, ну и логично что тогда будет всё работать как задумывалось.

Посмотрите есчё в постмапе - чем отличаются эти 2 дизайна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 DeC_NN

Если логическая цепочка не заканчивается внешним пином, то синтезатор ее "оптимизирует", т.е. выбрасывает. Таким образом, если ваша тестовая логика заканчивается внутри (например, выведена только лишь на сигнал тап), то после синтезатор ее выбрасывает. Но если хоть один тестовый разряд выведен на внешний пин (тристейт или что угодно), то синтезатор уже не может ее выкинуть.

Я обычно все тестовые регистры в процессе отладки объединяю через & на неиспользуемый пин. Либо, если все пины заняты и проектируется большая СБИС, то меппирую в любое зарезервированное адресное пространство. Короче главное, чтобы синтезатор видел полный путь от input_pin до output_pin.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Shivers

ну я это в принципе знал :laughing: и что ?

Ошибся, сорри. Ответ был адресован топикстартеру

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 DeC_NN

какая то у вас хитрая конструкция :05:

 

Там сделано так. Несколько людей независимо написали на VHDL отдельные блоки и в данном проекте они обьеденены все вместе и за top level взят файл схематик, между блоками соответственно соединения, некторые соединения не напрямую, а через тристейт буфера (те что в примитивах лежат), кстати пробовал заменять буфер на lpm_mux - результат то же.

В конце то концов все логические цепочки заканчиваются внешними пинами. Но цепочка длинная, проходит через несколько блоков.

Вообщем видимо некорректно написаны какие то блоки и синтезатор их игнорирует. Хоть вешай "холостой" внешний пин для нормальной работы :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там сделано так. Несколько людей независимо написали на VHDL отдельные блоки и в данном проекте они обьеденены все вместе и за top level взят файл схематик, между блоками соответственно соединения, некторые соединения не напрямую, а через тристейт буфера (те что в примитивах лежат), кстати пробовал заменять буфер на lpm_mux - результат то же.

В конце то концов все логические цепочки заканчиваются внешними пинами. Но цепочка длинная, проходит через несколько блоков.

Вообщем видимо некорректно написаны какие то блоки и синтезатор их игнорирует. Хоть вешай "холостой" внешний пин для нормальной работы :)

Внимательно изучайте логи квартуса на предмет выброшенных цепей. Еще хороший способ отладки - загрузить проект в синплифай, отсинтезировать и глазами смотреть схематик: иерархию, порты и т.д.

Хотя, по всей видимости, грабли именно в тристейтах - криво блоки соединены, либо синтезатор может некорректно их в мультиплексоры переводит. Лучше переписать верхний уровень без внутренних тристейтов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...