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

Чего-то уткнулся рогом в довольно глупую ситуацию:

есть борд (подрядчика), на нам маленький CPLD XIlinxа: XCR3064CS48.

В ней элементарная маленькая логика (3-4 and, 4-5 инверторов, 1 pull-down)

3 входа, 4 выхода. Выхода драйвят чип А3901 (motor drive).

 

Странность в том что при включении питания на выходах возникают сигналы (2 из 4х выходов прыгают в "1") при том что входа остаются в '0'. По началу думал что включены внутренние pull-ups по входам они и дергают выхода вверх через логику, но подрядчик божится что внутренние pull-ups не сконфигурированы. (у меня кода нет, точнее схемы - он рисуетм не кодирует).

Смотрю datasheet A3901 - у него входа вроде тоже не имеют внутренних pull-ups, т.е. вроде нечему выхода дергать в '1' по включению питания....но увы это происходит.

Может кто работал с этим CPLD и знает то чего я не знаю что может привести к такому результату ?

 

Сейчас сделал такой эксперемент: стер все содержимое CPLD и включил в таком состянии - все 4 выхода сразу-же дернулись в '1' по включению питания.

 

В datasheet данного CPLD ночего не говориться об внутренних pull-ups, упоминатся внутренние pull-downы но в контексте не использованных входов.

 

Может ли быть что там какие-нить pull-upы на оговоренных конфигурацией выходах ?

 

Сейчас читаю еще раз datasheet - пишется что по выходам macrocells есть CT0, CT1 сигналы управления Rreset/Reset по выходу. Эти Rreset/Reset могут быть disabled. Однако говориться о

том что proper power-on Reset дивайса ставит macrocells в "zero" состояние. У самого чипа не вижу dedicated Reset входов (да и в схеме борта нет). Как тогда контролируется power-on reset ? Как контролировать CT0-5 terms microcellов ? Делается ли это автоматически синтезатором если в коде оговорены данные conditions или делается constrainтами ?

 

Спасибо.

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


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

Предлагаю Вам ознакомиться с документами xapp342.pdf - XPLA3 I/O Cell Characteristics и xapp310.pdf - Power-Up Reset Characteristics of CoolRunner XPLA3 CPLDs. Возможно в них Вам удастся найти ответы.

 

Обратите внимание, XPLA3 вообще не имеет PullDown (а у Вас он фигуригует...)

 

Обратите особое внимание на то, что в XPLA3 (CoolRunner) нет чистых tristate выходов. Во всех IO pin есть HalfLatch, и его никак нельзя отключить. Его нагрузочная способность была достаточна, дабы засветить красный светодиод на моей плате...

 

Если IO pin сконфигурирован как чистый выход, то наличие HalfLatch никак не проявляется.

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


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

Добрый день.

 

Если я правильно понял проблему, то обратите внимание на

раздел Power Up Characteristics в файле ds012.pdf

Файл приложен, успехов.

ds012.pdf

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


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

Сейчас сделал такой эксперемент: стер все содержимое CPLD и включил в таком состянии - все 4 выхода сразу-же дернулись в '1' по включению питания.

 

Непонятно, чего Вы хотите добиться.

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

Ведь это регистры наверно можно ресетить.

Во всяком случае триггеры шмидта на входе драйвера не могут не работать.

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


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

Спасибо всем, просмотрю доки.

 

Чего хотел добиться ? Понять почему выхода драйвятся в 1 когда входа не должны это делать. Т.е. вполне вероятно что что-то дергает выходы по подаче питания вне зависимости от входов.

 

Просмотрю доки, может ситуация прояснится.

Подрядчик коротый проэктировал борд и данный CPLD делал это не кодом VHDL или Verilog а схемно (т.е. гейтами). Там я не видел ничего насчет power-up reset и управления preset/reset macrocellами.

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


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

Спасибо всем, просмотрю доки.

 

Чего хотел добиться ? Понять почему выхода драйвятся в 1 когда входа не должны это делать. Т.е. вполне вероятно что что-то дергает выходы по подаче питания вне зависимости от входов.

 

Просмотрю доки, может ситуация прояснится.

Подрядчик коротый проэктировал борд и данный CPLD делал это не кодом VHDL или Verilog а схемно (т.е. гейтами). Там я не видел ничего насчет power-up reset и управления preset/reset macrocellами.

 

Ссылки на схемный ввод не корректы. Работать в графике примитивами еще проще. Тем более и схемное решение можно в rtl посмотреть. Естественно пакет нужен.

 

Реализванная функция на логике работает или не работает. Интересно все ж таки.

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


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

