Перейти к содержанию
    

Help the noob with Verilog

Только начинаю изучать Verilog, столкнулся с необъяснимыми трудностями. Второй час бьюсь головой об стену, пытаясь понять причины недовольства компилятора. Знатоки, помогите, пожалуйста. Файл с исходником ниже прилепил.

QIP_Shot_-_Screen_174.png

test.v

Изменено пользователем Fantasm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у вас комбинация if - else сама по себе болтается, её надо в always сунуть , а assign вытащить из неё.

з.ы.

правда что вы хотите от led-a я так и не понял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у вас комбинация if - else сама по себе болтается, её надо в always сунуть , а assign вытащить из неё.

з.ы.

правда что вы хотите от led-a я так и не понял.

 

Каждые 40 нс меняется состояние led. То есть это имитация светодиода, который горит в течение 40 нс каждые 40 нс.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это имитация светодиода, который горит в течение 40 нс каждые 40 нс.

если лед будет гореть 40 нс, каждые 40 нс - то он будет гореть непрерывно.

Но я вас понял - вы на самом деле хотите чтобы у вас лед мигал со скважностью 2.

 

reg led_reg=0;
always @(posedge clk) 
if (tm!=40) tm<=tm+1; 
else
begin
tm<=0;
led_reg<=~led_reg;
end
assign led = led_reg;

 

Симулятора у меня под рукой нет - надеюсь не накосячил.

Само - собой , тактовая 1 ГГц. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно оффтоп?

Есть какие-нибудь наработки для визуализации всего этого дела? Виртуальная эмуляция платы например, которая будет мигать диодами и реагировать на клики мышью по кнопкам? Настоящую ПЛИС приобрести пока нет возможности.

В инете не нашел, но, быть может, плохо искал (ибо формулировка такого запроса - дело мутное).

 

led_reg<=~led_reg;

 

А что, так можно было?? :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть какие-нибудь наработки для визуализации всего этого дела?

А симулятор чем плох?

Напишите модуль, напишите тестбенч и любуйтесь на здоровье.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А симулятор чем плох?

Напишите модуль, напишите тестбенч и любуйтесь на здоровье.

 

Никрасиво! :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никрасиво! :D

Как в известном анекдоте: "Так вам шашечки или ехать?"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никрасиво! :D

На самом деле, симулятор это очень даже няяя и кавайно.

HDL симулятор это основной инструмент разработки и отладки. Если noob решил учиться, то пусть учится сразу правильно. Некоторые малоопытные разработчики, немного пишущие на Verilog, как раз и задерживают свое развитие в данной области, потому что не желают научиться пользоваться симулятором. В итоге, когда нужно справить даже со средней сложности проектом, они оказываются беспомощными.

 

https://electronix.ru/forum/index.php?showtopic=147073

https://electronix.ru/forum/index.php?showtopic=147246

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только начинаю изучать Verilog, столкнулся с необъяснимыми трудностями. Второй час бьюсь головой об стену, пытаясь понять причины недовольства компилятора. Знатоки, помогите, пожалуйста. Файл с исходником ниже прилепил.

QIP_Shot_-_Screen_174.png

Нет энтера после endmodule , он синим должен быть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

Нет энтера после endmodule , он синим должен быть.
При чем тут энтер - if не может болтаться в теле модуля сам по себе - он должен быть либо в always либо в generate блоках.

module ...

generate 
  if (...) begin 
    assign var0 = ...
  end
endgenerate

always_comb begin
  if (..) begin
   var1 =  ...
  end
end

always @(posedge clk) begin
  if (..) begin
    var2 <= ...
  end
end

endmodule

 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...