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

Использование модуля в модуле. Verilog

Форумчане привет.

Я заранее хочу извиниться за такой глупый вопрос. Я и название темы придумал, как мог, потому что не могу описать правильно, путаюсь в понятиях

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 со своей памятью.

Заранее спасибо.

Изменено пользователем new123

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


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

Подключайте в двух разных вызываемых модулях разные инстансы FIFO и проблем не будет.

У Вас FIFO модуль создается один раз в проекте, дальше Вы работаете с его инстансами.

Изменено пользователем Nieve

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


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

8 minutes ago, Nieve said:

У Вас FIFO модуль создается один раз в проекте, дальше Вы работаете с его инстансами.

то есть по факту я работу из двух мест с одним и тем же fifo? 

8 minutes ago, Nieve said:

одключайте в двух разных вызываемых модулях разные инстансы FIFO

у вас случайно нет какого нибудь Verilog трюка, как это сделать? У меня написан один модуль. Как бы в нем указать, с каким FIFO кому работать. Через параметры же никак указатель на него не прокинуть. Если только написать два разных модуля

Изменено пользователем new123

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


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

Нет. Вы будете работать с его инстансом. Например у вас в схеме есть два порта UART, описанные одним Verilog файлом. Обращаясь к первому порту, Вы будете вызывать его например так:

uart uart_inst_1 (...);

Ко вторумо так:

uart uart_inst_2(...);

Тоесть два разных порта UART, но чтобы не добавлять в проект 2 одинаковых UART модуля используют инстансы. С FIFO все тоже самое.

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


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

Ааа, я понял. FIFO сгенерить 1 раз. Но подключить его как два разных instance. Получается мне надо module_a прокопировать файл. В одном внутри подключить FIFO как одну instance, в другом подключить FIFO как другую instance

Я думал Квартус сам все разрулит.

Изменено пользователем new123

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


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

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 сына... Фамилия одна, а имена - разные... А вот если к файлу фамилии добавите "параметры", тогда получите точно как в сказке: старший ... был детина, средний был и так и сяк, младший вовсе... Ну и так далее.

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


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

Добавлю немного в тему вопроса. Иногда бывают случаи, когда разные инстансы модуля после синтеза используют одни и те же низкоуровневые примитивы (так, например, часто бывает с блочной памятью). Из-за этого может возникатиь путаница в голове, однако это не баг, а особенности синтеза.

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


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

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

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

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

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

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

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

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

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

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