МАРСОХОД

Open Source Hardware Project

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

ТЕМА: Вопрос по типам переменных.

Вопрос по типам переменных. 11 мес. 2 нед. назад #7495

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Снова, здравствуйте.

module half_freq (freq_in, freq_out);

input wire freq_in;
output wire freq_out;
reg [1:0] state;

always @(posedge freq_in)
begin

state = state + 2'b01;

if (state == 2'b10)
begin
state <= 2'b00;
freq_out <= ~freq_out;
end

end
endmodule


Вроде, все правильно, но ругается:
Error (10137): Verilog HDL Procedural Assignment error at LED_blink.v(50): object "freq_out" on left-hand side of assignment must have a variable data type

Вроде, все логично описано:
На переднем фронте:
1. Добавляем счетчик
2. Смотрим счетчик, если он два, то сбрасываем его и инвертируем выход.

Чувствую, что нет понимания с типами, но не ухватываю какого.

Даже стыдно немного, учитывая, что их всего - ДВА! wire и reg (Как я понял, reg - это внутренние переменные, которые наружу не торчат, а wire - торчат из модуля). По разрядности, вроде, все сходится. Почему она считает, что freq_out - не переменная? Если я ее должен менять! Этож, самая важная часть.
Какую-то мелочь не ухватываю.

Заранее спасибо. :blush:

UPD
И еще не понимаю, как задать начальное значение "state" равным нулю? Этого я так и не постиг.

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

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

Вопрос по типам переменных. 11 мес. 2 нед. назад #7496

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Методом некоторого научного тыка получилось так:

// ***********************
//
// Главный модуль
//
// ***********************

module root (clock,clock_out,clock_out_1,clock_out_2);

input wire clock;
output wire clock_out;
output wire clock_out_1;
output wire clock_out_2;

assign clock_out = clock;
half_freq freq_2(.freq_in(clock), .freq_out(clock_out_1));
half_freq freq_4(.freq_in(clock_out_1), .freq_out(clock_out_2));


endmodule

// ***********************
//
// Делитель частоты на два
//
// ***********************
module half_freq (freq_in, freq_out);

input wire freq_in;
output reg freq_out;
reg [1:0] state;

always @(posedge freq_in)
begin

state = state + 2'b01;

if (state == 2'b10)
begin
state <= 2'b00;
freq_out <= ~freq_out;
end
end
endmodule


Просто игрался с типами.
Вроде, компилятор не к чему не придрался. Хотя, это противоречит тому, что я читал ранее. Про регистры и шнуры.

Вот, понимаю, что совсем запутываться начинаю. Но не могу понять как.
Завтра попробую в железо засунуть и посмотреть логическим анализатором, что получилось. Симулировать пока не научился еще.

Прошу прощения, тут еще непонятная ругань у компилятора:
Critical Warning (332012): Synopsys Design Constraints File file not found: 'LED_blink.sdc'. A Synopsys Design Constraints File is required by the TimeQuest Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design.
Critical Warning (332148): Timing requirements not met
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.

Если не трудно, чего он хочет?

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

Вопрос по типам переменных. 11 мес. 2 нед. назад #7497

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Но с типами переменных я совсем теперь запутался....

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

Вопрос по типам переменных. 11 мес. 2 нед. назад #7498

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Не удержался.

Странно, но делит на четыре, а не на два. 50 / 12,5 / 3.125

Он-же, кажый второй фронт должен менять состояние, а тут - халявит.
Вложения:

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

Последнее редактирование: от kolyan. Причина: Добавить схему о

Вопрос по типам переменных. 11 мес. 1 нед. назад #7499

Если написать "state <= state + 2'b01;" делить должно на 6.

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

Вопрос по типам переменных. 11 мес. 1 нед. назад #7500

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Как такое возможно? Этож просто неблокирующее присвоение и все. Которое надо, чтоб скорость выжать, если я правильно понял.
Оно просто форкает процесс присвоения и продолжает программу.

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

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

Вопрос по типам переменных. 11 мес. 1 нед. назад #7501

С неблокирующим присвоением



С блокирующим присвоением





В первом случае делить будет на 6, во втором на 4
Вложения:

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

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

Вопрос по типам переменных. 11 мес. 1 нед. назад #7502

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Качество, конечно, то еще... Жмет сильно.

Спасибо, конечно...
Но я не вижу разницы в схемах. У себя смогу только вечером посмотреть, может, тогда пойму.

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

Вопрос по типам переменных. 11 мес. 1 нед. назад #7504

Извините , в спешке вставил одинаковые картинки. Уже исправил. И качество поправил

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

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

Вопрос по типам переменных. 11 мес. 1 нед. назад #7505

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Да, не за что! Вам спасибо.

Да, начинаю понимать. Оно на клок, на каждом элементе, отставать начинает.

Получается, надо везде использовать, только неблокирующие присвоения. А о блокирующих - забыть, как о страшном сне.

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

Последнее редактирование: от kolyan.
  • Страница:
  • 1
  • 2
Время создания страницы: 0.659 секунд

facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Forum Наш форум Языки программирования Вопрос по типам переменных.