nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 13 Dec 2018 13:39



Reply to topic  [ 68 posts ]  Go to page Previous  1, 2, 3, 4, 5
Язык Verilog 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
newold86 wrote:
Lavr wrote:
Но вон тот же newold86 на нашем же форуме сделал приличное количество асинхронных схемы в FPGA
и всё вполне работало!
Ага, и тут же на форуме описывал свои душевные страдания от того, что нужно было как раз 5-10 раз откомпилировать тот же Орион, немного меняя код, чтобы заработало... С опытом стало понятнее, где могут быть засады с асинхронщиной, ...

Но зато у Вас теперь есть ОПЫТ!!! А это очень важно - пока не наступишь на собственные грабли,
никакого опыта не наживешь.

Я сейчас вот хочу-таки запихать свой 4-bit Processor в ПЛИС - запихиваю по частям, нарисую блок -
проверю. Надеюсь, из проверенных блоков соберется в итоге сразу.

_________________
iLavr


15 Oct 2018 09:31
Profile
Doomed

Joined: 06 Oct 2006 04:17
Posts: 534
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Уважаемого Icer'а я не хотел поддевать. Я просто хотел сказать, что как-то нужно в отдельную тему всё выкладывать. От последних постов с названием темы сейчас ничего общего. Я бы например, хотел бы тоже вставить пару слов в хаяние верилога, но не могу - ниточка темы от автора пропала, теперь тема стала "положительной" ведь так досканально Icer всё описывает, неохота прерывать его.

_________________
:arrow: Сайт о ПК "Специалист" и его клонах


15 Oct 2018 10:52
Profile WWW
Novelist
User avatar

Joined: 21 Aug 2018 08:39
Posts: 32
Location: Кемеровская обл.
Reply with quote
fifan wrote:
Уважаемого Icer'а я не хотел поддевать. Я просто хотел сказать, что как-то нужно в отдельную тему всё выкладывать.
Без обид, тема и правда переросла в личный блог. Получив помощь, я на радостях настрочил кучу постов.
fifan wrote:
Я бы например, хотел бы тоже вставить пару слов в хаяние верилога, но не могу - ниточка темы от автора пропала, теперь тема стала "положительной" ведь так досканально Icer всё описывает, неохота прерывать его.
Настолько положительной, что хаять не хочется? :mrgreen: Досконально описывать плохо? Видать не все так плохо у верилога, раз десяток постов сместили чашу весов.
И все же уважаемый fifan, прошу вставте пару слов, подлейте масла в огонь. (без сарказма)


15 Oct 2018 16:54
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Джентльмены! Да всё нормально! Всё по теме, но так всегда бывает с различными языками:
кому-то одни нравятся больше, другие - меньше.
И позитивные и негативные отзывы в топике "Язык Verilog" вполне уместны. Сам топикстартер
пока тоже возражений и дополнений не высказывает...

_________________
iLavr


16 Oct 2018 03:01
Profile
Doomed

Joined: 06 Oct 2006 04:17
Posts: 534
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Тады так скажу. Верилог меня отпугивает своей не понятностью в синтаксисе. Хотя это наверное лень - необходимо просто внимательно почитать мануал. Я посмотрю книжку как она называется и обрадую, наверное Lavr'а (он любит книжки коллекционировать). Возможно эта книга известная. По ней можно привести синтаксис и сравнение одних и тех же действий.

Если необходимо, то лично для меня можно вникнуть в верилог. Но это требует какого-то лишнего напряга мозгов.

Ещё многое зависит от "красоты" написания кода. Я пишу так: каждую процедуру, описание переменных, подключаемых модулей стараюсь отделить пустыми строками. Каждое новое условие (if, else) начинаю с новой строки со смещением табуляцией (лесенкой вправо). Присвоение переменных - в каждой строке новая переменная.
Например, с этой темы:
wire [13:0] ram_a, cpu_a, vpu_a;

я бы написал так:
wire [13:0] ram_a;
wire cpu_a;
wire vpu_a;

Кстати я не написал чем я пользуюсь. Конечно vhdl. Для меня описание переменных на нём выглядит намного "красочнее":
signal ram_a : std_logic_vector (13 downto 0);--
signal cpu_a : std_logic; --
signal vpu_a : std_logic; --
Ни тебе "провод" (wire), ни присловутое assign.

_________________
:arrow: Сайт о ПК "Специалист" и его клонах


16 Oct 2018 04:44
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
fifan wrote:
Я посмотрю книжку как она называется и обрадую, наверное Lavr'а (он любит книжки коллекционировать).

Я книги люблю почитать, если они полезные, а вот "книжки коллекционировать" - это не моё.
Но если уж коснулись книг, как то так выходит, что книги ранних изданий по микропроцесорной
тематике более полезны в практическом плане, чем выходящие сегодня.

Так смотришь, написано-то всё вроде правильно, а практически - никакой пользы. :-?
Я такие книги называю "сказочные" :wink: и пропускаю мимо. А книги полезные
обычно отмечаю ссылкой в нашей "библиотеке".

_________________
iLavr


16 Oct 2018 04:55
Profile
Novelist
User avatar

Joined: 21 Aug 2018 08:39
Posts: 32
Location: Кемеровская обл.
Reply with quote
Code:
wire [13:0] ram_a, cpu_a, vpu_a;
три однотипных массива проводов в вашем исполнении выглядели бы так:
Code:
signal ram_a : std_logic_vector (13 downto 0);--
signal cpu_a : std_logic_vector (13 downto 0);--
signal vpu_a : std_logic_vector (13 downto 0);--
wire против std_logic_vector
[13:0] vs (13 downto 0)
слегка громоздко, но я не на что не претендую :mrgreen:
с vhdl пока даже не пытался разбираться, может чего и напутал.

Как бы вы на vhdl реализовали арбитраж между адресными шинами cpu vpu и ram?


16 Oct 2018 05:39
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17214
Location: Colorado
Reply with quote
Начал играться с верилятором (поставляется в составе стандартной библиотеки программ для дебиана), который способен компилировать модуль на языке "вырвиглотк" в C++ представление, которое затем можно вкомпилировать в свою C++ программу, меняющую входы и печатающую выходы с использованием Verilator API - пример вокруг сгенерённого из RGB_LED_BLINK.v:
Code:
// RGB.cpp
#include "VRGB_LED_BLINK.h"
#include "verilated.h"
#include <iostream>

int main(int argc, char** argv, char** env)
{
  Verilated::commandArgs(argc,argv);

  int i = 0;

  VRGB_LED_BLINK* top = new VRGB_LED_BLINK();
  while(!Verilated::gotFinish())
  {

     top->myclk = (i&2)?1:0; // change input

          top->eval();

     cout << i++ << ":" << (int)top->myclk << ":" << (int)top->tmp << endl; // print input myclk and output tmp
  }
  delete top;
  exit(0);
}

шаги по сборке:
verilator -Wall --cc RGB_LED_BLINK.v --exe RGB.cpp
создаёт каталог obj_dir где находятся h, cpp и mk файлы, далее
make -j -C obj_dir -f VRGB_LED_BLINK.mk
и после этого можно зайти в obj_dir и запустить VRGB_LED_BLINK на исполнение...

P.S. документация: https://www.veripool.org/projects/verilator/wiki/Documentation

_________________
:eugeek: https://twitter.com/Shaos1973


23 Nov 2018 09:11
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 68 posts ]  Go to page Previous  1, 2, 3, 4, 5

Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.