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

verilog глобальные переменные

вот есть у меня SRAM, доступ к которой мне нужен из трех модулей. я в каждом модуле описываю шину адреса, шину данных и управление. можно как-то весь этот текст написать один раз? я понял что можно сделать отдельный модуль для работы с СРАМ. теперь затык, я в root модуле объявляю этот модуль:

sram my_sram(ADDR, DATA, ляля-тополя)

а как к нему обращаться из других модулей?

еще вопрос, я хочу из одного модуля в другой передать переменную или флаг, как ее описать, чтобы она не выводилась на ноги ФПГА?

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


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

однако на электрониксе совсем перестали пинать чайников в нужное направление. пнули бы "кури гугль про parameter".

module qwer(v0, v2);
    parameter i = 0;
    input v0;
    output reg v2;

always
    if (i == 0)
       v2 = v0;
    else
       v2 = 0;
     
endmodule


module main(a1, a2, o3);
     
     input a1;
     output a2, o3;

assign a2 = a1;

    qwer #(0) module1(a1, a2);

    qwer #(1) module2(a1, o3);
    
endmodule

вопрос конкретно такой - модуль "qwer" будет создан 1 раз или 2?

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


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

вопрос конкретно такой - модуль "qwer" будет создан 1 раз или 2?

А вы сколько экземпляров модуля qwer создали в main?

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


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

А вы сколько экземпляров модуля qwer создали в main?

видимо два, но с разными параметрами.

после С на микроконтроллерах верилог в голову трудно ложится.

 

а в function я так понимаю портами ввода-вывода воспользоваться не удастся, да?

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


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

А "покурить", как Вы выражаетесь, курс для новичков по Verilog'у не позволяет религия? Чтобы разговор как-то не совсем от печки начинать, а то проводить заочное обучение на форуме "устанет рука" :) .

 

Например, такой (быстро, конкретно и еще правильному стилю обучают):

Pong Chu, FPGA Prototyping Using Verilog Examples http://www.freebookspot.es/Comments.aspx?Element_ID=5281

 

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


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

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

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


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

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

А не могли бы Вы мне в личку, а еще лучше на почту написать, что не понятно.. Что нужно в курс добавить... Кстати, пару дней назад я вычислил, что 5 лет назад одну часть на свой сайт не выложил. И позавчера поправил... И наверное надо еще что-то добавить...

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


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

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

 

На здоровье! Как дым от раскуривания книги немного начнет ударять в голову, и голова чтой-то не понимать будет - давай сюда ходи, вопрос называй! :)

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


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

да все вроде понятно. вот провода, вот регистры, вот гаечки. а теперь постройте космический корабль.

 

и все-таки. вот есть модуль работы с СРАМ, я к нему хочу обращаться из 3-х мест. как это сделать?

как передавать параметры между модулями и не занимать ноги ФПГА на эти параметры? например, в коде выше в модуле module qwer(v0, v2); output v2 не выводить на ноги.

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


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

и все-таки. вот есть модуль работы с СРАМ, я к нему хочу обращаться из 3-х мест. как это сделать?

как передавать параметры между модулями и не занимать ноги ФПГА на эти параметры? например, в коде выше в модуле module qwer(v0, v2); output v2 не выводить на ноги.

Если одновременно, то делайте 3-х портовую память.

Если не одновременно, то на вход памяти - мультиплексор. И арбитр доступа к памяти... Это даст 3 шины адрес+данные в память, данные из памяти в параллель ко всем трем модулям. Ну и входы-выходы арбитров разведете обычным образом...

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


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

Ноги ФПГА тут пока еще вообще никак не фигурируют. А для соединений модулей между собой используются внутренние переменные или сигналы (wire) модуля, в который вышеуказанные модули инстанцируются. Например, вот так:

 

module qwer(v0, v2);
    parameter i = 0;
    input wire v0;
    output reg v2;

always * // Для определенности пусть будет комбинационной логикой
    if (i == 0)
       v2 = v0;
    else
       v2 = 0;
endmodule

module main(i1, o1, o2);
     input wire i1;
     output wire o1, o2;

     wire int_signal_1; // Внутренний сигнал, соединяющий выход #1 со входами #2,#3

    qwer #(0) module1(i1, int_signal_1);
    qwer #(0) module2(int_signal_1, o1);
    qwer #(1) module3(int_signal_1, o2); // Выход o2 будет у нас всегда в лог.0 (согласно логике модуля, для параметра i=1)
endmodule

 

И это было неясно после прочтения Каршенбойма?

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


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

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

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

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

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

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

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

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

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

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