В любой схеме пока источник выходит на режим, а уровни внутри микросхемы имеют неопределенные уровни возможны такие эффекты.

Рекомендации.

Используйте что-то типа Power Good для идентификации этого состояния и согласованное питание CPLD, микроконтроллера, выходных драйверов (Вам виднее).

Продумывайте выход на режим (диаграмма появления питания, его пропажа и восстановление) устройства не по блочно, а устройства в целом.

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


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

Ссылки на схемный ввод не корректы. Работать в графике примитивами еще проще. Тем более и схемное решение можно в rtl посмотреть. Естественно пакет нужен.

 

Реализванная функция на логике работает или не работает. Интересно все ж таки.

 

Дык я ссылок никаких не давал... :)

Проблема в том что конрактор не работает в стандартных рыночных софтах брендов (ISE, Quartus, ispLever, Orcad, Altium и т.д.) а сделал свой схемный редактор и в него, по договоренности с Xilinxом сделал графический редактор Xilinxовых FPGA/CPLD. Т.е. он не пишет код а рисует и затем синтезит и т.д. из него. У меня есть схемное построение CPLD его, но не имею понятия насчет всего что вокруг (того чт обычно принято задавать в конфигурации contrains и т.д., включая например глобальные сигналы, внутренние pull-ups/downs, специфика timingово раутинга и т.д.).

Связи у нас с контрактором не очень... (были проблемы с ним), посему добиться четкой кооперации с ним не легко. Пытаюсь сам понять проблему и тогда им точно указать что проверить у них в дизайне.

 

Хотя, честно говоря очень хочется плюнуть и самому написать VHLDем, код то будет элементарен, пол страницы. Но затем нужно будет правильно сконфигурировать данный CPLD. У меня ISE WebPack (ибо мы сидим на Латтисе), покя не знаком со средой.

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


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

В Xilinx ISE 8.x были ChipView - программа позволяющая просмотреть потроха CPLD практически полностью (как FPGA Editor для FPGA) - в более новых ISE мне не удалось запустить ChipView (точнее то, что от него осталось). Для просмотра ChipView использует файл *.vm6.

Возьмите с закромов родины ISE 8.2 и посмотрите, что же у вас в проекте. Как я понимаю компилятор (fitter) для CoolRunner единственный, и сделал его Xilinx - поэтому и файл vm6 тоже должен быть.

 

Также fitter выдает очень подробный текстовый отчет о прошивки - по нему Вы тоже сможете детально проанализировать, что у Вас за "схема" в ПЛИС (со всеми Pullup, tristate и т.п. - вплоть до использования внутренних Universal Control Term).

Только помните про HalfLatch незримо присутстующий в каждой ножке ввода/выводы - это единственная бяка нигде не указывается.

 

Потребуйте себе эти вда файла и Вы сможете детально изучить всё, что для Вас слепили.

 

Если кто знает как в ISE 9.x и 10.x можно запустить ChipView прошу мне подсказать. Если напрямую его запустить не реально, то что необходимо для того, чтобы приладить к ISE 9.x и 10.x ChipView от ISE 8.2 ?

 

P.S. Вы можете эти два файла выложить в этой теме, тогда мы сможем их детвльно проанализировать...

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


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

В Xilinx ISE 8.x были ChipView - программа позволяющая просмотреть потроха CPLD практически полностью (как FPGA Editor для FPGA) - в более новых ISE мне не удалось запустить ChipView (точнее то, что от него осталось). Для просмотра ChipView использует файл *.vm6.

Возьмите с закромов родины ISE 8.2 и посмотрите, что же у вас в проекте. Как я понимаю компилятор (fitter) для CoolRunner единственный, и сделал его Xilinx - поэтому и файл vm6 тоже должен быть.

 

Также fitter выдает очень подробный текстовый отчет о прошивки - по нему Вы тоже сможете детально проанализировать, что у Вас за "схема" в ПЛИС (со всеми Pullup, tristate и т.п. - вплоть до использования внутренних Universal Control Term).

Только помните про HalfLatch незримо присутстующий в каждой ножке ввода/выводы - это единственная бяка нигде не указывается.

 

Потребуйте себе эти вда файла и Вы сможете детально изучить всё, что для Вас слепили.

 

Если кто знает как в ISE 9.x и 10.x можно запустить ChipView прошу мне подсказать. Если напрямую его запустить не реально, то что необходимо для того, чтобы приладить к ISE 9.x и 10.x ChipView от ISE 8.2 ?

 

P.S. Вы можете эти два файла выложить в этой теме, тогда мы сможем их детвльно проанализировать...

 

 

Спасибо.

