Zeratul 0 21 декабря, 2008 Опубликовано 21 декабря, 2008 · Жалоба У меня возник вопрос, мб он комуто покажеться глупым, но на поей CPLDшке нет внешнего сигнала ресет!Могу ли я привязкой PULLUP И PULLDOWN Уустоновить исходные значения моих выходных сигналов??И как быть с устоновкой внутренних сигналов?? Запись signal flag : std_logic:=0; поможет??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 21 декабря, 2008 Опубликовано 21 декабря, 2008 · Жалоба У меня возник вопрос, мб он комуто покажеться глупым, но на поей 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 21 декабря, 2008 Опубликовано 21 декабря, 2008 · Жалоба Вопрос совсем не глупый, а очень даже нужный - ибо начальные условия крайне важны для правильного функционирования устройств. Насколько я понял, Вам необходимо при старте платы иметь на некоторых ножках ПЛИС логические нули, а на других - единицы. Если так, то проблема разбивается на 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, присутствующем в каждом выходе. Отключить его невозможно, поэтому приходиться учитывать его влияние. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeratul 0 22 декабря, 2008 Опубликовано 22 декабря, 2008 · Жалоба Спасибо огромное за сотль полные ответы! Завтра попробую! О результатах вечером расскажу! А сейчас полезу на Xilinx искать доки по XPLA3 и HalfLatch!Кстати HalfLatch - Это полу защелка?? Я использую CoolRunner2 XCR3256XL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeratul 0 22 декабря, 2008 Опубликовано 22 декабря, 2008 · Жалоба Я почитал про 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" и передернет ресет в противоположное состояние!!Оч хитро!!Надо попробовать! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 23 декабря, 2008 Опубликовано 23 декабря, 2008 · Жалоба (какой?? ТТЛ??) Не. 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В) и постарался выкорчевать ссылки на всю старую документацию. Если кто знает эту историю полностью, пожалуйста, поделитесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeratul 0 23 декабря, 2008 Опубликовано 23 декабря, 2008 · Жалоба Спасибо за разъяснения!!Приму к сведению!!Кстати сегодня сделал все по вашим советам и все вышло как надо и без внешнего рескта!! Еще раз ОГРОМНОЕ СПАСИБО!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 19 марта, 2009 Опубликовано 19 марта, 2009 · Жалоба В даташите написано, что CoolRuner толерантен к 5Впо входу, но напряжение 5В на пины должно подаваться только после подачи питания 3,3В. Меня это немногог смущает, как микросхема будет себя вести если я ее подключу к ISA напрямую? Какие могут быть подводные камни в такой схеме? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 25 марта, 2009 Опубликовано 25 марта, 2009 · Жалоба В даташите написано, что CoolRuner толерантен к 5Впо входу, но напряжение 5В на пины должно подаваться только после подачи питания 3,3В. Меня это немногог смущает, как микросхема будет себя вести если я ее подключу к ISA напрямую? Какие могут быть подводные камни в такой схеме? Задайте этот вопрос в официальное представительство Xilinx - Inline Group (если Вы у них приобретали микросхемы). У них есть специальный человек для подобных вопросов. Вижу 4 варианта: 1. ПЛИС сгорает. 2. ПЛИС засаживает ISA. 3. ПЛИС подсаживает ISA, и через себя питает цепь +3.3В. 4. Всё работает нормально. Чтобы не ломать голову, а что именно будет, в старых проектах с ISA использовал двунаправленные буфера 74AHC(T). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 30 марта, 2009 Опубликовано 30 марта, 2009 · Жалоба Чтобы не ломать голову, а что именно будет, в старых проектах с ISA использовал двунаправленные буфера 74AHC(T). Как вариант можно принять, но у меня формат платы PC/104. А буферы в корпусе типа TSSOP тяжело достать (в основном SOIC). Поэтому хотелось бы узнать у людей кто с этим сталкивался на практике. Или может поставить на шину еще одну плиску (XC9572). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 30 марта, 2009 Опубликовано 30 марта, 2009 · Жалоба Как вариант можно принять, но у меня формат платы PC/104. А буферы в корпусе типа TSSOP тяжело достать (в основном SOIC). Поэтому хотелось бы узнать у людей кто с этим сталкивался на практике. Работал именно с PC104, ставил две Philips 74AHC(T) в TSSOP корпусе по шине данных, остальные линии (входы для ПЛИС) заходили на XPLA3 напрямую. Питание на ПЛИС подавалось с IRU1207-33CS без задержек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 31 марта, 2009 Опубликовано 31 марта, 2009 · Жалоба Работал именно с PC104, ставил две Philips 74AHC(T) в TSSOP корпусе по шине данных, остальные линии (входы для ПЛИС) заходили на XPLA3 напрямую. Питание на ПЛИС подавалось с IRU1207-33CS без задержек. Спасибо. Если все работает нормально, то так даже лучше :), а то для формирования шины на ПЛИС больно жирновато получается. Буду искать TSSOP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 31 марта, 2009 Опубликовано 31 марта, 2009 · Жалоба Спасибо. Если все работает нормально, то так даже лучше :), а то для формирования шины на ПЛИС больно жирновато получается. Буду искать TSSOP. Поищите аналогичные не Philips буферы - вроде их будет попроще достать. Немного уточню... Вам необходимо проглядеть детально информацию о PC-104 с которыми Вы будете иметь дело. Про свои PC-104 я точно знал, что они не выдадут ток по шинам адреса и управления ISA достаточный для повреждения XPLA3. Если Вам заранее не известен набор PC-104 с которыми понадобиться работать, то на всякий случай, предусмотрите последовательные резисторы на все линии подходящие к XPLA3, в случае необходимости Вы всегда сможете запаять не 0Ом, а что-нибудь посущественней - нескольких XAPP были рекомендации на тему ограничения тока для улучшения выживания для различных семейств ПЛИС. При поданом питании +3.3В с XPLA3 проблем с 5В толерантностью у меня не возникало ниразу,.. а вот без питания я не пробовал подавать на ПЛИС 5 В сигналы, поэтому ничего не могу сказать об этом случае. А еще есть время конфигурирования ПЛИС... наверное желательно, чтобы в это время на ПЛИС не подовались 5В сигналы... Но вопросы на которые необходимо знать точные ответы, лучше адресовать к самому Xilinx, т.к. только они знают как они же сами втихоря меняют технолоический процес производства ПЛИС. На форуме мы может только посоветовать или сказать что 4 года назад работало хорошо. А вот в inline Group (официаный представитель Xilinx, вроде бы его зона ответственности распространяется и на Белорусию) есть специальный человечек, отвечающий именно на технические вопросы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 31 марта, 2009 Опубликовано 31 марта, 2009 · Жалоба Спасибо. Плата PC/104 пока неизвестна, поэтому нужен универсальной вариант. Попробую узнать на Xilinx. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 8 апреля, 2009 Опубликовано 8 апреля, 2009 · Жалоба Плата PC/104 пока неизвестна, поэтому нужен универсальной вариант. Э-хе-хе совсем забыл,.. на тему 5V толерантности: есть у меня старый проектик, в котором стоит XCR3256XL-10PQ208I подключенная напрямую к PCI 5V 33Mhz. Конечно, PCI - это не ISA, но несколько этих плат достаточно интенсивно работают (каждый день не менее 10 часов) уже около 2-3 лет с чипсетами VIA, Intel, nForce. Сбоев, как и проблем пока тоже нет. Питание ПЛИС берётся непосредственно с контактов PCI разъема (+3.3V). Надеюсь эта информация окажется полезной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться