Jump to content

    

Использование модуля в модуле. 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 со своей памятью.

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

Edited by new123

Share this post


Link to post
Share on other sites

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

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

Edited by Nieve

Share this post


Link to post
Share on other sites
8 minutes ago, Nieve said:

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

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

8 minutes ago, Nieve said:

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

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

Edited by new123

Share this post


Link to post
Share on other sites

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

uart uart_inst_1 (...);

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

uart uart_inst_2(...);

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

Share this post


Link to post
Share on other sites

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

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

Edited by new123

Share this post


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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this