реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Help the noob with Verilog, Expected endmodule
Fantasm
сообщение Jun 23 2018, 09:21
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 23-06-18
Пользователь №: 105 402



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


Сообщение отредактировал Fantasm - Jun 23 2018, 09:23
Прикрепленные файлы
Прикрепленный файл  test.v ( 240 байт ) Кол-во скачиваний: 4
 
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Jun 23 2018, 10:02
Сообщение #2


отэц
*****

Группа: Свой
Сообщений: 1 714
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



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


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Fantasm
сообщение Jun 23 2018, 10:12
Сообщение #3





Группа: Новичок
Сообщений: 4
Регистрация: 23-06-18
Пользователь №: 105 402



Цитата(Lmx2315 @ Jun 23 2018, 11:02) *
у вас комбинация if - else сама по себе болтается, её надо в always сунуть , а assign вытащить из неё.
з.ы.
правда что вы хотите от led-a я так и не понял.


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

За совет - спасибо. Не знал, что нельзя вне блока always операторы совать
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Jun 23 2018, 10:44
Сообщение #4


отэц
*****

Группа: Свой
Сообщений: 1 714
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Цитата(Fantasm @ Jun 23 2018, 13:12) *
это имитация светодиода, который горит в течение 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 ГГц. sm.gif


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Fantasm
сообщение Jun 23 2018, 11:00
Сообщение #5





Группа: Новичок
Сообщений: 4
Регистрация: 23-06-18
Пользователь №: 105 402



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

Цитата(Lmx2315 @ Jun 23 2018, 11:44) *
led_reg<=~led_reg;


А что, так можно было?? biggrin.gif
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jun 23 2018, 11:00
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 3 982
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Fantasm @ Jun 23 2018, 13:58) *
Есть какие-нибудь наработки для визуализации всего этого дела?

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


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Fantasm
сообщение Jun 23 2018, 11:41
Сообщение #7





Группа: Новичок
Сообщений: 4
Регистрация: 23-06-18
Пользователь №: 105 402



Цитата(iosifk @ Jun 23 2018, 12:00) *
А симулятор чем плох?
Напишите модуль, напишите тестбенч и любуйтесь на здоровье.


Никрасиво! :D
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 24 2018, 12:26
Сообщение #8


В поисках себя...
****

Группа: Свой
Сообщений: 698
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Fantasm @ Jun 23 2018, 14:41) *
Никрасиво! :D

Как в известном анекдоте: "Так вам шашечки или ехать?"
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 27 2018, 12:05
Сообщение #9


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 322
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Fantasm @ Jun 23 2018, 14:41) *
Никрасиво! :D

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

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


--------------------
Go to the top of the page
 
+Quote Post
umarsohod
сообщение Jun 27 2018, 12:19
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 24-11-11
Пользователь №: 68 492



Цитата(Fantasm @ Jun 23 2018, 12:21) *
Только начинаю изучать Verilog, столкнулся с необъяснимыми трудностями. Второй час бьюсь головой об стену, пытаясь понять причины недовольства компилятора. Знатоки, помогите, пожалуйста. Файл с исходником ниже прилепил.

Нет энтера после endmodule , он синим должен быть.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jun 27 2018, 12:26
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 959
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(umarsohod @ Jun 27 2018, 15:19) *
Нет энтера после endmodule , он синим должен быть.
Ошибка не в этом.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jun 27 2018, 12:29
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 182
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!
Цитата(umarsohod @ Jun 27 2018, 15:19) *
Нет энтера после 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.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2018 - 13:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01057 секунд с 7
ELECTRONIX ©2004-2016