|
|
  |
Проэкт не работает в чипе..., В симуляции все ОК, в чипе не работает, может проблема с заданием ног |
|
|
|
Sep 3 2008, 11:37
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Maverick @ Sep 3 2008, 12:02)  Насколько я понимаю не полный список чуствительности влияет только на моделирование, а на синтез не влияет, Отнюдь, сравни Код
awlays @(posedge clk, posedge reset)
if (reset) Q <= 0;
else Q <= D; и Код
awlays @(posedge clk)
if (reset) Q <= 0;
else Q <= D; первый - D тригер с АСИНХРОННЫМ сбросом, второй - с СИНХРОННЫМ
|
|
|
|
|
Sep 3 2008, 11:54
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(XVR @ Sep 3 2008, 15:37)  Отнюдь, сравни Код
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; я ошибаюсь ? Цитата(sazh @ Sep 3 2008, 13:43)  Да. Только не в ресете. А по сформированному ресету в нужном Вам состоянии. А лачи наверно из за неполного описания состояний в case. Надо или полное или состояния по умолчанию. Значит без внешнего resetа все-таки не обойтись... , т.е. придется шить на борту...
|
|
|
|
|
Sep 3 2008, 12:00
|

Знающий
   
Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045

|
Цитата(Саша Z @ Sep 3 2008, 14:01)  нет симулятора для Xilinxа Нужен Моделсим + подключить библиотеки. Цитата(Саша Z @ Sep 3 2008, 14:01)  По входам упрявляющие сигналы никак не синхронизированы с клоком чипа, посему кака видимо правильно советовал sazh - неплохо-бы их засинхронизировать перед вводом в логику. Именно.
--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
|
|
|
|
|
Sep 3 2008, 12:50
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(XVR @ Sep 3 2008, 14:37)  Отнюдь, сравни Код
awlays @(posedge clk, posedge reset)
if (reset) Q <= 0;
else Q <= D; и Код
awlays @(posedge clk)
if (reset) Q <= 0;
else Q <= D; первый - D тригер с АСИНХРОННЫМ сбросом, второй - с СИНХРОННЫМ Я имел ввиду при описании на VHDL
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Sep 4 2008, 10:56
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Саша Z @ Sep 3 2008, 15:54)  да, но если убрать 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 (это собственно и определяется списком чуствительности) Цитата(Maverick @ Sep 3 2008, 16:50)  Я имел ввиду при описании на VHDL А что, VHDL каким то особенным способом интерпретирует списки чуствительности? Или синтезатор при синтезе с VHDL имеет право их проигнорировать, заодно нарушив семантику?
|
|
|
|
|
Sep 4 2008, 11:32
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(XVR @ Sep 4 2008, 13:56)  Это не асинхронный сброс - это вообще невесть что, оно будет защелкивать D в Q по заднему фронту
reset (в добавок к положительному фронту clk). Синтезатор должен обругаться Может быть, я не знаком с синтаксисом Verilogа Цитата(XVR @ Sep 4 2008, 13:56)  Ошибаешься, это СИНХРОННЫЙ сброс, само по себе выставление reset в 1 не сбросит Q в 0, а произойдет это только по переднему фронту clk (это собственно и определяется списком чуствительности) Да, опять-же синтакс Verilogа мне мало знаком (если вообще), посему наверно и недопонял. Цитата(sazh @ Sep 3 2008, 15:18)  Я же выкатил реализацию, как без внешнего ресета обойтись. Если нужна запись константы в регистр только по включению питания. Сплошь и рядом ее по включению питания (Альтера) использую. И на xilinx должно пройти. Пробуйте. Смотрите реализацию в RTL просмотрщике и количество задействованных ресурсов. Спасибо за подсказку, реализовал что-то подобное. Дало возможность (в смысле реализация такого resetа) и использовать счетчик на задержку начало работы контролей выходов . Симулируется хорошо в functional, синтезировал под Xilinx, загрузил в чип - работает как часы... Но странная вещь происходит: пытаюсь симулировать в post-route functional и post-route timing - reset (и все что на него завязано) не работают...  . Симуляция показывает reseta не происходит вообще. Не пойму почему...то-ли такая реализация сильно привязана к технологии конкретного чипа/бренда (возможно в Xilinxовой CPLD работает, а в Latticeовской (под которую и симулировал) - не будет ?) Странно....
|
|
|
|
|
Sep 4 2008, 15:15
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(Саша Z @ Sep 4 2008, 15:32)  загрузил в чип - работает как часы... Но странная вещь происходит: пытаюсь симулировать в post-route functional и post-route timing - reset (и все что на него завязано) не работают...  . Симуляция показывает reseta не происходит вообще. Не пойму почему...то-ли такая реализация сильно привязана к технологии конкретного чипа/бренда (возможно в Xilinxовой CPLD работает, а в Latticeовской (под которую и симулировал) - не будет ?) Странно.... Если я правильно понял, в железе xilinx реализация типа моей работает, а post-route timing в моделсиме это не работает. так не должно быть. Если конечно отрабатываются указания синтезатору при моделировании. Нюанс такой реализации заключается в том, что схема базируется на установке всх регистров по включению питания в ноль. А далее нужно смотреть как синтезатор отнесся к той части схемы, на которой реализованы внутренний ресет по включению питания. Эта часть схемы функционирует только во время "инициализации" по включению питания и не обладает периодичностью, как если бы ресет был бы внешний. Синтезатор и может быть симулятор (если во времени это не ощущает) может минимизировать эту часть схемы, выбросив формирователь ресета и задать его константой 1, а значит и интервала не будет. У Квартуса например есть специальное указание синтезатору. Кстати, указание внутренним сигналам в разделе инициализации проекта не минимизирует такую схему. Это по ресурсам в мап технологическом видно (константа 1 или счетчик формирования интервала). И временное моделирование это показывает в Квартусе, пакет цельный, а в связке с моделсимом я такую конструкцию не пробовал. Если во временном моделировании этого интервала нет. А по ресурсам такая схема есть, и в железе работает, значит при моделировании в моделсиме в связке с xilinx что то не то. Наверное. Я ведь выкатил реализацию в том числе и в надежде, что кто то это на других системах опробует.
|
|
|
|
|
Sep 4 2008, 17:26
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Саша Z @ Sep 4 2008, 15:32)  Но странная вещь происходит: пытаюсь симулировать в post-route functional и post-route timing - reset (и все что на него завязано) не работают...  . Симуляция показывает reseta не происходит вообще. Это бага в ISE Xilinx'а (точнее в генераторе post-route модели) Они зачем то сигнал glbl.PRLD (это загрузка начальных значений после reset'а) сделали локальной цепью в сгенерированной post-route модели (вместо того, что бы подключить ее к цепи PRLD модуля glbl) И сигнал этот никуда не подключен  Добавь в bench.v Код assign uut. \glbl.PRLD = glbl.PRLD; - заработает
|
|
|
|
|
Sep 4 2008, 20:48
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(XVR @ Sep 4 2008, 20:26)  Это бага в ISE Xilinx'а (точнее в генераторе post-route модели) Они зачем то сигнал glbl.PRLD (это загрузка начальных значений после reset'а) сделали локальной цепью в сгенерированной post-route модели (вместо того, что бы подключить ее к цепи PRLD модуля glbl) И сигнал этот никуда не подключен  Добавь в 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а.. Цитата(sazh @ Sep 4 2008, 18:15)  Если я правильно понял, в железе 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...
|
|
|
|
|
Sep 5 2008, 06:14
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(Саша Z @ Sep 5 2008, 00:48)  хотя functional симуляция в том-же Латтисе - да работает. Ныло-бы интересно узнатч работает ли оно в симуляции post-route functional and timing в Xilinxе...а так-же интересно было-бы увидеть будет ли работать в железе Lattice... Может RTL viewer Латиса даст ответ похему post-route симулятор в Латице не отрабатывает... Завтра гляну.... Чистый functional наверно моделсимовский. Он оперирует процессами, к примитивам Латтисе не привязан и к Латтисе отношения не имеет. А чтобы привязаться к Латтисе, нужна имитация включения по питанию. У xilinx эту функцию выполняет GSR. Короче, смотрите структуру выбранного семейства (eeprom, sram), можно ли эту структуру в ноль инициализировать, читаете раздел как активизировать инициализацию регистров по включению питания в симуляторе. По ресурсам кристалла определяете, выбросил или нет синтезатор часть схемы, реализующую формирование внутреннего ресета (Ищите опцию в смнтезаторе типа игнорировать состояния регистров по power-up или нет. Если игнорировать, то и смысла в схеме формирования начальных состояний этих регистров нет, синтезатор вместо этой схемы константу подставит). Если все регистры по включению в ноль инициализируются без внешних сигналов и схема формирования внутреннего ресета в ресурсах присутствует, то и в железе рабоать будет.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|