|
|
  |
Кошмар с внутреней памятью., Квартус не хочет нормально распределять. |
|
|
|
Dec 8 2007, 15:04
|
Местный
  
Группа: Свой
Сообщений: 215
Регистрация: 10-04-07
Пользователь №: 26 929

|
Вообщем такая проблема - есть плис ACEX EP1K 50 QC208. У нее 40960 бит внутреней памяти, распределенные по 10-ти EAB (Embedded array block), каждый из которых соответственно равен 4096бит. Ширина шины данных может состовлять 2,4,8,16 бит. Так вот, мне надо получить три независимых блока памяти 1536x8бит (=12288 бит). То есть по 3 EAB на каждый блок. Для этого в квартусе использую altdpram мегафункцию, в которой и указываю 12288бит. А он, сука,  почему то считает, что раз > 8192бит, то надо сразу брать 16384( 4шт EAB). При этом у него выходит 12 EAB на весь проект, и естественно он ругается что ему не хватает ресурсов. Вообщем конечно можно выкрутится, использовать один мегаблок 40960, и читать из него по очереди, но хотелось бы все сделать красиво и без геморроя. Кто что посоветует по этому поводу?
|
|
|
|
|
Dec 8 2007, 17:40
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(Amper25 @ Dec 8 2007, 18:04)  Вообщем такая проблема - есть плис ACEX EP1K 50 QC208. У нее 40960 бит внутреней памяти, распределенные по 10-ти EAB (Embedded array block), каждый из которых соответственно равен 4096бит. Ширина шины данных может состовлять 2,4,8,16 бит. Так вот, мне надо получить три независимых блока памяти 1536x8бит (=12288 бит). То есть по 3 EAB на каждый блок. Для этого в квартусе использую altdpram мегафункцию, в которой и указываю 12288бит. А он, сука,  почему то считает, что раз > 8192бит, то надо сразу брать 16384( 4шт EAB). При этом у него выходит 12 EAB на весь проект, и естественно он ругается что ему не хватает ресурсов. Вообщем конечно можно выкрутится, использовать один мегаблок 40960, и читать из него по очереди, но хотелось бы все сделать красиво и без геморроя. Кто что посоветует по этому поводу? Наверно Вы вольно обращаетесь с описанием. Блок фиксирован. Можно наращивать разрядность блока. Как я понял, Вам подходит блок (2048x2)x4. Это и есть 4 EAB
|
|
|
|
|
Dec 10 2007, 08:27
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Цитата(Amper25 @ Dec 8 2007, 18:04)  Вообщем такая проблема - есть плис ACEX EP1K 50 QC208. У нее 40960 бит внутреней памяти, распределенные по 10-ти EAB (Embedded array block), каждый из которых соответственно равен 4096бит. Ширина шины данных может состовлять 2,4,8,16 бит. Так вот, мне надо получить три независимых блока памяти 1536x8бит (=12288 бит). То есть по 3 EAB на каждый блок. Для этого в квартусе использую altdpram мегафункцию, в которой и указываю 12288бит. А он, сука,  почему то считает, что раз > 8192бит, то надо сразу брать 16384( 4шт EAB). При этом у него выходит 12 EAB на весь проект, и естественно он ругается что ему не хватает ресурсов. Вообщем конечно можно выкрутится, использовать один мегаблок 40960, и читать из него по очереди, но хотелось бы все сделать красиво и без геморроя. Кто что посоветует по этому поводу? Не знаю, применимо ли это конкретно к ACEX, но в целом надо смотреть на параметр MAXIMUM_DEPTH от altsyncram. В вашем конкретном случае его надо поставить равным 512.
|
|
|
|
|
Dec 10 2007, 15:36
|
Местный
  
Группа: Свой
Сообщений: 215
Регистрация: 10-04-07
Пользователь №: 26 929

|
Цитата Не знаю, применимо ли это конкретно к ACEX, но в целом надо смотреть на параметр MAXIMUM_DEPTH от altsyncram. В вашем конкретном случае его надо поставить равным 512. Для ACEX нет мегафункции altsyncram. Вообщем сделал свой элемент с 3-мя блоками по 512байт + мультиплексор, демультиплексор. У меня тут еще такой волпрос, касательно VHDL. Есть ли такой тип данных, нечто среднее между bit_vector и integer. Чтобы можно было и складывать и обращатся побитово?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|