Пока все что имею - JEDEC файл для прошивки и графику CPLD в их исполнении. Дргих файлов нет. Попробую запросить контрактора насчет файла fitterа, не уверен что даст его (в контаркте между моей конторой и контрактором ничего не оговаривалось насчет файлов дизайна и/или промежуточных, т.е. ничего не обязаны кроме файлов необходимых для производства (т.е. JEDEC). Но попробуем, может и даст.

Во всяком случае - ежели не поможет - напишу код сам и разберусь с средой WebPack.

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


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

Спасибо.

(в контаркте между моей конторой и контрактором ничего не оговаривалось насчет файлов дизайна и/или промежуточных, т.е. ничего не обязаны кроме файлов необходимых для производства (т.е. JEDEC). Но попробуем, может и даст.

Во всяком случае - ежели не поможет - напишу код сам и разберусь с средой WebPack.

 

Файлы для производства подразумевают, что кристалл проыерялся разработчиком в связке с драйвером. Вот и потребуйте демонстрации этой проверки.

Если Вы что сами сделаете, нарушите контракт.

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


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

Файлы для производства подразумевают, что кристалл проыерялся разработчиком в связке с драйвером. Вот и потребуйте демонстрации этой проверки.

Если Вы что сами сделаете, нарушите контракт.

 

Ну насчет потребовать - это да, завтра же буду с ними говорить. Подозреваю что они не проверяли после прожига, может даже и не симулировали...

Но насчет нарушения контракта - тут оно уже большой роли играть не будет. Да и код элементарен, только разобраться как в ISE опередлять constraints, pull-ups/downs т.д.

Логика в их дизайне асинхронная, насколько понял выходы у них напрямую из логики, без FFs, что лично мне не нравиться. Нет сигнала power-on reset, нужно понять как обнулять выходной FF (если вставлю) по питанию.

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


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

Да и код элементарен, только разобраться как в ISE определять constraints, pull-ups/downs т.д.

Для constraints Вам необходимо в проект добавить User Constraint File (*.ucf). Описание constraints Вы можете найти в файле CGD.PDF (поставляется вместе с ISE).

 

Нет сигнала power-on reset, нужно понять как обнулять выходной FF (если вставлю) по питанию.

Если Вы будет использовать встроенный синтезатор XST, то:

1. при HDL описании необходимо указать начальные условия в объявлении переменных/сигналов.

2. при схемнов описании необходимо задать constraint INIT ('S'/'R').

Но при любом варианте описания проекта необходимо в опциях fitter'a проставить: Default Powerup Value of Registers = FPGA equivalent.

 

Сброс/предустановка триггеров по power-on reset тоже хорошо помогает.

Но помните, при старте CoolRunner некоторое время инициализируется... и в это время все выходы заперты и HalfLatch их подтягивает к '1'.

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


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

Для constraints Вам необходимо в проект добавить User Constraint File (*.ucf). Описание constraints Вы можете найти в файле CGD.PDF (поставляется вместе с ISE).

Если Вы будет использовать встроенный синтезатор XST, то:

1. при HDL описании необходимо указать начальные условия в объявлении переменных/сигналов.

2. при схемнов описании необходимо задать constraint INIT ('S'/'R').

Но при любом варианте описания проекта необходимо в опциях fitter'a проставить: Default Powerup Value of Registers = FPGA equivalent.

 

Сброс/предустановка триггеров по power-on reset тоже хорошо помогает.

Но помните, при старте CoolRunner некоторое время инициализируется... и в это время все выходы заперты и HalfLatch их подтягивает к '1'.

 

Спасибо.

Скажите, а симулятор (после post-routing) отображает точное поведение включая HalfLatch ? Или этого в симуляторе не увидеть ?

Последнее предложение в вашем ответе настораживает и предполагает что есть только один выход ежели нужно обнулять выходы по самому началу (power-up) - внешние pull-downs, так ?

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


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

Скажите, а симулятор (после post-routing) отображает точное поведение включая HalfLatch ? Или этого в симуляторе не увидеть ?

К сожалению даже при Post-Fit симуляции влияние HalfLatch в модели отсутствует, во всем остальном Post-Fit модель весьма точно воспроизводит поведение CoolRunner.

 

Последнее предложение в вашем ответе настораживает и предполагает что есть только один выход ежели нужно обнулять выходы по самому началу (power-up) - внешние pull-downs, так ?

Да, т.к. при цикле PowerUp работают HalfLatch, то в приходиться ставить внешние резисторы (я использую 3.3кОм при питании 3.3В - номинал резистора выбирал, для обеспечения тока 1 мА).

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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