МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Вопросы по языку Verilog

Re: Вопросы по языку Verilog 6 года 1 мес. назад #1898

cyclone пишет: Доброе время суток,

подскажите пожалусто как делать sub-module (т.е. модуль в модуле)? Я очень новенький в програмировании поэтому прошу снисхождения за ошибки.

В следующей программе я попытался соединить входа "a, b" модуля "verilog1" с входами "y, z" модуля "verilog2". При компиляции не жалуется, но создается такое впечатление что модуль "verilog2" вообще не существует. "Pin planner" (квартус 13.0 без лицензии) видит только входа "a, b" и выхода "outa, outb" и больше ничего.

Подскажите где моя ошибка или это как-то связано с лицензией квартуса?

Благодарю

Вы на "Pin planner" не ориентируйтесь, он ваших внутренних пинов видеть и не должен.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 6 года 1 мес. назад #1900

Подскажите пожалуйста, как можно создавать временные задержки на языке Verilog HDL. Например мне нужно, чтобы событие "B" произошло через 100 мс после наступления события "А" при тактовой частоте 10 МГц.

Единственное что приходит в голову - определить время одного такта и организовать счетчик тактов. Но счетчик тактов необходимо прописывать через always-блок:
reg [7:0] schet_clk;
always @ (posedge CLK) begin
schet_clk = schet_clk + 1'b1;
end

Но ожидание события А тоже целесообразно прописывать через always-блок:
always @ (А) begin

Начинать отсчет тактов нужно только после события А. А always-блок нельзя прописывать внутри always-блока.

Можно организовать сквозной счет тактов, защищая регистр счетчика от переполнения обнулением при достижении какого-нибудь значения. И привязывать события к значениям этого счетчика. Но тогда математические операции над значениями этого счетчика до и после переполнения будут некорректны.

Существует переменная типа "time" но нигде не могу найти описание этой переменной. Над реальным временем возможны следующие операции: 23.50 + 00.15 = 00.05; 01.30-02.00 = 23.30;

Возможно ли счетчику тактов присвоить тип "time" чтобы он все время циклически менялся и над ним адекватно выполнялись операции типа приведенных выше.......

Заранее благодарен за подсказки.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 6 года 1 мес. назад #1901

если я не ошибаюсь, то переменную типа time можно использовать для формирования задержек только при моделировании. А чтобы формировать задержку между событиями в железе, то тут только надо счетчики городить.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 6 года 4 нед. назад #1907

Приветствую! У меня возник вопрос, как глобальный сброс завести на землю на Verilog`e? В графике все просто. А вот в тексте, что-то не фурычит. Описывал примерно так:
wire reset;
always @ (posedge reset...)
...
...
assign reset 0;

Это правильно?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 6 года 3 нед. назад #1909

  • Falcon
  • Falcon аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 8
assign reset = 0;
Только в не блока always

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 6 года 3 нед. назад #1911

Да, опечатался... assign reset = 0
Кроме как в списке чувствительности я его нигде не использую. Т.е. это правильно?

reset в списке портов не указываю. По аналогии с графикой. :dry:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Kas2901.

Re: Вопросы по языку Verilog 6 года 3 нед. назад #1913

  • Falcon
  • Falcon аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 8
Вот только бессмысленно ведь вы проводу присваиваете 0
И это 0 будет на нём постоянно.
А следовательно always @ (posedge reset...) не сработает.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Falcon.

Re: Вопросы по языку Verilog 6 года 3 нед. назад #1914

Вы хотите сказать что такая конструкция (см. рисунок) не имеет смысла и не работает???

Во всех моих предыдущих проектах, где топ файлом была графика, это работало. Просто когда я попробовал переделать это в код (по своему понимаю) оно не заработало... Данная конструкция мне давала при подача питания установку нужных мне начальных значений.
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Kas2901.

Re: Вопросы по языку Verilog 6 года 3 нед. назад #1915

  • Falcon
  • Falcon аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 8
Смысла не имеет. Работать будет.
Схема и код это разные вещи.
В коде вы можете это и не делать так как компилятор все равно все цепи где reset = 0 удалит. Ну или установит какие то значения.
Скажем так есть у вас условие if (reset) a <= 1;
То при reset = 0 выражение a <= 1 теряет смысл так как никогда не будет выполненно а следовательно компилятор это код просто проигнорирует.

P.S. reset нужная вещь и цеплять его на 0 не целесообразно так как reset устанавливает все цепи в начальное 0 состояние. Без reset может начаться хаус.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 6 года 3 нед. назад #1916

И как тогда это реализовать на Verilog`e?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.222 секунд

ВКонтакте  facebook  GitHub  YouTube  Twitter