EpLeon 0 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба Добрый всем день. Может кто-нибудь подсказать, как сделать под Verilog-ом файл с параметрами на подобии VHDL-ного: package parameters is ... end parameters; package body parameters is end parameters; Чтобы можно было пользоваться одними и теми же константами (параметрами) в разных модулях/файлах проектах. И еще вопрос, как можно в одном проекте (работаю под Xilinx ISE 14.7) совместить модули написанные на разных языках (VHDL и Verilog)? Головной файл VHDL, но в нем надо вызывать модули написанные на Verilog. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба 55 minutes ago, EpLeon said: И еще вопрос, как можно в одном проекте (работаю под Xilinx ISE 14.7) совместить модули написанные на разных языках (VHDL и Verilog)? Легко. 55 minutes ago, EpLeon said: Головной файл VHDL, но в нем надо вызывать модули написанные на Verilog. Никаких проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EpLeon 0 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба 3 minutes ago, andrew_b said: Легко. Никаких проблем. Очень информативный ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба Сделать обычный файл с объявлением парметров и заинклюдить его в нужных местах. На SV я в отдельном файле package делал и так же подключал через import в нужных файлах Quote Чтобы можно было пользоваться одними и теми же константами (параметрами) в разных модулях/файлах проектах Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EpLeon 0 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба 1 minute ago, R6L-025 said: Сделать обычный файл с объявлением парметров и заинклюдить его в нужных местах. На SV я в отдельном файле package делал и так же подключал через import в нужных файлах Спасибо. Но вопрос про Verilog. Как это сделать в SV, я тоже знаю. Просто ISE не поддерживает SV. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба Так инклюдами же. Они в обычном Verilog есть. В файле через define определяем параметры, например, `define MY_DEF 42, и инклюдим через `include "path/to//file" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EpLeon 0 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба 8 minutes ago, R6L-025 said: Так инклюдами же. Они в обычном Verilog есть. В файле через define определяем параметры, например, `define MY_DEF 42, и инклюдим через `include "path/to//file" Я пытался сделать вот так, создав файл Eth_parameters: `define Eth_WORD_WIDTH = 16; `define ETH_HEADER_LENGTH = 14; `define IP_HEADER_LENGTH = 20; `define UDP_HEADER_LENGTH = 8; `define OPCODE_LENGTH = 2; А потом в коде модулей: module Eth_ext_pkt ( //----------------------------------------------------------------------------- // Libraries //----------------------------------------------------------------------------- `include "Eth_parameters.v" //--------------------------------------------------------------- И потом в самом модуле использовать переменные с верхним апострофом (например `Eth_WORD_WIDTH): //----------------------------------------------------------------------------- // Signal declarations //----------------------------------------------------------------------------- wire RxByte_Cnt_sclr; wire [`RxByte_Cnt_Width_ext:0] RxByte_Cnt_o; wire [`Eth_WORD_WIDTH-1:0] RxByte_Cnt_Reg_o; wire RAM_Overflow; wire RAM_Overflow_SRFF_o; Но синтаксическая проверка ругается на это... Что я тут делаю не правильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба знака "=" не должно быть, и ";" в конце тоже уберите. Ну и путь в `include <...> должен быть понятным синтезатору. В квартусе у меня пути идут относительно директории где лежит файл проекта квартуса Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EpLeon 0 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба Just now, R6L-025 said: знака "=" не должно быть. Ну и путь в `include <...> должен быть понятным синтезатору. В квартусе у меня пути идут относительно директории где лежит файл проекта квартуса Ну, попробую прописать полный путь, просто файл с параметрами лежит в той же папке, что и сами файлы модулей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба 1 hour ago, EpLeon said: Очень информативный ответ. Вы сами попробовали что-нибудь сделать? У вас не получилось? Какие ошибки выдаёт синтезатор? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба 27 minutes ago, EpLeon said: Ну, попробую прописать полный путь, просто файл с параметрами лежит в той же папке, что и сами файлы модулей. Чтобы синтезатор или сим нашел эти include файлы надо при запуске сима/синтеза соотв. ключами указывать путь поиска к папкам где эти файлы лежат Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EpLeon 0 22 сентября, 2022 Опубликовано 22 сентября, 2022 (изменено) · Жалоба 14 hours ago, R6L-025 said: знака "=" не должно быть, и ";" в конце тоже уберите. Ну и путь в `include <...> должен быть понятным синтезатору. В квартусе у меня пути идут относительно директории где лежит файл проекта квартуса Попробовал. Убрал знаки "=" и ";" в файле параметров и в модуле прописал полный путь до него. Появилась синтаксическая ошибка на вот такую запись: wire [`RxByte_Cnt_Width_ext:0] RxByte_Cnt_o; ERROR:HDLCompilers:26 - "../LIB/Ethernet/Verilog/Eth_ext_pkt.v" line 89 unexpected token: 'integer' ERROR:HDLCompilers:26 - "../LIB/Ethernet/Verilog/Eth_ext_pkt.v" line 89 expecting ':', found ')' И данная параметризация нужна для синтеза, если это важно. 13 hours ago, andrew_b said: Вы сами попробовали что-нибудь сделать? У вас не получилось? Какие ошибки выдаёт синтезатор? Да, пробовал. Да, не получилось - иначе бы и не просил помощи! Одни и те же на разные подключаемые модули: Например, на вот такой модуль: Eth_Rx_DDR: entity work.Rx_DDR_Buff port map ( ... ); Выдает вот такую ошибку: ERROR:HDLParsers:709 - ".../Main.vhd" Line 593. Rx_DDR_Buff is not an entity name И я не очень понимаю, в виде чего данный модуль добавлять в проект. Изменено 22 сентября, 2022 пользователем EpLeon Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 22 сентября, 2022 Опубликовано 22 сентября, 2022 · Жалоба 2 hours ago, EpLeon said: Да, пробовал. Да, не получилось С этого и надо начитать: делал то и это, получил то и это. В ваших же интересах предоставить максимум информации сразу, не дожидаясь дополнительных вопросов. Рекомендую прочитать HOWTO :: Как правильно задавать вопросы. 2 hours ago, EpLeon said: Rx_DDR_Buff is not an entity name Да, direct instantiation не работает. Используйте дедовский способ с предварительной декларацией компонента. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EpLeon 0 22 сентября, 2022 Опубликовано 22 сентября, 2022 · Жалоба 10 minutes ago, andrew_b said: С этого и надо начитать: делал то-то и то-то, получил то-то и то-то. В ваших же интересах предоставить максимум информации сразу, не дожидаясь дополнительных вопросов. Рекомендую прочитать HOWTO :: Как правильно задавать вопросы. Ну, честно говоря... на мой взгляд это как-то очевидно, что надо сначала попробовать самому разобраться (примеры в инете, книги и поэкспериментировать с кодом), а потом уже задавать вопросы и приставать к людям. Поэтому и не писал, что это все проделал. 10 minutes ago, andrew_b said: Да, direct instantiation не работает. Используйте дедовский способ с предварительной декларацией компонента. Не очень понял. Я не так давно начал писать на Verilog-е. До этого писал на AHDL. Не могли бы более детально объяснить с примером? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Skryppy 1 29 сентября, 2022 Опубликовано 29 сентября, 2022 · Жалоба Вот пример использования package verilog/package Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться