xvr 12 3 сентября, 2008 Опубликовано 3 сентября, 2008 · Жалоба Насколько я понимаю не полный список чуствительности влияет только на моделирование, а на синтез не влияет, Отнюдь, сравни awlays @(posedge clk, posedge reset) if (reset) Q <= 0; else Q <= D; и awlays @(posedge clk) if (reset) Q <= 0; else Q <= D; первый - D тригер с АСИНХРОННЫМ сбросом, второй - с СИНХРОННЫМ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 3 сентября, 2008 Опубликовано 3 сентября, 2008 · Жалоба Отнюдь, сравни awlays @(posedge clk, posedge reset) if (reset) Q <= 0; else Q <= D; и awlays @(posedge clk) if (reset) Q <= 0; else Q <= D; первый - D тригер с АСИНХРОННЫМ сбросом, второй - с СИНХРОННЫМ да, но если убрать posedge из первого списка: awlays @(posedge clk, reset) if (reset) Q <= 0; else Q <= D; то тоже полуачем асинхорнный сброс, точно так-же как видимо и в awlays @(posedge clk) if (reset) Q <= 0; else Q <= D; я ошибаюсь ? Да. Только не в ресете. А по сформированному ресету в нужном Вам состоянии. А лачи наверно из за неполного описания состояний в case. Надо или полное или состояния по умолчанию. Значит без внешнего resetа все-таки не обойтись... , т.е. придется шить на борту... :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 3 сентября, 2008 Опубликовано 3 сентября, 2008 · Жалоба нет симулятора для XilinxаНужен Моделсим + подключить библиотеки.По входам упрявляющие сигналы никак не синхронизированы с клоком чипа, посему кака видимо правильно советовал sazh - неплохо-бы их засинхронизировать перед вводом в логику.Именно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 3 сентября, 2008 Опубликовано 3 сентября, 2008 · Жалоба Значит без внешнего resetа все-таки не обойтись... , т.е. придется шить на борту... :( Я же выкатил реализацию, как без внешнего ресета обойтись. Если нужна запись константы в регистр только по включению питания. Сплошь и рядом ее по включению питания (Альтера) использую. И на xilinx должно пройти. Пробуйте. Смотрите реализацию в RTL просмотрщике и количество задействованных ресурсов. Driver_original_a.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 3 сентября, 2008 Опубликовано 3 сентября, 2008 · Жалоба Отнюдь, сравни awlays @(posedge clk, posedge reset) if (reset) Q <= 0; else Q <= D; и awlays @(posedge clk) if (reset) Q <= 0; else Q <= D; первый - D тригер с АСИНХРОННЫМ сбросом, второй - с СИНХРОННЫМ Я имел ввиду при описании на VHDL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 3 сентября, 2008 Опубликовано 3 сентября, 2008 · Жалоба Нужен Моделсим + подключить библиотеки. У меня ModelSim под Латтис (OEM Lattice edition)... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 3 сентября, 2008 Опубликовано 3 сентября, 2008 · Жалоба У меня ModelSim под Латтис (OEM Lattice edition)...Скачать либы и попробовать - дело получаса. На крайняк если очень надо - всегда можно что-то необходимое из закромов вынуть :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 4 сентября, 2008 Опубликовано 4 сентября, 2008 · Жалоба да, но если убрать posedge из первого списка: awlays @(posedge clk, reset) if (reset) Q <= 0; else Q <= D; то тоже полуачем асинхорнный сброс, Это не асинхронный сброс - это вообще невесть что, оно будет защелкивать D в Q по заднему фронту reset (в добавок к положительному фронту clk). Синтезатор должен обругаться точно так-же как видимо и в awlays @(posedge clk) if (reset) Q <= 0; else Q <= D; я ошибаюсь ? Ошибаешься, это СИНХРОННЫЙ сброс, само по себе выставление reset в 1 не сбросит Q в 0, а произойдет это только по переднему фронту clk (это собственно и определяется списком чуствительности) Я имел ввиду при описании на VHDL А что, VHDL каким то особенным способом интерпретирует списки чуствительности? Или синтезатор при синтезе с VHDL имеет право их проигнорировать, заодно нарушив семантику? :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 4 сентября, 2008 Опубликовано 4 сентября, 2008 · Жалоба Это не асинхронный сброс - это вообще невесть что, оно будет защелкивать D в Q по заднему фронту reset (в добавок к положительному фронту clk). Синтезатор должен обругаться Может быть, я не знаком с синтаксисом Verilogа Ошибаешься, это СИНХРОННЫЙ сброс, само по себе выставление reset в 1 не сбросит Q в 0, а произойдет это только по переднему фронту clk (это собственно и определяется списком чуствительности) Да, опять-же синтакс Verilogа мне мало знаком (если вообще), посему наверно и недопонял. Я же выкатил реализацию, как без внешнего ресета обойтись. Если нужна запись константы в регистр только по включению питания. Сплошь и рядом ее по включению питания (Альтера) использую. И на xilinx должно пройти. Пробуйте. Смотрите реализацию в RTL просмотрщике и количество задействованных ресурсов. Спасибо за подсказку, реализовал что-то подобное. Дало возможность (в смысле реализация такого resetа) и использовать счетчик на задержку начало работы контролей выходов . Симулируется хорошо в functional, синтезировал под Xilinx, загрузил в чип - работает как часы... :a14: Но странная вещь происходит: пытаюсь симулировать в post-route functional и post-route timing - reset (и все что на него завязано) не работают... :07: . Симуляция показывает reseta не происходит вообще. Не пойму почему...то-ли такая реализация сильно привязана к технологии конкретного чипа/бренда (возможно в Xilinxовой CPLD работает, а в Latticeовской (под которую и симулировал) - не будет ?) Странно.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 4 сентября, 2008 Опубликовано 4 сентября, 2008 · Жалоба загрузил в чип - работает как часы... :a14: Но странная вещь происходит: пытаюсь симулировать в post-route functional и post-route timing - reset (и все что на него завязано) не работают... :07: . Симуляция показывает reseta не происходит вообще. Не пойму почему...то-ли такая реализация сильно привязана к технологии конкретного чипа/бренда (возможно в Xilinxовой CPLD работает, а в Latticeовской (под которую и симулировал) - не будет ?) Странно.... Если я правильно понял, в железе xilinx реализация типа моей работает, а post-route timing в моделсиме это не работает. так не должно быть. Если конечно отрабатываются указания синтезатору при моделировании. Нюанс такой реализации заключается в том, что схема базируется на установке всх регистров по включению питания в ноль. А далее нужно смотреть как синтезатор отнесся к той части схемы, на которой реализованы внутренний ресет по включению питания. Эта часть схемы функционирует только во время "инициализации" по включению питания и не обладает периодичностью, как если бы ресет был бы внешний. Синтезатор и может быть симулятор (если во времени это не ощущает) может минимизировать эту часть схемы, выбросив формирователь ресета и задать его константой 1, а значит и интервала не будет. У Квартуса например есть специальное указание синтезатору. Кстати, указание внутренним сигналам в разделе инициализации проекта не минимизирует такую схему. Это по ресурсам в мап технологическом видно (константа 1 или счетчик формирования интервала). И временное моделирование это показывает в Квартусе, пакет цельный, а в связке с моделсимом я такую конструкцию не пробовал. Если во временном моделировании этого интервала нет. А по ресурсам такая схема есть, и в железе работает, значит при моделировании в моделсиме в связке с xilinx что то не то. Наверное. Я ведь выкатил реализацию в том числе и в надежде, что кто то это на других системах опробует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 4 сентября, 2008 Опубликовано 4 сентября, 2008 · Жалоба Но странная вещь происходит: пытаюсь симулировать в post-route functional и post-route timing - reset (и все что на него завязано) не работают... :07: . Симуляция показывает reseta не происходит вообще. Это бага в ISE Xilinx'а (точнее в генераторе post-route модели) Они зачем то сигнал glbl.PRLD (это загрузка начальных значений после reset'а) сделали локальной цепью в сгенерированной post-route модели (вместо того, что бы подключить ее к цепи PRLD модуля glbl) И сигнал этот никуда не подключен :crying: Добавь в bench.v assign uut. \glbl.PRLD = glbl.PRLD; - заработает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 4 сентября, 2008 Опубликовано 4 сентября, 2008 · Жалоба Это бага в ISE Xilinx'а (точнее в генераторе post-route модели) Они зачем то сигнал glbl.PRLD (это загрузка начальных значений после reset'а) сделали локальной цепью в сгенерированной post-route модели (вместо того, что бы подключить ее к цепи PRLD модуля glbl) И сигнал этот никуда не подключен :crying: Добавь в bench.v assign uut. \glbl.PRLD = glbl.PRLD; - заработает В том то и дело что вначале синтезирую и симулирую под Lattice (у меня симулятор OEM ModelSim/Active-HDL Lattice). Затем, открываю ISE Web, синтезирую под Xilinx и загружаю в чип (CPLD) Xilinxа... Т.е. говоря о симуляции (и functional и post-route) я имею ввиду симуляцию под Lattice. Значит получается так что функциональная симуляция под Lattice работает ОК а post-route functional & timing на Lattice не работает. При этом синтезируя для Xilinx XCR3064 - в чипе работает ОК. Такхто видимо оно не имеет отношения к багам среды Xilinxа.. Если я правильно понял, в железе xilinx реализация типа моей работает, а post-route timing в моделсиме это не работает. так не должно быть. Если конечно отрабатываются указания синтезатору при моделировании. Нюанс такой реализации заключается в том, что схема базируется на установке всх регистров по включению питания в ноль. А далее нужно смотреть как синтезатор отнесся к той части схемы, на которой реализованы внутренний ресет по включению питания. Эта часть схемы функционирует только во время "инициализации" по включению питания и не обладает периодичностью, как если бы ресет был бы внешний. Синтезатор и может быть симулятор (если во времени это не ощущает) может минимизировать эту часть схемы, выбросив формирователь ресета и задать его константой 1, а значит и интервала не будет. У Квартуса например есть специальное указание синтезатору. Кстати, указание внутренним сигналам в разделе инициализации проекта не минимизирует такую схему. Это по ресурсам в мап технологическом видно (константа 1 или счетчик формирования интервала). И временное моделирование это показывает в Квартусе, пакет цельный, а в связке с моделсимом я такую конструкцию не пробовал. Если во временном моделировании этого интервала нет. А по ресурсам такая схема есть, и в железе работает, значит при моделировании в моделсиме в связке с xilinx что то не то. Наверное. Я ведь выкатил реализацию в том числе и в надежде, что кто то это на других системах опробует. Да, в железе Xilinxа оно вроде работает, но в post-route симуляции в Lattice - не работает (обнулевка), хотя functional симуляция в том-же Латтисе - да работает. Ныло-бы интересно узнатч работает ли оно в симуляции post-route functional and timing в Xilinxе...а так-же интересно было-бы увидеть будет ли работать в железе Lattice... Может RTL viewer Латиса даст ответ похему post-route симулятор в Латице не отрабатывает... Завтра гляну.... А может кто-бы кто сидит на Xilinx смог-бы просимулировать код у него и рассказать нам как оно там работает ? Я бы дал VHDL код и test-bench... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 5 сентября, 2008 Опубликовано 5 сентября, 2008 · Жалоба А что, VHDL каким то особенным способом интерпретирует списки чуствительности? Или синтезатор при синтезе с VHDL имеет право их проигнорировать, заодно нарушив семантику? Так как Вы привели примеры на Verilog, которого я к сожалению не знаю (знаком, но очень поверхностно) и не смог понять и проверить Ваши утверждения до конца. Из-за этого я так и написал. З.Ы. Изначально вопрос стоял про Vhdl Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 5 сентября, 2008 Опубликовано 5 сентября, 2008 · Жалоба В том то и дело что вначале синтезирую и симулирую под Lattice (у меня симулятор OEM ModelSim/Active-HDL Lattice). Затем, открываю ISE Web, синтезирую под Xilinx и загружаю в чип (CPLD) Xilinxа... Т.е. говоря о симуляции (и functional и post-route) я имею ввиду симуляцию под Lattice. Ой. :07: Не понял тайного смысла делать post-route симуляцию на Lattice, если железка на Xilinx'е :( Или Lattice уже выкупил у Xilinx'а CPLD ветку и начал делать синтез для них? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 5 сентября, 2008 Опубликовано 5 сентября, 2008 · Жалоба хотя functional симуляция в том-же Латтисе - да работает. Ныло-бы интересно узнатч работает ли оно в симуляции post-route functional and timing в Xilinxе...а так-же интересно было-бы увидеть будет ли работать в железе Lattice... Может RTL viewer Латиса даст ответ похему post-route симулятор в Латице не отрабатывает... Завтра гляну.... Чистый functional наверно моделсимовский. Он оперирует процессами, к примитивам Латтисе не привязан и к Латтисе отношения не имеет. А чтобы привязаться к Латтисе, нужна имитация включения по питанию. У xilinx эту функцию выполняет GSR. Короче, смотрите структуру выбранного семейства (eeprom, sram), можно ли эту структуру в ноль инициализировать, читаете раздел как активизировать инициализацию регистров по включению питания в симуляторе. По ресурсам кристалла определяете, выбросил или нет синтезатор часть схемы, реализующую формирование внутреннего ресета (Ищите опцию в смнтезаторе типа игнорировать состояния регистров по power-up или нет. Если игнорировать, то и смысла в схеме формирования начальных состояний этих регистров нет, синтезатор вместо этой схемы константу подставит). Если все регистры по включению в ноль инициализируются без внешних сигналов и схема формирования внутреннего ресета в ресурсах присутствует, то и в железе рабоать будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться