NSergeevich 0 20 апреля, 2015 Опубликовано 20 апреля, 2015 · Жалоба так нельзя. Значит, надо генерировать все на той, другой частоте. Собственно, Вы же пишете - все делаете на 5 МГц. Так сделаете делитель на два (один триггер + инвертор), и подайте его выход на разрешение работы всех триггеров блока - весь блок станет работать "как бы" на уполовиненной частоте, но, по факту, на тех же 5 МГц. Вообще я сделал просто делитель и из 40mhz делаю 2.5mhz и 5mhz. 2.5 питаю MDC с MDIO и еще MDIO пытаюcь сдвтнуть относительно вот этих 5. Так же можно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 20 апреля, 2015 Опубликовано 20 апреля, 2015 · Жалоба Вообще я сделал просто делитель и из 40mhz делаю 2.5mhz и 5mhz. 2.5 питаю MDC с MDIO и еще MDIO пытаюcь сдвтнуть относительно вот этих 5. Так же можно? Можно, но не нужно, ибо это через зад автогеном. А нужно, так: Из 40 МГц сделать импульс длительностью один период 40 МГц и частотой 2.5 МГц, и его подать на разрешение работы всего блока целиком. На MDC подать 2.5 МГц - меандр, сделанный из этих же 40 МГц. Импульс разрешения должен быть сдвинут по фазе относительно MDC так, чтобы обеспечить все времянки (обеспечивается сравнением значения счетчика-делителя с нужным значением) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 20 апреля, 2015 Опубликовано 20 апреля, 2015 · Жалоба Можно, но не нужно, ибо это через зад автогеном. А нужно, так: Из 40 МГц сделать импульс длительностью один период 40 МГц и частотой 2.5 МГц, и его подать на разрешение работы всего блока целиком. На MDC подать 2.5 МГц - меандр, сделанный из этих же 40 МГц. Импульс разрешения должен быть сдвинут по фазе относительно MDC так, чтобы обеспечить все времянки (обеспечивается сравнением значения счетчика-делителя с нужным значением) Если можно, очень хотелось бы поподробнее как на veriloge написать сдвиг по фазе относительно чего либо=) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 20 апреля, 2015 Опубликовано 20 апреля, 2015 · Жалоба Если можно, очень хотелось бы поподробнее как на veriloge написать сдвиг по фазе относительно чего либо=) Делаете делитель на 16: reg [3:0] div_cnt; always @(posedge clk) div_cnt <= div_cnt + 1'b1; Теперь подаете со старшего разряда меандр 2.5 МГц на MDC: assign mdc = div_cnt[3]; Теперь формируете сигнал разрешения: reg smi_en; always @(posedge clk) smi_en <= (div_cnt == 4'hE); Итого получаете, что сигнал "smi_en" активен тогда, когда счетчик находится в значении "15", весь блок, разрешаемый этим сигналом, производит операцию, и в момент перехода div_cnt с значения 15 на 0 выдает на выход новое значение. Учитывая то, что на MDC идет старший бит этого счетчика, это будет совпадать со спадом на MDC. Меняя число в этом компараторе, можно получить 16 сдвигов фазы работы блока, разрешаемого по "smi_en" относительно MDC. И верилог тут не причем, точно также это бы делалось и на логике-рассыпухе... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Skryppy 0 20 апреля, 2015 Опубликовано 20 апреля, 2015 (изменено) · Жалоба Если преобразовывать частоты с помощью dcm (или mmcm) блоков, то там просто выставляете сдвиг по фазе, какой вам нужен и не паритесь. А в верилоге подключаете стандартные блоки xilinx. Изменено 20 апреля, 2015 пользователем Skryppy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 апреля, 2015 Опубликовано 20 апреля, 2015 · Жалоба Итого получаете, что сигнал "smi_en" активен тогда, когда счетчик находится в значении "15" я конечно не настаиваю, но 0xE - это все же 14 :) то там просто выставляете сдвиг по фазе, какой вам нужен и не паритесь. человек делает SPI подобный интерфейс, с правильной времянкой. А это надо делать не из кучи внешних и сдвинутых клоков, а как SM говорит. Сделать общее кратное и на его основе всю времянку сформировать. Будет правильнее и синтезатор и анализатору и тому кто потом поддерживать будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 20 апреля, 2015 Опубликовано 20 апреля, 2015 · Жалоба я конечно не настаиваю, но 0xE - это все же 14 :) smi_en появляется, когда счетчик == 14 и происходит фронт клока, ну а счетчик на этом же такте перекидывается на 15. Итого имеем smi_en==1 и счетчик==15. Туда я поставил триггер, так как сигнал разрешения следует формировать с выхода триггера с минимальной задержкой, так как это широко разветвленный сигнал (high fanout) будет, по всему блоку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 21 апреля, 2015 Опубликовано 21 апреля, 2015 · Жалоба Делаете делитель на 16: reg [3:0] div_cnt; always @(posedge clk) div_cnt <= div_cnt + 1'b1; Теперь подаете со старшего разряда меандр 2.5 МГц на MDC: assign mdc = div_cnt[3]; Теперь формируете сигнал разрешения: reg smi_en; always @(posedge clk) smi_en <= (div_cnt == 4'hE); Итого получаете, что сигнал "smi_en" активен тогда, когда счетчик находится в значении "15", весь блок, разрешаемый этим сигналом, производит операцию, и в момент перехода div_cnt с значения 15 на 0 выдает на выход новое значение. Учитывая то, что на MDC идет старший бит этого счетчика, это будет совпадать со спадом на MDC. Меняя число в этом компараторе, можно получить 16 сдвигов фазы работы блока, разрешаемого по "smi_en" относительно MDC. И верилог тут не причем, точно также это бы делалось и на логике-рассыпухе... Спасибо тебе мужчина! Все получилось! Просто и гениально =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 22 апреля, 2015 Опубликовано 22 апреля, 2015 · Жалоба Написал следующий код для порта RSTn (System reset, active low. Requires an external pull-up resistor) чипа Atheros AR8035: RSTn.v Пару десятков миллисекунд держит 0 (для того чтобы все напряжения успели выставиться и чип пришел в себя) Далее ставит 1 Я полагаю так можно завести микросхему? Насколько адекватный код? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 22 апреля, 2015 Опубликовано 22 апреля, 2015 · Жалоба у вас вроде спартан 6? Он вроде как до того как все станет грузиться не будет, а как загрузиться начнет клоки настраивать. У PLL есть выход - клок валидный, от него и надо плясать. А если уже хочется еще задержать то уже только после этого момента ИМХО, можно доп таймер воткнуть... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 22 апреля, 2015 Опубликовано 22 апреля, 2015 · Жалоба у вас вроде спартан 6? Он вроде как до того как все станет грузиться не будет, а как загрузиться начнет клоки настраивать. У PLL есть выход - клок валидный, от него и надо плясать. А если уже хочется еще задержать то уже только после этого момента ИМХО, можно доп таймер воткнуть... Верно, уменя Spartan 6 XC6SLX100 Тоесть дополнительно можно не делать задержку в 10-30ms? Сам RSTn у меня притянут через резистор на землю. Может быть можно в коде просто написать assign RSTn = 1; ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 22 апреля, 2015 Опубликовано 22 апреля, 2015 · Жалоба Может быть можно в коде просто написать assign RSTn = 1; ? написать то можно, только не понятно что это даст? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба У меня все заработало PHY начал отвечать. Теперь буду конфигурить его и отправлять данные на ethernet. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться