|
|
  |
XC9572 Binary Counter, Простой счетчик чудит |
|
|
|
Jan 11 2006, 15:15
|
Группа: Новичок
Сообщений: 3
Регистрация: 11-01-06
Пользователь №: 13 061

|
Мужики, делаю элементарный 8-и битовый двоичный счетчик на ISE7.1 для XC9572-PC44 CPLD. Сигналы счетчика вывожу через IO выходы. По идее, частота каждого следущего бита досжна делиться на два. У меня же частота всех равна половине CLK (CLK/2) плюс некоторые биты "дергаются" словно шум по фазе. Не могу понять в чем дело. Вроде нет ни ошибок с компиляцией ни с загрузкой. С сигналом CLEAR и CLK Все нормально. Исходник взят из справочника на инете: -------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity counter is Port ( CLEAR: in std_logic; Q5: out std_logic_vector(7 downto 0); CLK : in std_logic); end counter;
architecture Behavioral of counter is
signal Q5_IN : std_logic_vector(7 downto 0); -- Defines internal signals begin Q5 <= Q5_IN; -- Set output process(CLEAR, CLK) begin if CLEAR='1' then -- Clear counter ? Q5_IN <= "00000000"; -- Yes. Clear counter elsif CLK='1' and CLK'event then -- Clock rising edge ? if Q5_IN=128 then -- Yes. Count = 4 ? Q5_IN <= "00000000"; -- Yes. Clear counter else -- No Q5_IN <= Q5_IN + '1'; -- Count-up end if; end if; end process; end Behavioral;
|
|
|
|
|
Jan 11 2006, 20:49
|
Группа: Новичок
Сообщений: 3
Регистрация: 11-01-06
Пользователь №: 13 061

|
Спасибо,
Сигнал дергается во времени на осцилоцграфе, по типу: ..1,0,1,0,1,0 и врдуг опять 0,1,0... Частота "клока" маленькая - не больше 1кHz. Тест бенч на ISE 7.1.1 я писать не умею, не знаю где что вставлять. Раньше в унив. делал что то подобное в Xilinx Foundation. В принципе подобный делитеь можно записать и в другом духе, что я и пробовал, работает нормально. Ошибки в моем исходнике нет точно, так как такими же (почти) исходниками полон и интернет и книги по VHDL. Я подозреваю ошибку в прогр. обеспечении ISE 7.1. или сам чип тормозит. Или какие установки типа user time cosntraints и прочее. Обидно, не хочется просто так бросить этот пустяк так и не разобравшись в чем дело. Два дня уже на это потратил. Elresearch, попробую твои вещи завтра, но почти уверен что тоже не пойдет. Что то он не любит конструкцию типа: COUNT_INT <= COUNT_INT + 1;
|
|
|
|
|
Jan 11 2006, 21:31
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
//Сигнал дергается во времени на осцилоцграфе, по типу: ..1,0,1,0,1,0 и врдуг опять 0,1,0... Частота "клока" маленькая - не больше 1кHz. Тест бенч на ISE 7.1.1 я писать не умею, не знаю где что вставлять. Раньше в унив. делал что то подобное в Xilinx Foundation. В принципе подобный делитеь можно записать и в другом духе, что я и пробовал, работает нормально. Ошибки в моем исходнике нет точно, так как такими же (почти) исходниками полон и интернет и книги по VHDL. Я подозреваю ошибку в прогр. обеспечении ISE 7.1. или сам чип тормозит. Или какие установки типа user time cosntraints и прочее. Обидно, не хочется просто так бросить этот пустяк так и не разобравшись в чем дело. Два дня уже на это потратил. Elresearch, попробую твои вещи завтра, но почти уверен что тоже не пойдет. Что то он не любит конструкцию типа: COUNT_INT <= COUNT_INT + 1// К Вашему ISE нужен моделсим. Это лучше, чем осциллограф. (Наверно на внутренней синхронизации смотрите. Сколько ему лет). ISE точно не причем. И ограничения тут нет. На одной частоте все работает. И конструкция эта самая любимая. Скачайте с сайта xilinx xst.pdf (синтезабельное hdl описание библиотечных элементов).
|
|
|
|
|
Jan 12 2006, 07:43
|
Участник

Группа: Новичок
Сообщений: 23
Регистрация: 18-11-04
Из: Чернигов, Украина
Пользователь №: 1 167

|
возможная проблема Вашего кода - это именование сигнала, Q5 - не очень удачное название для вектора (названия векторов не должны заканчиваться на цифру) при этом возможно разный синтез на разных синтезаторах (некоторые из них образуют названия сигналов вектора дописыванием цифры к имени вектора)
--------------------
WBR KNK
|
|
|
|
|
Jan 12 2006, 11:45
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(sazh @ Jan 12 2006, 02:24)  В зависимости от частоты работы счетчика, сделал бы конвееризированный сброс. Поясните пожалуйста. Хмм ну как, в данной конкретной схеме на выходе счетчика сидит компаратор и уже с его выхода сигнал идет на сброс. тут есть +, есть минусы, в зависимости от разрядности счечтика. Если разрядность большая, то получаеться "большая" многовходовая функция, что не есть хорошо для ФПГА, но нормально для ЦПЛД, т.к. увеличиваеться кол-во уровнй логики + сигнал же еще на тригеры тащить, по этому ИМХО сравниваем с числом на 1 меньше и на тригер, след. тактом будет нормальный "сильный" сигнал с тригера и времянка этой цепи ИМХО улучшиться.
--------------------
|
|
|
|
|
Jan 12 2006, 12:39
|
Группа: Новичок
Сообщений: 3
Регистрация: 11-01-06
Пользователь №: 13 061

|
Ну вот так, я и знал! Версия Webpack ISE7.1.x имеет ошибки. Как только запустил версию 8.1 сразу все заработало.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|