Jump to content

    

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

Recommended Posts

new123

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

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

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

Nieve

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

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

Edited by Nieve

Share this post


Link to post
Share on other sites

new123
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

Nieve

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

uart uart_inst_1 (...);

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

uart uart_inst_2(...);

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

Share this post


Link to post
Share on other sites

new123

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

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

Edited by new123

Share this post


Link to post
Share on other sites

iosifk
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

Bad0512

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.