brumal 0 30 мая, 2008 Опубликовано 30 мая, 2008 · Жалоба Есть следующий код на VHDL(Он не есть цель, просто очень упрощеныый тест): ---------------------------------------------------------------------------------- -- Company: -- Engineer: -- -- Create Date: 12:42:33 05/30/2008 -- Design Name: -- Module Name: main_test - Behavioral -- Project Name: -- Target Devices: -- Tool versions: -- Description: -- -- Dependencies: -- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: -- ---------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity main_test is Port ( clock : in STD_LOGIC; data : in STD_LOGIC_VECTOR(3 downto 0); led : out std_logic_vector(3 downto 0) := "0000"); end main_test; architecture Behavioral of main_test is begin process(clock) begin if clock'event and clock = '1' then case data is when "0000" => led <= "1000"; when "0001" => led <= "0001"; when "0010" => led <= "0100"; when "0011" => led <= "0010"; when "0100" => led <= "1001"; when "0101" => led <= "0110"; when "0110" => led <= "1110"; when "0111" => led <= "0111"; when "1000" => led <= "1111"; when others => led <= "0000"; end case; end if; end process; end Behavioral; Сигнал clock заведен на вывод GCK, данные подведены одинаковыми по длине проводами(формируются пиком). Работаю с CPLD следующим образом: выставляю данные, жду два такта работы пика(кварц 10 МГц), "дергаю" вверх clock, "дергаю" клок вниз. Потом жду 4 секунды и повторяю процедуру. Т.е. имеем жуткий duty cycle. Может ли это быть причиной того, что cpld некоторые команды не ловит, а некоторые заменяет другими? Или у меня есть ошибка в куске кода? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 30 мая, 2008 Опубликовано 30 мая, 2008 · Жалоба Непонятна суть проблемы. С симуляторе глючит или в железе или вы ISP пытаетесь реализовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brumal 0 30 мая, 2008 Опубликовано 30 мая, 2008 · Жалоба Непонятна суть проблемы. С симуляторе глючит или в железе или вы ISP пытаетесь реализовать? В симуляторе - работает отлично. что этот псевдотест, что сама нужная vhdl'ина. в железе - ни то, ни другое не работает. хотя признаюсь честно - в симуляторе гонял только с клоком у которого duty cycle был 50%. есть немного опасаний на тему работоспособности железки, поэтому решил уточнить - всё ли правильно написано. не зарыто ли где какой-нить собаки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 31 мая, 2008 Опубликовано 31 мая, 2008 · Жалоба В симуляторе - работает отлично. что этот псевдотест, что сама нужная vhdl'ина. в железе - ни то, ни другое не работает. Надеюсь, все неиспользованные пины опцией программирования к GND внутренне притянуты? Или внешними pull-up резисторами к Vcc? XC9500 крайне плохо "висячие" входы переносит. И греется при этом и глючит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brumal 0 31 мая, 2008 Опубликовано 31 мая, 2008 · Жалоба Надеюсь, все неиспользованные пины опцией программирования к GND внутренне притянуты? Или внешними pull-up резисторами к Vcc? XC9500 крайне плохо "висячие" входы переносит. И греется при этом и глючит. Притянуты програмно к GND. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 1 июня, 2008 Опубликовано 1 июня, 2008 · Жалоба Есть следующий код на VHDL(Он не есть цель, просто очень упрощеныый тест): Сигнал clock заведен на вывод GCK, данные подведены одинаковыми по длине проводами(формируются пиком). Работаю с CPLD следующим образом: выставляю данные, жду два такта работы пика(кварц 10 МГц), "дергаю" вверх clock, "дергаю" клок вниз. Потом жду 4 секунды и повторяю процедуру. Т.е. имеем жуткий duty cycle. Может ли это быть причиной того, что cpld некоторые команды не ловит, а некоторые заменяет другими? Или у меня есть ошибка в куске кода? Этот упрощенный тест Вам ничего не дает. Он рабочий.(Мультиплексор - регистр). Если Вы только его конкретно в железе реализуете, с чего ему не работать? Анализировать надо полный текст. Наверно дело в считывании с этого регистра в другой, внутренним клоком cpld. (Если что то не работает в железе, дело не в выбранном пакете и кристалле. Дело всегда в ошибках в проекте. (длина проводников при частоте 10 мгц в пределах платы не влияет на работоспособность платы)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brumal 0 1 июня, 2008 Опубликовано 1 июня, 2008 · Жалоба Этот упрощенный тест Вам ничего не дает. Он рабочий.(Мультиплексор - регистр). Если Вы только его конкретно в железе реализуете, с чего ему не работать? Я когда сталкиваюсь с чем-то странным сначала ищу ошибки у себя. Но раз вы говорите, что тест полностью рабочий - значит дело в CPLD, есть сомнения на тему того что она в адекватном состоянии, судя по всему они оправдались. Завтра сделаю следующую макетку и буду проверять заново. Анализировать надо полный текст. Наверно дело в считывании с этого регистра в другой, внутренним клоком cpld. Никакого дальнейшего считывания нет на самом деле. Этот тест почти полностью покрывает задачу. Тут FSM несколько проще и нет каскадирования. Проект сам по себе - хитрый "расширитель" IO для пика. (Если что то не работает в железе, дело не в выбранном пакете и кристалле. Дело всегда в ошибках в проекте. (длина проводников при частоте 10 мгц в пределах платы не влияет на работоспособность платы)) Там меньше 10 мгц - у пиков 16й серии 4 такта на одну команду, так что быстрее чем 2.5 мгц дергать ногой не могу принципиально. Не может ли быть проблемы в длительности импульса? 0.4 мкс? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 2 июня, 2008 Опубликовано 2 июня, 2008 · Жалоба Но раз вы говорите, что тест полностью рабочий - значит дело в CPLD, есть сомнения на тему того что она в адекватном состоянии, судя по всему они оправдались. Завтра сделаю следующую макетку и буду проверять заново. Никакого дальнейшего считывания нет на самом деле. Этот тест почти полностью покрывает задачу. Тут FSM несколько проще и нет каскадирования. Проект сам по себе - хитрый "расширитель" IO для пика. Там меньше 10 мгц - у пиков 16й серии 4 такта на одну команду, так что быстрее чем 2.5 мгц дергать ногой не могу принципиально. Не может ли быть проблемы в длительности импульса? 0.4 мкс? Врядли дело в самой cpld. Это флеш с практически бескрайним количеством перепрограммирования. Если не сожгли, зачем заново что то паять. Трудно что то сказать по вашему описанию системы. У Вас машина состояний на cpld. И нет клока для работы этой машины состояний. CPLD должна работать практически при при нулевой частоте общени с пиком. Пик пишет. Пик читает. Простая регистровая структура. Наверно с пика надо начинать. Что он на самом деле выдает. Это данные, сопровождаемые клоком. Может помехи в линии. Желательно пассивный уровень клока пика делать 1. Активный нулем. Т.Е. данные фиксировать в cpld по перепаду из 1 в ноль и не держать клок долго в нуле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brumal 0 2 июня, 2008 Опубликовано 2 июня, 2008 · Жалоба Врядли дело в самой cpld. Это флеш с практически бескрайним количеством перепрограммирования. Если не сожгли, зачем заново что то паять. Трудно что то сказать по вашему описанию системы. Она прошла очень грубый цикл монтажа-демнотажа + стоит на паршивой макетке. да и, имхо, 200 мА - для неё как-то многовато. У Вас машина состояний на cpld. И нет клока для работы этой машины состояний. CPLD должна работать практически при при нулевой частоте общени с пиком. Может помехи в линии. Желательно пассивный уровень клока пика делать 1. Активный нулем. Т.Е. данные фиксировать в cpld по перепаду из 1 в ноль и не держать клок долго в нуле. Какая разница машине состояний с какой частотой ей работать? На тему клока спасибо, несколько облегчило жизнь. Стало работать несколько лучше. Точнее начала признаки жизни подавать :) Помехи вполне возможны - попробую землю в шлейфе пустить через один провод, на всякий случай. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 2 июня, 2008 Опубликовано 2 июня, 2008 · Жалоба Помехи вполне возможны - попробую землю в шлейфе пустить через один провод, на всякий случай. Ну вот и шлейф появился. Витой парой каждый разряд данных, клок с gnd. Если плоский кабель, через каждый сигнальный - gnd. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brumal 0 2 июня, 2008 Опубликовано 2 июня, 2008 · Жалоба Ну вот и шлейф появился. Витой парой каждый разряд данных, клок с gnd. Если плоский кабель, через каждый сигнальный - gnd. Плоский кабель. Завтра попробую землю через каждый сигнальный подцепить.. Вообще выглядит всё так: две макетки, сделаны утюгом. одна с 16м пиком, другая с CPLDхой. соединены плоским шлейфом, + земля и питание монтажным проводом. на CPLD на каждом выводе питания блокировоная емкость, 100 нан. большая часть ног никуда не подключена, в настройках ISE стоит, что не используемые ноги притягиваются к земле. запитано всё от одного нормального БП. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться