Jump to content

    
Sign in to follow this  
Fantasm

Help the noob with Verilog

Recommended Posts

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

QIP_Shot_-_Screen_174.png

test.v

Edited by Fantasm

Share this post


Link to post
Share on other sites

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

з.ы.

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

Share this post


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

з.ы.

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

 

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

 

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

Share this post


Link to post
Share on other sites
это имитация светодиода, который горит в течение 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 ГГц. :)

Share this post


Link to post
Share on other sites

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

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

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

 

led_reg<=~led_reg;

 

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

Share this post


Link to post
Share on other sites
Есть какие-нибудь наработки для визуализации всего этого дела?

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

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

 

Share this post


Link to post
Share on other sites
Никрасиво! :D

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

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

 

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

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

Share this post


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

QIP_Shot_-_Screen_174.png

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

Share this post


Link to post
Share on other sites

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

Нет энтера после 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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this