masics 0 September 22, 2015 Posted September 22, 2015 · Report post я не могу точно отослать к главам стандарта, но вроде бы reg [15:0] MyReg = 0; и reg [15:0] MyReg; initital begin MyReg = 0; end Эквивалентны. Да, только не "output reg [1:0]State = 0" Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 22, 2015 Posted September 22, 2015 · Report post ...power-up level of a register to minimize the area of the design... да я зря наехал, он сделал все корректно. Для минимизации взял и похерил состояние которые проскакивают, считая что автомат стартанул из другого состояния, причем не просто молча их похерил, а еще и варнинг написал. Молодец, на самом деле, все четко сделал. Да, только не "output reg [1:0]State = 0" вот так пишу, так можно. module MyModule ( .... out_reg, .... ); output reg [15:0] out_reg = 0; endmodule и можно добавлять в начале #( parameter My_PARAM = 10, .....) хотя может именно в сигналах равно в скобках недопустимо... Quote Share this post Link to post Share on other sites More sharing options...
Jackov 2 September 22, 2015 Posted September 22, 2015 · Report post Сделайте синхронный сброс.Да хоть какой сброс, от куда его подавать? От PLL, как советует тов. Голиков? Но в общем случае PLL может и не присутствовать в проекте. Даже если нет PLL все равно генератору надо раскачаться, у многих плис после загрузки конфигурации есть возможность выбрать задержку до появления сигнала готовности.А разве пока ПЛИС конфигурируется генератор не успеет выйти на режим? ну это не аргумент. Самый последний брать не надо, а какой-то из новых с патчами вполне нормально работает.Вполне аргумент. У меня комутер слабенький новые квартусы работают заметно медленнее. Да и тут периодически всплывают жалобы "Раньше проект нормально разводился, а на новом Квартусе уже не лезет в кристалл.", в технике есть хорошее правило "Работает - не трожь". Ваш то пишет на вашу конструкцию что он нашел автомат?Не знаю, в консоли ничего такого не пишет. Могли бы указать, где это у Альтеры прописано.Говорю же, точно не уверен, но помню, что что-то такое читал в документации на первый Циклон. Не гарантирует. Смотрим вашу опцию 'Power-Up don't care': Т.е. у вас State изначально в X, а не в 0. И синтезатор имел полное право стартануть автомат из любого состояния (что он и сделал) А, ну теперь ясно. Хотя до сих пор не понимаю, почему второй код работает. Quote Share this post Link to post Share on other sites More sharing options...
likeasm 0 September 22, 2015 Posted September 22, 2015 · Report post Да хоть какой сброс, от куда его подавать? От PLL, как советует тов. Голиков? Но в общем случае PLL может и не присутствовать в проекте. У Альтеры нет примитива startup? Quote Share this post Link to post Share on other sites More sharing options...
Jackov 2 September 22, 2015 Posted September 22, 2015 · Report post У Альтеры нет примитива startup?Первый раз о таком слышу, можно по подробнее, где его искать? Quote Share this post Link to post Share on other sites More sharing options...
likeasm 0 September 23, 2015 Posted September 23, 2015 · Report post Первый раз о таком слышу, можно по подробнее, где его искать? Я с Альтерой не работал, поэтому и спросил. У xilinx эти примитивы в наборе CONFIG/BSCAN в лампочке. В этом startup есть сигнал окончания конфигурации, бытовало мнение, что его можно завести как сброс для начальной установки. Возможно, это мнение ошибочно. Quote Share this post Link to post Share on other sites More sharing options...
TRILLER 0 September 23, 2015 Posted September 23, 2015 · Report post Я с Альтерой не работал, поэтому и спросил. У xilinx эти примитивы в наборе CONFIG/BSCAN в лампочке. В этом startup есть сигнал окончания конфигурации, бытовало мнение, что его можно завести как сброс для начальной установки. Возможно, это мнение ошибочно. Не ошибочно. EOS - Active high output signal indicating the End Of Startup. Именно этот сигнал постоянно используем для генерации общего ресета. В том числе и для PLL. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 23, 2015 Posted September 23, 2015 · Report post у всех есть сигнал что бутиться закончили, после этого стОит еще счетчик для задержки сделать чтобы все клоки раскачались если надо, и потом общий сброс снять. Quote Share this post Link to post Share on other sites More sharing options...
xvr 12 September 23, 2015 Posted September 23, 2015 · Report post Хотя до сих пор не понимаю, почему второй код работает.Второй работает потому, что автомат циклически ходит по всем состояниям, и никакими начальными значениями State это не изменить. Т.е. синтезатор не имеет права выкидывать какие либо состояния, т.к. в любое из них можно попасть из любого другого. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 23, 2015 Posted September 23, 2015 · Report post второй во 2 состоянии останавливается, если начать с него то кода еще меньше. С другой стороны дефалт у 2 автомата активный в отличии от 1... а обнаружен автомат или нет это в репортах поглядеть можно, там даже написано как оно закодировалось, у альтеры оне хот обычно Quote Share this post Link to post Share on other sites More sharing options...
iosifk 3 September 23, 2015 Posted September 23, 2015 · Report post Салют. Синтезируем простенький автомат: Методом научного тыка нашёл решение проблемы, в настройках синтезатора нужно снять опцию "Power-Up don't care". Кто-нибудь может сказать что происходит? Сейчас напишу немного другое... Я вот даю уроки по ПЛИС и первое, что я объясняю, так это то, что любая разработка для инженера это риск. И его задача в том, чтобы этот риск свести к минимуму. Потому как цель - это зарабатывание денег, а не написание разных файлов. А потому первое, что нужно делать - это писать файлы совершенно каноническим образом, чтобы и симулятор и компилятор их воспринимали однозначно. И при этом результат был бы гарантирован. А вот "изучение" криво написанного файла - этот то как раз и есть тупик. И он, файл этот, приводит к увеличению числа ошибок. В сложном проекте это приведет к лавинообразному нагромождению ошибок. Так вот, в чем цель ТС? Поиграть файлами? Или нужен результат проекта? Если нужен результат, то берем описание автомата из шаблонов или из рекомендаций по языку и не выпендриваемся... Quote Share this post Link to post Share on other sites More sharing options...
FatRobot 5 September 23, 2015 Posted September 23, 2015 · Report post Звучит мрачновато. Из серии "жизнь - это боль". Но всё остальное правильно, конечно. Если работа не связана с тестированием средств моделирования и синтеза, то RTL-описание должно быть предельно понятным и разработчику, и синтезатору, и коллегам. Иначе это не описание, а фуфло. любая разработка для инженера это риск. Quote Share this post Link to post Share on other sites More sharing options...
Jackov 2 September 23, 2015 Posted September 23, 2015 · Report post Второй работает потому, что автомат циклически ходит по всем состояниям, и никакими начальными значениями State это не изменить. Т.е. синтезатор не имеет права выкидывать какие либо состояния, т.к. в любое из них можно попасть из любого другого. второй во 2 состоянии останавливается, если начать с него то кода еще меньше.Вот именно, что он циклится во втором состоянии, 0-е и 1-е, также, как и в первом случае, недостижимы. С другой стороны дефалт у 2 автомата активный в отличии от 1...Он то активный, но как автомат может попасть в 3-е состояние, если по его логике он туда попасть не может? В результате сбоя, наводок, помех, воздействия радиации? Но если такое случится, мне кажется, уже никакой дефолт не поможет, ведь сбойнёт не только этот автомат, но и другие части схемы. а обнаружен автомат или нет это в репортах поглядеть можно, там даже написано как оно закодировалось, у альтеры оне хот обычноПрикрепил 3 файла с отчётами, ничего такого там вроде не пишут. Так вот, в чем цель ТС? Поиграть файлами? Или нужен результат проекта? Если нужен результат, то берем описание автомата из шаблонов или из рекомендаций по языку и не выпендриваемся...Имеет место факт, вот и интересно почему происходит именно так, а не иначе, и никаких выпендриваний здесь нет.LCDTest.flow.rpt.txt LCDTest.map.rpt.txt LCDTest.map.summary.txt Quote Share this post Link to post Share on other sites More sharing options...
FatRobot 5 September 23, 2015 Posted September 23, 2015 · Report post Задача ваша из полезнейшей категории: "почему неправильное RTL-описание синтезируется/работает не так, как я хочу? интернет, памагай!" В соответствии с вашим RTL-описанием (первый листинг), начальное состояние регистра reg [1:0] State будет 2'bxx, т.е. "логическое неопределенное". Скажу больше, на любом времени моделирования значение будет 2'b1x. Оптимизатор все это учел и из множества "начальных неопределенных" честно взял то значение, которое даст минимиальное количество триггеров и состояний в FSM. Рекомендую вам научиться пользоваться средствами моделирования. Много вопросов отпадет, много времени удастся сэкономить, в том числе и в процессе самообразования. Пока вы не добъетесь правильной работы блока в симуляторе, включать средства синтеза смысла не имеет. Успехов. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 23, 2015 Posted September 23, 2015 · Report post Он то активный, но как автомат может попасть в 3-е состояние, если по его логике он туда попасть не может? В результате сбоя, наводок, помех, воздействия радиации? Но если такое случится, мне кажется, уже никакой дефолт не поможет, ведь сбойнёт не только этот автомат, но и другие части схемы. тут надо ввести понятие небезопасный и безопасный автомат. В безопасном автомате все неиспользуемые значения переходят в состояние восстановления. А в небезопасном все состояния в которые нельзя попасть выкидываются. Ксалинкс однозначно говорит задай параметр и так буду делать. Ставишь безопасный - добавлю состояния, ставиш небезопасный выкину лишнее. Как делает альтера я не знаю, совершенно спокойно она может проверять наличие активного дефолта, и использовать это как критерей генерации безопасного автомата. Прикрепил 3 файла с отчётами, ничего такого там вроде не пишут. я не очень искушен в квартусе, но сейчас в последних версиях там есть какие-то интерактивные отчеты, которые не файлы, а в среде открываются какие-то вкладочки, закладочки, и там все это написано, там есть прям закладка FSM и в ней все автоматы собраны. Так вот, в чем цель ТС? Поиграть файлами? Или нужен результат проекта? На самом деле исследование работы среды и почему она приняла то или иное решение также важно в понимание процесса, на мой взгляд, как и заучивание стандартных описаний. Это база и фундамент. ИМХО конечно. Так что я вижу цель ТС разобраться почему оно так сработало, и в целом мы уже почти нашли ответ. Quote Share this post Link to post Share on other sites More sharing options...