|
CoolRuner, работа без внешнего ресета |
|
|
|
Dec 21 2008, 07:49
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-06-07
Пользователь №: 28 668

|
У меня возник вопрос, мб он комуто покажеться глупым, но на поей CPLDшке нет внешнего сигнала ресет!Могу ли я привязкой PULLUP И PULLDOWN Уустоновить исходные значения моих выходных сигналов??И как быть с устоновкой внутренних сигналов?? Запись Код signal flag : std_logic:=0; поможет???
|
|
|
|
|
Dec 21 2008, 15:19
|
Гуру
     
Группа: Свой
Сообщений: 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;
|
|
|
|
|
Dec 21 2008, 16:38
|
Злополезный
   
Группа: Свой
Сообщений: 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, присутствующем в каждом выходе. Отключить его невозможно, поэтому приходиться учитывать его влияние.
|
|
|
|
|
Dec 22 2008, 20:15
|
Частый гость
 
Группа: Участник
Сообщений: 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" и передернет ресет в противоположное состояние!!Оч хитро!!Надо попробовать!
|
|
|
|
|
Dec 23 2008, 07:33
|
Злополезный
   
Группа: Свой
Сообщений: 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В) и постарался выкорчевать ссылки на всю старую документацию. Если кто знает эту историю полностью, пожалуйста, поделитесь.
|
|
|
|
|
Mar 25 2009, 15:14
|
Злополезный
   
Группа: Свой
Сообщений: 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).
|
|
|
|
|
Mar 30 2009, 08:41
|
Частый гость
 
Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762

|
Цитата(Boris_TS @ Mar 25 2009, 18:14)  Чтобы не ломать голову, а что именно будет, в старых проектах с ISA использовал двунаправленные буфера 74AHC(T). Как вариант можно принять, но у меня формат платы PC/104. А буферы в корпусе типа TSSOP тяжело достать (в основном SOIC). Поэтому хотелось бы узнать у людей кто с этим сталкивался на практике. Или может поставить на шину еще одну плиску (XC9572).
|
|
|
|
|
Mar 31 2009, 06:21
|
Частый гость
 
Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762

|
Цитата(Boris_TS @ Mar 30 2009, 21:36)  Работал именно с PC104, ставил две Philips 74AHC(T) в TSSOP корпусе по шине данных, остальные линии (входы для ПЛИС) заходили на XPLA3 напрямую. Питание на ПЛИС подавалось с IRU1207-33CS без задержек. Спасибо. Если все работает нормально, то так даже лучше  , а то для формирования шины на ПЛИС больно жирновато получается. Буду искать TSSOP.
|
|
|
|
|
Mar 31 2009, 08:33
|
Злополезный
   
Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188

|
Цитата(Kolia @ Mar 31 2009, 09:21)  Спасибо. Если все работает нормально, то так даже лучше  , а то для формирования шины на ПЛИС больно жирновато получается. Буду искать TSSOP. Поищите аналогичные не Philips буферы - вроде их будет попроще достать. Немного уточню... Вам необходимо проглядеть детально информацию о PC-104 с которыми Вы будете иметь дело. Про свои PC-104 я точно знал, что они не выдадут ток по шинам адреса и управления ISA достаточный для повреждения XPLA3. Если Вам заранее не известен набор PC-104 с которыми понадобиться работать, то на всякий случай, предусмотрите последовательные резисторы на все линии подходящие к XPLA3, в случае необходимости Вы всегда сможете запаять не 0Ом, а что-нибудь посущественней - нескольких XAPP были рекомендации на тему ограничения тока для улучшения выживания для различных семейств ПЛИС. При поданом питании +3.3В с XPLA3 проблем с 5В толерантностью у меня не возникало ниразу,.. а вот без питания я не пробовал подавать на ПЛИС 5 В сигналы, поэтому ничего не могу сказать об этом случае. А еще есть время конфигурирования ПЛИС... наверное желательно, чтобы в это время на ПЛИС не подовались 5В сигналы... Но вопросы на которые необходимо знать точные ответы, лучше адресовать к самому Xilinx, т.к. только они знают как они же сами втихоря меняют технолоический процес производства ПЛИС. На форуме мы может только посоветовать или сказать что 4 года назад работало хорошо. А вот в inline Group (официаный представитель Xilinx, вроде бы его зона ответственности распространяется и на Белорусию) есть специальный человечек, отвечающий именно на технические вопросы.
|
|
|
|
|
Apr 8 2009, 08:30
|
Злополезный
   
Группа: Свой
Сообщений: 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). Надеюсь эта информация окажется полезной.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|