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

У меня возник вопрос, мб он комуто покажеться глупым, но на поей CPLDшке нет внешнего сигнала ресет!Могу ли я привязкой PULLUP И PULLDOWN Уустоновить исходные значения моих выходных сигналов??И как быть с устоновкой внутренних сигналов?? Запись

 

signal flag : std_logic:=0;

поможет???

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


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

У меня возник вопрос, мб он комуто покажеться глупым, но на поей CPLDшке нет внешнего сигнала ресет!Могу ли я привязкой PULLUP И PULLDOWN Уустоновить исходные значения моих выходных сигналов??И как быть с устоновкой внутренних сигналов?? Запись

 

signal flag : std_logic:=0;

поможет???

 

Если регистр при инициализации можно в 0 установить должна помочь.

А значит и внутренним ресетом регистрам нужные значения задать.

интересно у xilinx на cpld и fpga это реализуется на ресурсах кристалла и в среде моделирования.

entity reset_power_up is
Port(
             clk : in std_logic;
reset_power_up_n : out std_logic
);
end reset_power_up;

architecture Behavioral of reset_power_up is
signal   cnt_power_up : std_logic_vector (5 downto 0) := "000000";
signal reset_power_up : std_logic := '0';

begin

reset_power_up_n <= reset_power_up;

