Jump to content

    

SpiderHulk

Участник
  • Content Count

    6
  • Joined

  • Last visited

Community Reputation

0 Обычный
  1. При переходе к Open Elaborated Design на экран были выведены следующие сообщения об ошибках: [Synth 8-3380] loop condition does not converge after 2000 iterations [H:/verilog/timer/timer.srcs/sources_1/new/timer.sv:34] [Synth 8-6156] failed synthesizing module 'timer' [H:/verilog/timer/timer.srcs/sources_1/new/timer.sv:23] [Vivado_Tcl 4-5] Elaboration failed - please see the console for details Вот как раз первое сообщение. Это не то самое о чём я ранее высказывал беспокойство? Что цикл не может иметь слишком много витков? Если я правильно понял данное сообщение, то согласно ему витков цикла должно быть не более двух тысяч Апдейт: хотя возможно я просто неправильно цикл написал, с невыполнимым условием выхода из цикла
  2. module timer( input clock, //input inp01, //input inp02, output out01 ); (* dont_touch = "true" *)reg [28:0] cont = 0; (* dont_touch = "true" *)reg [28:0] cont_max = 28'd120000000; always @(posedge clock) begin while (cont < cont_max) begin cont=cont+1'd1; end end assign out01=1; endmodule Я ожидаю, что данный код будет работать следующим образом: в момент подключения микросхемы к персональному компьютеру по USB запустится таймер на 10 секунд (clock соединён с генератором 12 МГц. По истечении 10 секунд переменной out01 будет присвоена 1, а так как 01 это лампочка, то она загорится. Я прав в своих ожиданиях?
  3. Самое простое что мне приходит в голову это взять генератор 12 мегагерц и как то считать количество импульсов поступивших от этого генератора, сравнивая с заданным, пока оно не будет достигнуто, дальше сигнал на подрыв. Но правомерен такой подход если это заданное число скажем 1.200.000.000 и надо будет сделать столько же сравнений? Какая в итоге вообще логическая схема сформируется?
  4. Вот можно ли так делать если предполагаемых сравнений очень много? Это ведь не программирование, а некая логическая схема должна получиться. Например вот подобный цикл можно реализовывать на верилоге? (здесь использую синтаксис си) int i=0; while(i<10000000) { i=i+1; }
  5. Обычный цикл как в программировании ведь не подойдёт. Так как генератор имульсов это миллионы сигналов в секунды, а таймер должен работать хотя бы несколько десятков секунд. Это значит миллионы знаков < или > в коде, а как мне стало известно на одной из лекций всего один такой знак это "стена" кода. Я прав?
  6. Добрый вечер. Вопрос по проекту в рамках курса схемотехники. Есть две отладочные платы FPGA XC7A15T, соединены двумя проводами: синим и красным. На одной плате запущено нечто, что генерирует сигналы по которым вторая плата (с таймером) понимает что первая соединена с ней двумя проводами. Если обрыв красного провода, то остановка таймера, если синего то "взрыв" (звуковой сигнал), если таймер заканчивает отсчёт то "взрыв" Собственно проблема с реализацией таймер. Как я полагаю это должен быть счётчик числа импульсов делать, подсчитывающий количество импульсов от тактового генератора. Но как начать неясно совсем. Мой актуальный уровень знаний и умений, это программирование с помощью языка SystemVerilog простейших логических схем. На всякий случай прикрепляю материалы своего курса Отладочная плата на основе FPGA XC7A15T.pdf Лабораторная работа номер один этой мой уровень знаний и умений, со второй пока не справился. Самих микросхем у меня на руках нет, они доступны мне только на учебных парах. В списке рекомендованной нам литературы фигурирует книга "Цифровая схемотехника и архитектура компьютера" Второе издание Пререквизит к лабораторным работам - установка Vivado.pdf Лабораторная работа №1 – комбинационная логика.pdf