a-styuf 0 21 марта, 2013 Опубликовано 21 марта, 2013 · Жалоба Доброе время суток. Столкнулся с неожиданной проблемой. По долгу службы пришлось перейти с квартуса на Libero. При создании самого первого проекта из getting started, обнаружил полное отсутвтвие признаков жизни PLL, которое я использовал. Вот его внешний вид Проект простой - мегание светодиодами. Без PLL светодиоды моргают отлично, а вот с ним никак. Вот собственно сам проект: Использую A3PE_STARTER_KIT с A3PE1500 PQG208 на борту. Если не достаточно информации - обязательно добавлю. Заранее спасибо!) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doublekey 0 21 марта, 2013 Опубликовано 21 марта, 2013 · Жалоба Первое, что настораживает, это то, что в качестве источника выбран External I/O, а на верхнем уровне clock заведён не только на PLL, но ещё и на счётчик, вроде как генератор PLL пихает входной буфер в такой конфигурации внутрь модуля PLL_075MHZ. Ещё не понятно, что подаётся на buttom_in[1:0]. Пробовали отсимулировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 21 марта, 2013 Опубликовано 21 марта, 2013 · Жалоба Сейчас попробую пустить на прямую и отдельно через внутренний буфер. Вход clock я уже от безнадежности завел на счетчик, в изначальной схеме оно не работало и при подачи клока исключительно на pll. Да, симулировать пробовал и до фитинга и после. В обоих случаях pll выдает нормальный клок и LOCK. В том-то и вопрос у меня - почему симуляция работает, а в кристалле нет (забыл написать, что симулировал). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZwergNase 0 22 марта, 2013 Опубликовано 22 марта, 2013 · Жалоба Сейчас попробую пустить на прямую и отдельно через внутренний буфер. Вход clock я уже от безнадежности завел на счетчик, в изначальной схеме оно не работало и при подачи клока исключительно на pll. Да, симулировать пробовал и до фитинга и после. В обоих случаях pll выдает нормальный клок и LOCK. В том-то и вопрос у меня - почему симуляция работает, а в кристалле нет (забыл написать, что симулировал). А вы проверяли, правильно ли назначены пины для сигналов button_in[1:0]? В реальной железке PLL в захвате, т.е. led_out[6] светится? Выложите результаты синтеза (файл .srr). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skv 0 23 марта, 2013 Опубликовано 23 марта, 2013 (изменено) · Жалоба А можно увидеть верхний уровень, где PLL подключается с модулю? А та кже тесбенч (симуляционную модель). И еще одно важное замечание. Если в качестве порта ввода клока используется порт с функцией глобального входа/выхода, то вход PLL можно подключать напрямую, а если это только порт общего назначения, то нужно подключать через примитив CLKINT. Изменено 23 марта, 2013 пользователем skv Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 25 марта, 2013 Опубликовано 25 марта, 2013 (изменено) · Жалоба Сам проект верхнего уровня: -- first_project.vhd ---------------------------------------------------------------------- -- Created by Actel SmartDesign Tue Mar 19 18:16:17 2013 -- Testbench Template -- This is a basic testbench that instantiates your design with basic -- clock and reset pins connected. If your design has special -- clock/reset or testbench driver requirements then you should -- copy this file and modify it. ---------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; entity first_project is PORT ( led_out : OUT STD_LOGIC_VECTOR(7 downto 0):=(OTHERS => '0'); button_in : IN STD_LOGIC_VECTOR (3 downto 0); test_out : OUT STD_LOGIC_VECTOR (7 downto 0):=(OTHERS => '0'); clock40 : IN STD_LOGIC ); end first_project; architecture ARCH of first_project is ---SIGNAL--- SIGNAL clock20 : STD_LOGIC; SIGNAL count_q : STD_LOGIC_VECTOR (19 downto 0); --- ---COMPONENT_LIST--- COMPONENT PLL_20 is port ( POWERDOWN, CLKA : in std_logic; LOCK, GLA : out std_logic ); END COMPONENT; COMPONENT counter_20 is port( Aclr : in std_logic; Clock : in std_logic; Q : out std_logic_vector(19 downto 0) ); end COMPONENT; --- begin ---COMPONENT_DECLARATION--- PLL_20_0 : PLL_20 port map ( POWERDOWN => '1', CLKA => clock40, LOCK => test_out(0), GLA => clock20 ); counter_20_0 : counter_20 port map ( Aclr => button_in(0), Clock => clock20, Q => count_q ); led_out <= count_q(19 downto 12); test_out(7 downto 2) <= count_q(5 downto 0); test_out(1) <= clock20; --- end ARCH; test_bench: -- testbench.vhd---------------------------------------------------------------------- -- Created by Actel SmartDesign Tue Mar 19 18:16:17 2013 -- Testbench Template -- This is a basic testbench that instantiates your design with basic -- clock and reset pins connected. If your design has special -- clock/reset or testbench driver requirements then you should -- copy this file and modify it. ---------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; entity testbench is end testbench; architecture behavioral of testbench is constant SYSCLK_PERIOD : time := 25 ns; signal SYSCLK : std_logic := '0'; signal NSYSRESET : std_logic_vector(3 downto 0); signal led_out : std_logic_vector(7 downto 0); signal test_out : std_logic_vector(7 downto 0); COMPONENT first_project is PORT ( led_out : OUT STD_LOGIC_VECTOR(7 downto 0); button_in : IN STD_LOGIC_VECTOR (3 downto 0); test_out : OUT STD_LOGIC_VECTOR (7 downto 0); clock40 : IN STD_LOGIC ); end COMPONENT; begin process variable vhdl_initial : BOOLEAN := TRUE; begin if ( vhdl_initial ) then -- Assert Reset NSYSRESET <= (OTHERS => '0'); wait for ( SYSCLK_PERIOD * 1000 ); NSYSRESET <= (OTHERS => '1'); wait for ( SYSCLK_PERIOD * 1000 ); NSYSRESET <= (OTHERS => '0'); wait; end if; end process; -- 40MHz Clock Driver SYSCLK <= not SYSCLK after (SYSCLK_PERIOD / 2.0 ); -- Instantiate Unit Under Test: top first_project_0 : first_project PORT MAP ( led_out => led_out, button_in => NSYSRESET, test_out => test_out, clock40 => SYSCLK ); end behavioral; Файл .srr: first_project.zip И пару вопросов: В какой из подутилит Libero можно назначить глобальный вход/выход? И как из под .vhdl файла верхнего уровня подключить CLKINT на вход плл? Нашел ответ. Я переписал проект, сделав верхним уровнем файл не из под Smart Disign, а VHDL файл. Защелка для плл, выведенная на ножку находится в нижнем положении. Вот результат симуляции. На инвертированный вход POWERDOWN PLL подается постоянная '1'. Изменено 25 марта, 2013 пользователем styuf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZwergNase 0 25 марта, 2013 Опубликовано 25 марта, 2013 · Жалоба Файл .srr: first_project.zip Синтез нормальный вроде, PLL не выбрасывается. Моё предположение - неправильно назначен пин для button_in[0] или на этот вход снаружи подаётся не то, что нужно ("1"). И пару вопросов: В какой из подутилит Libero можно назначить глобальный вход/выход? Можно назначить в файле констрейнов для Designer'a (.pdc): assign_global_clock -net MSS_CORE_0_M2F_RESET_N Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 25 марта, 2013 Опубликовано 25 марта, 2013 · Жалоба Я в последнем проекте заменил button_in[0] на постоянную '1'. Результат тот же. На синтез я тоже смотрел, в RTL, и непосредственно на чипе. Есть PLL, никуда не девается. У меня есть подозрение, что проблема больше в железе - некорректная работа этого конкретного блока PLL или неправильное питание блоков PLL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZwergNase 0 25 марта, 2013 Опубликовано 25 марта, 2013 · Жалоба Я в последнем проекте заменил button_in[0] на постоянную '1'. Результат тот же. Так ведь надо вроде button_in[0] = 0, чтобы мигало. По крайней мере, так в вашей симуляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 25 марта, 2013 Опубликовано 25 марта, 2013 · Жалоба Я видимо не правильно объяснил. С миганием проблем нет. Все работает как надо, в том числе очистка счетчиков по нажатию кнопки. А вот плл не работает вообще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZwergNase 0 26 марта, 2013 Опубликовано 26 марта, 2013 · Жалоба Я видимо не правильно объяснил. С миганием проблем нет. Все работает как надо, в том числе очистка счетчиков по нажатию кнопки. А вот плл не работает вообще. Так ведь вы счётчик тактируете 20 МГц из pll, и если счётчик считает и диоды мигают, то значит pll работает. Разве не так? Пин test_out[0] в каком состоянии? На test_out[1] есть 20 МГц? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 26 марта, 2013 Опубликовано 26 марта, 2013 · Жалоба Я пришел к выводу, что проблема все-таки непосредственно в физической PLL. Залил стандартный проверочный проект, и он частично не работает. Причем именно та часть, которая тактируется от PLL. Остальное работает(всякие асинхронные resetы и clearы). Жалко отладочник. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZwergNase 0 26 марта, 2013 Опубликовано 26 марта, 2013 · Жалоба Я пришел к выводу, что проблема все-таки непосредственно в физической PLL. Залил стандартный проверочный проект, и он частично не работает. Причем именно та часть, которая тактируется от PLL. Остальное работает(всякие асинхронные resetы и clearы). Жалко отладочник. А JP49 и JP50 на плате у вас замкнуты? Т.е., питание подаётся на PLL? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 26 марта, 2013 Опубликовано 26 марта, 2013 · Жалоба Вы правы, и нашел в даташите на STARTER KIT эти пины и способы их подключения. Я еще хотел проверить питание, но не сподобился. Но у меня PROTO KIT, так что подключить питание на прямую я не могу. Видимо придется в тупого брать проводок и подключать к источнику на плате. Огромное спасибо вам за помощь! Да, просто проводком питание присоединил и все заработало. Мне бы и в голову не пришло, что PLL можно не подключать) Будет мне наука. Всем спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skv 0 26 марта, 2013 Опубликовано 26 марта, 2013 (изменено) · Жалоба Доброе время суток. Столкнулся с неожиданной проблемой. По долгу службы пришлось перейти с квартуса на Libero. При создании самого первого проекта из getting started, обнаружил полное отсутвтвие признаков жизни PLL, которое я использовал. Вот его внешний вид Проект простой - мегание светодиодами. Без PLL светодиоды моргают отлично, а вот с ним никак. Вот собственно сам проект: Использую A3PE_STARTER_KIT с A3PE1500 PQG208 на борту. Если не достаточно информации - обязательно добавлю. Заранее спасибо!) Я сразу не обратил внимание, но схема изначально сделана не правилно. Не используйте в качестве тактовых сигналов сигнальные цепи. На вход CLK надо всегда подавать тактовый сигнал! Замучаетесь с задержками. Схема может не работать. При такой схеме в качестве тактовой используются обычные трассировочные цепи ПЛИС, а не глобальные. Задержки не предсказуемы. Да и с трассировкой будут проблемы. Трассировщик привязывается к клоку. Он трассиирует сигналы так, чтобы задержки от тригера до триггера были меньше такта. Но здесь нет тактовых сигналов!!! Какая должна быть задержка с выхода первого счетчика до входа второго? В ПЛИС надо использовать синхронный дизан! Клок- зто клок, а в качестве сигнала записи используйте вход разрешения записи. Это неприложное правило!!! Во вторых, сигнал сброса тоже должен быть глобальным. Это связано еще и с архитектурой ячейки ПЛИС. Кстати, как я понимаю, симулировалась только RTL модель. Мои рекомендации - всегда проверяйте на симуляции посттрасировочную модель. Небольшая схема, вроде этой может и заработает, но более сложные схемы, при таком подходе написания кода, никодгда не отладите. Вы правы, и нашел в даташите на STARTER KIT эти пины и способы их подключения. Я еще хотел проверить питание, но не сподобился. Но у меня PROTO KIT, так что подключить питание на прямую я не могу. Видимо придется в тупого брать проводок и подключать к источнику на плате. Огромное спасибо вам за помощь! Да, просто проводком питание присоединил и все заработало. Мне бы и в голову не пришло, что PLL можно не подключать) Будет мне наука. Всем спасибо! Почему нельзя? На PROTO KIT можно отключить все питания. так же можно джамперами отключать и питание PLL. Посмотрите по схеме. Новый StarterKit от старого PROTO KIT по-сути мало чем отличается. Поставили другой дисплей и источники питания, да название сменили. Но схема подключения ПЛИС не изменилась. Изменено 26 марта, 2013 пользователем skv Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться