реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> CoolRuner, работа без внешнего ресета
Serg`
сообщение Dec 21 2008, 07:49
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-06-07
Пользователь №: 28 668



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

Код
signal flag : std_logic:=0;
поможет???
Go to the top of the page
 
+Quote Post
sazh
сообщение Dec 21 2008, 15:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Serg` @ Dec 21 2008, 10:49) *
У меня возник вопрос, мб он комуто покажеться глупым, но на поей 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;
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Dec 21 2008, 16:38
Сообщение #3


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



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

Насколько я понял, Вам необходимо при старте платы иметь на некоторых ножках ПЛИС логические нули, а на других - единицы. Если так, то проблема разбивается на 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, присутствующем в каждом выходе. Отключить его невозможно, поэтому приходиться учитывать его влияние.
Go to the top of the page
 
+Quote Post
Serg`
сообщение Dec 22 2008, 18:48
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-06-07
Пользователь №: 28 668



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

Я использую CoolRunner2 XCR3256XL
Go to the top of the page
 
+Quote Post
Serg`
сообщение Dec 22 2008, 20:15
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-06-07
Пользователь №: 28 668



Я почитал про 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В??) нельзя отключить!

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


Цитата(sazh @ Dec 21 2008, 18:19) *
Если регистр при инициализации можно в 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" и передернет ресет в противоположное состояние!!Оч хитро!!Надо попробовать!
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Dec 23 2008, 07:33
Сообщение #6


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Serg` @ Dec 23 2008, 00:15) *
(какой?? ТТЛ??)

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

Цитата(Serg` @ Dec 23 2008, 00:15) *
Из вышеперечисленного я сделал выводы:
- если у нас есть вход или высокоимпедансный выход или незадействованная ножка, то она будет привязана к слабой единице (1,25В??).

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

Цитата(Serg` @ Dec 23 2008, 00:15) *
- так же если ножка плавающая и напряжение на ней от 0,9В до 1,6В то она так же привязывается к слабой единице (1,25В??). И тем самым не пересекает порог срабатывания некоторых устройств (псевдо плавающая).

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

Цитата(Serg` @ Dec 23 2008, 00:15) *
- привязывать к нулю нужно через 10Ком чтоб обойти Half Latch.

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

Цитата(Serg` @ Dec 23 2008, 00:15) *
- не рекомендуется применять эти ПЛМ если нужны сигналы с 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В) и постарался выкорчевать ссылки на всю старую документацию.

Если кто знает эту историю полностью, пожалуйста, поделитесь.
Go to the top of the page
 
+Quote Post
Serg`
сообщение Dec 23 2008, 20:21
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-06-07
Пользователь №: 28 668



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

Еще раз ОГРОМНОЕ СПАСИБО!!
Go to the top of the page
 
+Quote Post
Kolia
сообщение Mar 19 2009, 17:49
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762



В даташите написано, что CoolRuner толерантен к 5Впо входу, но напряжение 5В на пины должно подаваться только после подачи питания 3,3В.
Меня это немногог смущает, как микросхема будет себя вести если я ее подключу к ISA напрямую? Какие могут быть подводные камни в такой схеме?
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Mar 25 2009, 15:14
Сообщение #9


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Kolia @ Mar 19 2009, 21:49) *
В даташите написано, что CoolRuner толерантен к 5Впо входу, но напряжение 5В на пины должно подаваться только после подачи питания 3,3В.
Меня это немногог смущает, как микросхема будет себя вести если я ее подключу к ISA напрямую? Какие могут быть подводные камни в такой схеме?

Задайте этот вопрос в официальное представительство Xilinx - Inline Group (если Вы у них приобретали микросхемы). У них есть специальный человек для подобных вопросов.
Вижу 4 варианта:
1. ПЛИС сгорает.
2. ПЛИС засаживает ISA.
3. ПЛИС подсаживает ISA, и через себя питает цепь +3.3В.
4. Всё работает нормально.

Чтобы не ломать голову, а что именно будет, в старых проектах с ISA использовал двунаправленные буфера 74AHC(T).
Go to the top of the page
 
+Quote Post
Kolia
сообщение Mar 30 2009, 08:41
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762



Цитата(Boris_TS @ Mar 25 2009, 18:14) *
Чтобы не ломать голову, а что именно будет, в старых проектах с ISA использовал двунаправленные буфера 74AHC(T).

Как вариант можно принять, но у меня формат платы PC/104. А буферы в корпусе типа TSSOP тяжело достать (в основном SOIC). Поэтому хотелось бы узнать у людей кто с этим сталкивался на практике. Или может поставить на шину еще одну плиску (XC9572).
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Mar 30 2009, 18:36
Сообщение #11


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Kolia @ Mar 30 2009, 11:41) *
Как вариант можно принять, но у меня формат платы PC/104. А буферы в корпусе типа TSSOP тяжело достать (в основном SOIC). Поэтому хотелось бы узнать у людей кто с этим сталкивался на практике.

Работал именно с PC104, ставил две Philips 74AHC(T) в TSSOP корпусе по шине данных, остальные линии (входы для ПЛИС) заходили на XPLA3 напрямую. Питание на ПЛИС подавалось с IRU1207-33CS без задержек.
Go to the top of the page
 
+Quote Post
Kolia
сообщение Mar 31 2009, 06:21
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762



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

Спасибо. Если все работает нормально, то так даже лучше smile.gif, а то для формирования шины на ПЛИС больно жирновато получается. Буду искать TSSOP.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Mar 31 2009, 08:33
Сообщение #13


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Kolia @ Mar 31 2009, 09:21) *
Спасибо. Если все работает нормально, то так даже лучше smile.gif, а то для формирования шины на ПЛИС больно жирновато получается. Буду искать TSSOP.

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

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

При поданом питании +3.3В с XPLA3 проблем с 5В толерантностью у меня не возникало ниразу,.. а вот без питания я не пробовал подавать на ПЛИС 5 В сигналы, поэтому ничего не могу сказать об этом случае. А еще есть время конфигурирования ПЛИС... наверное желательно, чтобы в это время на ПЛИС не подовались 5В сигналы...
Но вопросы на которые необходимо знать точные ответы, лучше адресовать к самому Xilinx, т.к. только они знают как они же сами втихоря меняют технолоический процес производства ПЛИС. На форуме мы может только посоветовать или сказать что 4 года назад работало хорошо. А вот в inline Group (официаный представитель Xilinx, вроде бы его зона ответственности распространяется и на Белорусию) есть специальный человечек, отвечающий именно на технические вопросы.
Go to the top of the page
 
+Quote Post
Kolia
сообщение Mar 31 2009, 11:54
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762



Спасибо. Плата PC/104 пока неизвестна, поэтому нужен универсальной вариант. Попробую узнать на Xilinx.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Apr 8 2009, 08:30
Сообщение #15


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Kolia @ Mar 31 2009, 14:54) *
Плата PC/104 пока неизвестна, поэтому нужен универсальной вариант.

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

Надеюсь эта информация окажется полезной.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 10:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016