new123 0 12 июля, 2019 Опубликовано 12 июля, 2019 (изменено) · Жалоба Форумчане привет. Я заранее хочу извиниться за такой глупый вопрос. Я и название темы придумал, как мог, потому что не могу описать правильно, путаюсь в понятиях 1) Имею сгенерированный ip core, банальный ALTERA FIFO 2) Использую этот FIFO в одном из своих модулей. Вот так module module_a () ... tx_fifo tx ( .data (..), .rdclk (..), .rdreq (..), .wrclk (..), .wrreq (..), .q (..), .rdempty (..), .wrusedw (..) ); ... endmodule 3) В главном модуле проекта, подключаю module_a два раза с разными параметрами. Вроде правильно говорится, создаю две instance module main () ... module_a #( .PORT_NUMBER (2'd1) ) module_a_1 (); module_a #( .PORT_NUMBER (2'd2) ) module_a_2 (); ... endmodule 4) Как думаете, не может быть такого, что эти два модуля будут юзать один и тот же FIFO? Я изначально думал, что для каждого создатся отдельный FIFO со своей памятью. Заранее спасибо. Изменено 12 июля, 2019 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nieve 0 12 июля, 2019 Опубликовано 12 июля, 2019 (изменено) · Жалоба Подключайте в двух разных вызываемых модулях разные инстансы FIFO и проблем не будет. У Вас FIFO модуль создается один раз в проекте, дальше Вы работаете с его инстансами. Изменено 12 июля, 2019 пользователем Nieve Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 12 июля, 2019 Опубликовано 12 июля, 2019 (изменено) · Жалоба 8 minutes ago, Nieve said: У Вас FIFO модуль создается один раз в проекте, дальше Вы работаете с его инстансами. то есть по факту я работу из двух мест с одним и тем же fifo? 8 minutes ago, Nieve said: одключайте в двух разных вызываемых модулях разные инстансы FIFO у вас случайно нет какого нибудь Verilog трюка, как это сделать? У меня написан один модуль. Как бы в нем указать, с каким FIFO кому работать. Через параметры же никак указатель на него не прокинуть. Если только написать два разных модуля Изменено 12 июля, 2019 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nieve 0 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба Нет. Вы будете работать с его инстансом. Например у вас в схеме есть два порта UART, описанные одним Verilog файлом. Обращаясь к первому порту, Вы будете вызывать его например так: uart uart_inst_1 (...); Ко вторумо так: uart uart_inst_2(...); Тоесть два разных порта UART, но чтобы не добавлять в проект 2 одинаковых UART модуля используют инстансы. С FIFO все тоже самое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 12 июля, 2019 Опубликовано 12 июля, 2019 (изменено) · Жалоба Ааа, я понял. FIFO сгенерить 1 раз. Но подключить его как два разных instance. Получается мне надо module_a прокопировать файл. В одном внутри подключить FIFO как одну instance, в другом подключить FIFO как другую instance Я думал Квартус сам все разрулит. Изменено 12 июля, 2019 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба 48 минут назад, Nieve сказал: Нет. Вы будете работать с его инстансом. Например у вас в схеме есть два порта UART, описанные одним Verilog файлом. Обращаясь к первому порту, Вы будете вызывать его например так: Ко вторумо так: uart uart_inst_2(...); Тоесть два разных порта UART, но чтобы не добавлять в проект 2 одинаковых UART модуля используют инстансы. С FIFO все тоже самое. Добавлю... "Классовая теория социализма" - это Маркс "Классовая теория капитализма" - это Объектно-ориентированное программирование. Файл модуля FIFO - это как комплект чертежей на автомобиль. А вот "одну instance, в другом подключить FIFO как другую instance" - это как серийный номер автомобиля на конвейере при сборке. Или как гос-номер... Или еще вот так "uart uart_inst_1 (...);" - здесь первая часть - "uart" - это фамилия, а вторая часть - "uart_inst_1" - это имя... И как в сказке, когда у старика было 3 сына... Фамилия одна, а имена - разные... А вот если к файлу фамилии добавите "параметры", тогда получите точно как в сказке: старший ... был детина, средний был и так и сяк, младший вовсе... Ну и так далее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 17 июля, 2019 Опубликовано 17 июля, 2019 · Жалоба Добавлю немного в тему вопроса. Иногда бывают случаи, когда разные инстансы модуля после синтеза используют одни и те же низкоуровневые примитивы (так, например, часто бывает с блочной памятью). Из-за этого может возникатиь путаница в голове, однако это не баг, а особенности синтеза. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться