Victor 0 24 октября, 2006 Опубликовано 24 октября, 2006 · Жалоба вот и я об этом-же, поэтому и вылезли N штук брАмин :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 24 октября, 2006 Опубликовано 24 октября, 2006 · Жалоба Хотите об этом поговорить. ............ Выигрывает вовсе не тот, кто играет по всем правилам: выигрывает тот, кто умеет отказаться в нужный момент от всех правил, навязать игре свои правила, неизвестные противнику, а когда понадобиться- отказаться и от них.... А. и Б. Стругацкие, "Град обреченных" (1970-1987 гг.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
darkniisiis 0 25 октября, 2006 Опубликовано 25 октября, 2006 (изменено) · Жалоба Извините что долго не посещал свой топик,просто инета небыло. Я смотрю тут разгорелась неплохая дискуссия,рад что смог вас чем-то заинтересовать. Сейчас ворвался с головой в топики, но ещё до конца во всё не вник,вот просто сначала изложу ситуацию. В общем дело обстоит так:близиться мой час Х,а проблема пока не решена и весь проект упирается в этот счётчик.Исходя из этого по прежнему молю о помощи. В общем вся соль в том что сначала запутали меня, а я потом запутал вас. Уточняю задачу: Изначально мы имеем некоторый тактовый генератор чатота с которого поступает на программируемый делитель частоты с коэфициентом деления от 1 до 65536 и на вход clk таймера задержки, который необходимо описать. С выхода делителя частоты сигналы поступают на вход set таймера задержки,т.е. set равен clk/(1...65536).Количество тактов clk, через которое сигнал set должен появится на выходе таймера задержки pinout задаётся на входе таймера prog. Задерживаться должен КАЖДЫЙ сигнал set. Например, при коэффициенте делителя частоты =2 и prog=1 должно получиться следующее: 001100110011001100110011001100110011 clk 001100000011000000110000001100000011 set 000000110000001100000011000000110000 pinout У меня,как человека начинающего, фантазии на это не хватает, всегда получается нечто безобразное, прошу принять мою благодарность тем кто уже пытался мне помочь, и тем кто поможет ещё в дальнейшем. Изменено 25 октября, 2006 пользователем darkniisiis Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Victor 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба Если не секрет, то что за делитель частоты использован? И выровнены ли передние фронты SET и CLK на входе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klop 0 25 октября, 2006 Опубликовано 25 октября, 2006 (изменено) · Жалоба Извините что долго не посещал свой топик,просто инета небыло. Я смотрю тут разгорелась неплохая дискуссия,рад что смог вас чем-то заинтересовать. Сейчас ворвался с головой в топики, но ещё до конца во всё не вник,вот просто сначала изложу ситуацию. В общем дело обстоит так:близиться мой час Х,а проблема пока не решена и весь проект упирается в этот счётчик.Исходя из этого по прежнему молю о помощи. В общем вся соль в том что сначала запутали меня, а я потом запутал вас. Уточняю задачу: Изначально мы имеем некоторый тактовый генератор чатота с которого поступает на программируемый делитель частоты с коэфициентом деления от 1 до 65536 и на вход clk таймера задержки, который необходимо описать. С выхода делителя частоты сигналы поступают на вход set таймера задержки,т.е. set равен clk/(1...65536).Количество тактов clk, через которое сигнал set должен появится на выходе таймера задержки pinout задаётся на входе таймера prog. Задерживаться должен КАЖДЫЙ сигнал set. Например, при коэффициенте делителя частоты =2 и prog=1 должно получиться следующее: 001100110011001100110011001100110011 clk 001100000011000000110000001100000011 set 000000110000001100000011000000110000 pinout У меня,как человека начинающего, фантазии на это не хватает, всегда получается нечто безобразное, прошу принять мою благодарность тем кто уже пытался мне помочь, и тем кто поможет ещё в дальнейшем. У меня тоже не хватает фантазии по тому что у вас получается что сигналы set/pinout меняются по обеим кромкам клока что странно. Изменено 25 октября, 2006 пользователем klop Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
darkniisiis 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба Если не секрет, то что за делитель частоты использован? И выровнены ли передние фронты SET и CLK на входе? Делитель частоты представляет собой следующее, вроде всё работает как надо: process(clk) -- делитель частоты begin if (clk'event and clk='1') then if res_clk='1' then st<= conv_std_logic_vector(0,16); elsif set_clk='1' then if st=program_CLK-1 then st<= conv_std_logic_vector(0,16); else st<=st+1; end if; end if; if program_CLK="0000000000000001" then out_clk <= clk; elsif (st=program_CLK-1 and set_clk='1' and clk='1')then out_clk <= '1'; else out_clk <= '0'; end if; end if; end process; -- конец делителя частоты Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klop 0 25 октября, 2006 Опубликовано 25 октября, 2006 (изменено) · Жалоба Если не секрет, то что за делитель частоты использован? И выровнены ли передние фронты SET и CLK на входе? Делитель частоты представляет собой следующее, вроде всё работает как надо: process(clk) -- делитель частоты begin if (clk'event and clk='1') then if res_clk='1' then st<= conv_std_logic_vector(0,16); elsif set_clk='1' then if st=program_CLK-1 then st<= conv_std_logic_vector(0,16); else st<=st+1; end if; end if; if program_CLK="0000000000000001" then out_clk <= clk; elsif (st=program_CLK-1 and set_clk='1' and clk='1')then out_clk <= '1'; else out_clk <= '0'; end if; end if; end process; -- конец делителя частоты Даа. RMM отдыхает. Ето то зачем -> elsif (st=program_CLK-1 and set_clk='1' and clk='1')then после -> if (clk'event and clk='1') then Изменено 25 октября, 2006 пользователем klop Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
darkniisiis 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба У меня тоже не хватает фантазии по тому что у вас получается что сигналы set/pinout меняются по обеим кромкам клока что странно. Извините,я вас не совсем понял Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба Изначально мы имеем некоторый тактовый генератор чатота с которого поступает на программируемый делитель частоты с коэфициентом деления от 1 до 65536 и на вход clk таймера задержки////// если частота тактового генератора clk, которая поступает на делитель частоты 001100110011001100110011001100110011 clk и если set это выход этого делителя частоты, то такого 001100000011000000110000001100000011 set неполучить без смешивания с самим clk. если замешали. то это явно никчему. Короче таких времянок не бывает, потому что без надобности Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klop 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба У меня тоже не хватает фантазии по тому что у вас получается что сигналы set/pinout меняются по обеим кромкам клока что странно. Извините,я вас не совсем понял Вы видели когда нибудь как работает обычный D-триггер? Он меняет свое знначеение по перепаду клокового сигнала (по фронту или по спаду) . Если диаграмка нарисованая Вами верна(извините но уменя возникают некие сомнения в верности постанвк задачи) то Вам надо использовать две группы тригеров одна работает по фронту другая по спаду но я не уверен что в таком виде задача реализуема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Victor 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба ну реализовать-то можно... Проблема в том, что описанная вами модель делителя при коэффициенте делителя=4 выдаст такое: CLK: 001100110011001100110011001100110011001100 SET: 001111000000000000111100000000000011110000 а не то, что вы написали... Вы как проверяли работу делителя? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
daemonDX 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба А вы уверены, что код выдает нарисованные вами сигналы ? if (clk'event and clk='1') предполагает изменение всех синхронных сигналов по переднему фронту clk process(clk) -- делитель частоты begin if (clk'event and clk='1') then if res_clk='1' then st<= conv_std_logic_vector(0,16); elsif set_clk='1' then if st=program_CLK-1 then st<= conv_std_logic_vector(0,16); else st<=st+1; end if; end if; if program_CLK="0000000000000001" then out_clk <= clk; elsif (st=program_CLK-1 and set_clk='1' and clk='1')then out_clk <= '1'; else out_clk <= '0'; end if; end if; end process; 0011001100110011001100 0011000000000011000000 Такое только на DDR-регистрах получить можно... Ну или с асинхронной логикой, выдавая gated-клок. И пора бы уже научиться кодами форума пользоваться, а то код смотреть неудобно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
darkniisiis 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба Я понял кто мне мозги парит, а за одно и вам!! Пошёл поговорил с постановщиком задачи, удалось убедить его в том что он не прав. Спасибо вам. Теперь жду на задание сервис пака первого :). А на счёт делителя, то это не совсем тот текстовичёк, ошибочка вышла, вот совсем последняя версия с учётом правильной работы триггера,соответственно теперь длительность сигнала на выходе равна периоду clk, а не как говорилось раньше. process(clk,prog_clk) -- делитель частоты begin if prog_clk="0000000000000001" then out_clk<=clk; end if; if (clk'event and clk='1') then if res_clk='1' then st<= conv_std_logic_vector(0,16); elsif set_clk='1' then if st=prog_CLK-1 then st<= conv_std_logic_vector(0,16); else st<=st+1; end if; end if; if (st=prog_CLK-1 and set_clk='1' and clk='1')then out_clk <= '1'; else out_clk <= '0'; end if; end if; end process; -- конец делителя частоты Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
darkniisiis 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба В общем вся соль в том что сначала запутали меня, а я потом запутал вас. Уточняю задачу: Изначально мы имеем некоторый тактовый генератор чатота с которого поступает на программируемый делитель частоты с коэфициентом деления от 1 до 65536 и на вход clk таймера задержки, который необходимо описать. С выхода делителя частоты сигналы поступают на вход set таймера задержки,т.е. set равен clk/(1...65536).Количество тактов clk, через которое сигнал set должен появится на выходе таймера задержки pinout задаётся на входе таймера prog от 0 до 65565. Задерживаться должен КАЖДЫЙ сигнал set. Например, при коэффициенте делителя частоты =2 и prog=1 должно получиться следующее: 0011001100110011001100110011001100 clk 0011110000111100001111000011110000 set 0000001111000011110000111100001111 pinout Вот надеюсь так будет правильнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Victor 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба :) еще один глупый вопрос - что должно быть на выходе при коэффициенте делителя = 1 ? А сделать проще делитель и "сдвиг" совместно. Тогда только счетчиками можно обойтись. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться