-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
cyclone пишет: Доброе время суток,
подскажите пожалусто как делать sub-module (т.е. модуль в модуле)? Я очень новенький в програмировании поэтому прошу снисхождения за ошибки.
В следующей программе я попытался соединить входа "a, b" модуля "verilog1" с входами "y, z" модуля "verilog2". При компиляции не жалуется, но создается такое впечатление что модуль "verilog2" вообще не существует. "Pin planner" (квартус 13.0 без лицензии) видит только входа "a, b" и выхода "outa, outb" и больше ничего.
Подскажите где моя ошибка или это как-то связано с лицензией квартуса?
Благодарю
Вы на "Pin planner" не ориентируйтесь, он ваших внутренних пинов видеть и не должен.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
reklouzer
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 6
-
Спасибо получено: 0
-
-
|
Подскажите пожалуйста, как можно создавать временные задержки на языке 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" чтобы он все время циклически менялся и над ним адекватно выполнялись операции типа приведенных выше.......
Заранее благодарен за подсказки.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
dundich
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 3
-
Спасибо получено: 1
-
-
|
если я не ошибаюсь, то переменную типа time можно использовать для формирования задержек только при моделировании. А чтобы формировать задержку между событиями в железе, то тут только надо счетчики городить.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Kas2901
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 12
-
Спасибо получено: 0
-
-
-
-
|
Приветствую! У меня возник вопрос, как глобальный сброс завести на землю на Verilog`e? В графике все просто. А вот в тексте, что-то не фурычит. Описывал примерно так:
wire reset;
always @ (posedge reset...)
...
...
assign reset 0;
Это правильно?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Falcon
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 31
-
Спасибо получено: 8
-
-
|
assign reset = 0;
Только в не блока always
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Kas2901
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 12
-
Спасибо получено: 0
-
-
-
-
|
Да, опечатался... assign reset = 0
Кроме как в списке чувствительности я его нигде не использую. Т.е. это правильно?
reset в списке портов не указываю. По аналогии с графикой. :dry:
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Kas2901.
|
-
Falcon
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 31
-
Спасибо получено: 8
-
-
|
Вот только бессмысленно ведь вы проводу присваиваете 0
И это 0 будет на нём постоянно.
А следовательно always @ (posedge reset...) не сработает.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Falcon.
|
-
Kas2901
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 12
-
Спасибо получено: 0
-
-
-
-
|
Вы хотите сказать что такая конструкция (см. рисунок) не имеет смысла и не работает???
Во всех моих предыдущих проектах, где топ файлом была графика, это работало. Просто когда я попробовал переделать это в код (по своему понимаю) оно не заработало... Данная конструкция мне давала при подача питания установку нужных мне начальных значений.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Kas2901.
|
-
Falcon
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 31
-
Спасибо получено: 8
-
-
|
Смысла не имеет. Работать будет.
Схема и код это разные вещи.
В коде вы можете это и не делать так как компилятор все равно все цепи где reset = 0 удалит. Ну или установит какие то значения.
Скажем так есть у вас условие if (reset) a <= 1;
То при reset = 0 выражение a <= 1 теряет смысл так как никогда не будет выполненно а следовательно компилятор это код просто проигнорирует.
P.S. reset нужная вещь и цеплять его на 0 не целесообразно так как reset устанавливает все цепи в начальное 0 состояние. Без reset может начаться хаус.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Kas2901
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 12
-
Спасибо получено: 0
-
-
-
-
|
И как тогда это реализовать на Verilog`e?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.184 секунд