process(clk)
begin
if(clk='1' and clk'event) then
if (cnt_power_up = "111111") then  reset_power_up <= '1'; end if;
if (reset_power_up = '0') then  cnt_power_up <= cnt_power_up + 1; end if;
end if;
end process;

end Behavioral;

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


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

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

 

Насколько я понял, Вам необходимо при старте платы иметь на некоторых ножках ПЛИС логические нули, а на других - единицы. Если так, то проблема разбивается на 2 составляющие.

 

1. После подачи питания, CPLD конфигурируется. При этом все ножки ввода/вывода у CoolRunner (XPLA3) имеют слабую подтяжку к '1' (если я ничего не путаю, то эквивалентный резистивный номинал PullUp где-то от 40кОм до 80кОм - хорошо перетягивается к логическому нулю 3.3кОм).

 

2. После успешного завершения конфигурации CPLD, ножки переходят в то состояние, которое Вы описали в Вашем проекте.

 

Если Вы использует синтезатор XST, то начальные нзачения переменных (сигналов) будут правильно преобразованы в начальные состояния триггеров. (Т.е. так, как Вы предложили signal flag: std_logic := 0;, но еще необходимо в настройках Fitter'а выставить Default Powerup Value of Register - FPGA Equivalent).

 

Правильность установки начальных значений триггеров Вы можете проверить по Fitter Report'у:

1. для HTML версии - раздел Logic колонка Reg Init State.

2. для TXT версии - раздел Summary of Mapped Logic колонка Reg Init State.

 

Если Вы используете XPLA3 обязательно ознакомьтесь с механизмом HalfLatch, присутствующем в каждом выходе. Отключить его невозможно, поэтому приходиться учитывать его влияние.

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


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

Спасибо огромное за сотль полные ответы! Завтра попробую! О результатах вечером расскажу! А сейчас полезу на Xilinx искать доки по XPLA3 и HalfLatch!Кстати HalfLatch - Это полу защелка??

 

Я использую CoolRunner2 XCR3256XL

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


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

Я почитал про half latch и понял следующее:

 

When the I/O Cell is configured as an input (or 3-stated output), a half latch feature exists.This half latch pulls the input High (through a weak pull-up) if the input should float and cross the threshold. This protects the input from staying in the linear region and ausing anincreased amount of power consumption

 

Я понимаю это так:

 

Когда I/O ячейка сконфигурирована как вход (или выход в 3-ем состоянии) то используется технология half latch. Эта технология привязывает вход к 1 (слабая привязка это 40-80Ом??) в том случаи если вход должен быть не привязан но пересек порог (какой?? ТТЛ??). Таким образом защищая вход от простоя в линейном регионе (что это?? постоянный уровень??) и увеличивая эффект экономии мощности.

 

This weak pull up is automatically turned on when a pin is unused by the design.

 

Эта слабая привязка к 1 включается автоматически когда ножка не задействована.

 

The half latch is essentially a pull-up that turns on only when the I/O pin voltage is in the linear region (not a 0, not a 1).So, when the voltage at the pin is in the trip-point region or higher, the half latch will be enabled.

 

half latch это принудительная привязка к 1 которая включается когда напряжение ножки I/O в линейном регионе (не 1 не 0). Итак когда напряжение на ножке в trip-point регеоне или выше, то half latch будет включен.

 

The range of the trip-point is from 0.9V to 1.6V

 

Размах trip-point от 0,9В до 1,6В.

 

The idea is that it will prevent signals from floating, and therefore, save power.

 

Идея в том чтоб сигнал не был плавающим и тем самым не расходовал энергию.

 

If you want to pull down the input, a resistor strong enough to overcome the half latch must be used. Xilinx recommends that any pull-down resistor value be 10k Ohms or less.Xilinx does not recommend using CoolRunner XPLA3 devices in any design that requires I/O pins to truly float.

 

Если же вы хотите притянуть ножку к 0, то тогда нужен резистор достаточно большого наминала чтоб убрать эффект half latch. Xilinx рекомендует использовать резисторы номиналом 10КОм или меньше. Xilinx не рекомендует использовать CoolRunner XPLA3 в проектах где действительно нужны ножки с плавающим состоянием.

 

The presence of a Half Latch means that an XPLA3 I/O pin will never be truly high impedance.

 

Сама сущность технологии Half Latch подразумевает, что XPLA3 I/O pin никогда не достигнут 3-его состояния.

Из вышеперечисленного я сделал выводы:

 

- если у нас есть вход или высокоимпедансный выход или незадействованная ножка, то она будет привязана к слабой единице (1,25В??).

- так же если ножка плавающая и напряжение на ней от 0,9В до 1,6В то она так же привязывается к слабой единице (1,25В??). И тем самым не пересекает порог срабатывания некоторых устройств(псевдо плавающая).

- привязывать к нулю нужно через 10Ком чтоб обойти Half Latch.

- не рекомендуется применять эти ПЛМ если нужны сигналы с 3-им состоянием или плавающие, и эту привязку к слабой единице (1,25В??) нельзя отключить!

 

Я правильно понял??

 

 

Если регистр при инициализации можно в 0 установить должна помочь.

А значит и внутренним ресетом регистрам нужные значения задать.

интересно у xilinx на cpld и fpga это реализуется на ресурсах кристалла и в среде моделирования.

entity reset_power_up is
Port(
             clk : in std_logic;
reset_power_up_n : out std_logic
);
end reset_power_up;

architecture Behavioral of reset_power_up is
signal   cnt_power_up : std_logic_vector (5 downto 0) := "000000";
signal reset_power_up : std_logic := '0';

begin

reset_power_up_n <= reset_power_up;

process(clk)
begin
if(clk='1' and clk'event) then
if (cnt_power_up = "111111") then  reset_power_up <= '1'; end if;
if (reset_power_up = '0') then  cnt_power_up <= cnt_power_up + 1; end if;
end if;
end process;

end Behavioral;

 

Тоесть вы предлагаете использовать обычный счетчик ведь он всеравно когданибудь дойдет до значения "11111" и передернет ресет в противоположное состояние!!Оч хитро!!Надо попробовать!

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


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

(какой?? ТТЛ??)

Не. IO ножки XPLA3 работают в стандарте LVTTL - соответственно и пороги LVTTL.

 

Из вышеперечисленного я сделал выводы:

- если у нас есть вход или высокоимпедансный выход или незадействованная ножка, то она будет привязана к слабой единице (1,25В??).

Из экспериментов на живой плате выяснилось, что подтягивается аж до 3.3В (питания), а фразу Weak Pullup я бы истолковал немного по иному: слаботочный Pullup.

 

- так же если ножка плавающая и напряжение на ней от 0,9В до 1,6В то она так же привязывается к слабой единице (1,25В??). И тем самым не пересекает порог срабатывания некоторых устройств (псевдо плавающая).

Half Latch старается дотянуть напряжение на ножке до 3.3В (питания), тока этой подтяжки однако хватает, чтобы в светодиоде Kingbright KP-2012EC проснулся красненький огонек (сланький, но четко различимый).

 

- привязывать к нулю нужно через 10Ком чтоб обойти Half Latch.

Я перетягиваю через 3.3кОм, но мои устройства работают в условиях повышенных электромагнитных помех... а питания не ограничено, поэтому и подстраховываюсь "достаточно" большим током подтяжки: 1 мА.

 

- не рекомендуется применять эти ПЛМ если нужны сигналы с 3-им состоянием или плавающие, и эту привязку к слабой единице (1,25В??) нельзя отключить!

Именно, настоящего высокоимпедансного состояния у XPLA3 - нет, но ведь и понадобиться оно может только для работы с аналоговыми схемами... Поэтому рекомендую применять вообще FPGA (ну или на крайний случай CoolRunner II - кстати, может он Вам подойдет больше - он дешевле, жрет меньше и быстрее, правда в нем нет 5В толерантности и более чахлые цепи управления).

 

Я предполагаю, что HalfLatch - вообще всегда включен, когда напряжения на IO ножке опускается ниже "устойчивого" верхнего значения логического нуля (0.8В ? или 0.9В ?), то HalfLatch - перестает травить ток. Дальше - больше, есть стойкое подозрение, что: pullup - в этой ПЛИС отсутствует как таковой (его функции выполняет все тот же Half Latch, только есть 2 режима работы оной схемы: чуть побольше току и чуть поменьше току), поэтому и нет как такового резистивного эквивалента, но и при устойчивом нуле на "подтянутой" ножке лишний ток не течет – тоже хорошо.

 

Но, к сожалению, эти домыслы мне не удалось ни опровергнуть, ни подтвердить. CoolRunner ведь был разработан первоначально Philips... только выдавали его по ошибке за 5 Вольтовую ПЛИС, пока оные не начали выходить из строя. В общем, история очень мутная получилась; и Xilinx постарался забыть её как можно скорее, в конечном итоге обозвав это семейство ПЛИС XPLA3 (Xilinx PLA 3.3В) и постарался выкорчевать ссылки на всю старую документацию.

 

Если кто знает эту историю полностью, пожалуйста, поделитесь.

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


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

Спасибо за разъяснения!!Приму к сведению!!Кстати сегодня сделал все по вашим советам и все вышло как надо и без внешнего рескта!!

 

Еще раз ОГРОМНОЕ СПАСИБО!!

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


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

В даташите написано, что CoolRuner толерантен к 5Впо входу, но напряжение 5В на пины должно подаваться только после подачи питания 3,3В.

Меня это немногог смущает, как микросхема будет себя вести если я ее подключу к ISA напрямую? Какие могут быть подводные камни в такой схеме?

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


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

В даташите написано, что CoolRuner толерантен к 5Впо входу, но напряжение 5В на пины должно подаваться только после подачи питания 3,3В.

Меня это немногог смущает, как микросхема будет себя вести если я ее подключу к ISA напрямую? Какие могут быть подводные камни в такой схеме?

Задайте этот вопрос в официальное представительство Xilinx - Inline Group (если Вы у них приобретали микросхемы). У них есть специальный человек для подобных вопросов.

Вижу 4 варианта:

1. ПЛИС сгорает.

2. ПЛИС засаживает ISA.

3. ПЛИС подсаживает ISA, и через себя питает цепь +3.3В.

4. Всё работает нормально.

 

Чтобы не ломать голову, а что именно будет, в старых проектах с ISA использовал двунаправленные буфера 74AHC(T).

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


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

Чтобы не ломать голову, а что именно будет, в старых проектах с ISA использовал двунаправленные буфера 74AHC(T).

Как вариант можно принять, но у меня формат платы PC/104. А буферы в корпусе типа TSSOP тяжело достать (в основном SOIC). Поэтому хотелось бы узнать у людей кто с этим сталкивался на практике. Или может поставить на шину еще одну плиску (XC9572).

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


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

Как вариант можно принять, но у меня формат платы PC/104. А буферы в корпусе типа TSSOP тяжело достать (в основном SOIC). Поэтому хотелось бы узнать у людей кто с этим сталкивался на практике.

Работал именно с PC104, ставил две Philips 74AHC(T) в TSSOP корпусе по шине данных, остальные линии (входы для ПЛИС) заходили на XPLA3 напрямую. Питание на ПЛИС подавалось с IRU1207-33CS без задержек.

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


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

Работал именно с PC104, ставил две Philips 74AHC(T) в TSSOP корпусе по шине данных, остальные линии (входы для ПЛИС) заходили на XPLA3 напрямую. Питание на ПЛИС подавалось с IRU1207-33CS без задержек.

Спасибо. Если все работает нормально, то так даже лучше :), а то для формирования шины на ПЛИС больно жирновато получается. Буду искать TSSOP.

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


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

Спасибо. Если все работает нормально, то так даже лучше :), а то для формирования шины на ПЛИС больно жирновато получается. Буду искать TSSOP.

Поищите аналогичные не Philips буферы - вроде их будет попроще достать.

 

Немного уточню... Вам необходимо проглядеть детально информацию о PC-104 с которыми Вы будете иметь дело. Про свои PC-104 я точно знал, что они не выдадут ток по шинам адреса и управления ISA достаточный для повреждения XPLA3. Если Вам заранее не известен набор PC-104 с которыми понадобиться работать, то на всякий случай, предусмотрите последовательные резисторы на все линии подходящие к XPLA3, в случае необходимости Вы всегда сможете запаять не 0Ом, а что-нибудь посущественней - нескольких XAPP были рекомендации на тему ограничения тока для улучшения выживания для различных семейств ПЛИС.

 

При поданом питании +3.3В с XPLA3 проблем с 5В толерантностью у меня не возникало ниразу,.. а вот без питания я не пробовал подавать на ПЛИС 5 В сигналы, поэтому ничего не могу сказать об этом случае. А еще есть время конфигурирования ПЛИС... наверное желательно, чтобы в это время на ПЛИС не подовались 5В сигналы...

Но вопросы на которые необходимо знать точные ответы, лучше адресовать к самому Xilinx, т.к. только они знают как они же сами втихоря меняют технолоический процес производства ПЛИС. На форуме мы может только посоветовать или сказать что 4 года назад работало хорошо. А вот в inline Group (официаный представитель Xilinx, вроде бы его зона ответственности распространяется и на Белорусию) есть специальный человечек, отвечающий именно на технические вопросы.

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


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

Спасибо. Плата PC/104 пока неизвестна, поэтому нужен универсальной вариант. Попробую узнать на Xilinx.

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


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

Плата PC/104 пока неизвестна, поэтому нужен универсальной вариант.

Э-хе-хе совсем забыл,.. на тему 5V толерантности: есть у меня старый проектик, в котором стоит XCR3256XL-10PQ208I подключенная напрямую к PCI 5V 33Mhz. Конечно, PCI - это не ISA, но несколько этих плат достаточно интенсивно работают (каждый день не менее 10 часов) уже около 2-3 лет с чипсетами VIA, Intel, nForce. Сбоев, как и проблем пока тоже нет. Питание ПЛИС берётся непосредственно с контактов PCI разъема (+3.3V).

 

Надеюсь эта информация окажется полезной.

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


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

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

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

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

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

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

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

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

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

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