new123 0 Posted July 12, 2019 (edited) · Report post Форумчане привет. Я заранее хочу извиниться за такой глупый вопрос. Я и название темы придумал, как мог, потому что не могу описать правильно, путаюсь в понятиях 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 со своей памятью. Заранее спасибо. Edited July 12, 2019 by new123 Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Nieve 0 Posted July 12, 2019 (edited) · Report post Подключайте в двух разных вызываемых модулях разные инстансы FIFO и проблем не будет. У Вас FIFO модуль создается один раз в проекте, дальше Вы работаете с его инстансами. Edited July 12, 2019 by Nieve Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
new123 0 Posted July 12, 2019 (edited) · Report post 8 minutes ago, Nieve said: У Вас FIFO модуль создается один раз в проекте, дальше Вы работаете с его инстансами. то есть по факту я работу из двух мест с одним и тем же fifo? 8 minutes ago, Nieve said: одключайте в двух разных вызываемых модулях разные инстансы FIFO у вас случайно нет какого нибудь Verilog трюка, как это сделать? У меня написан один модуль. Как бы в нем указать, с каким FIFO кому работать. Через параметры же никак указатель на него не прокинуть. Если только написать два разных модуля Edited July 12, 2019 by new123 Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Nieve 0 Posted July 12, 2019 · Report post Нет. Вы будете работать с его инстансом. Например у вас в схеме есть два порта UART, описанные одним Verilog файлом. Обращаясь к первому порту, Вы будете вызывать его например так: uart uart_inst_1 (...); Ко вторумо так: uart uart_inst_2(...); Тоесть два разных порта UART, но чтобы не добавлять в проект 2 одинаковых UART модуля используют инстансы. С FIFO все тоже самое. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
new123 0 Posted July 12, 2019 (edited) · Report post Ааа, я понял. FIFO сгенерить 1 раз. Но подключить его как два разных instance. Получается мне надо module_a прокопировать файл. В одном внутри подключить FIFO как одну instance, в другом подключить FIFO как другую instance Я думал Квартус сам все разрулит. Edited July 12, 2019 by new123 Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
iosifk 0 Posted July 12, 2019 · Report post 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 сына... Фамилия одна, а имена - разные... А вот если к файлу фамилии добавите "параметры", тогда получите точно как в сказке: старший ... был детина, средний был и так и сяк, младший вовсе... Ну и так далее. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Bad0512 0 Posted July 17, 2019 · Report post Добавлю немного в тему вопроса. Иногда бывают случаи, когда разные инстансы модуля после синтеза используют одни и те же низкоуровневые примитивы (так, например, часто бывает с блочной памятью). Из-за этого может возникатиь путаница в голове, однако это не баг, а особенности синтеза. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...