2012-04-30 5 views
1

Я пытаюсь построить блок RAM в Verilog со следующей конфигурацией:Xilinx Правда двухпортовый RAM с различными пропорциями на два порта

  • порт A: 128 бит в ширину, с clk_a, видит RAM блок как 128 битные разы 128 линий глубоких
  • Порт B: 32 бита ширина с clk_b, видят блок ОЗУ в 32 битные разы 512 линий глубоких

не беспокойтесь о READ-WRITE сериализации и mutexing, я буду заботясь о нем со слоем выше этого.

В основном, код, который генерирует 128 бит раз 128 строк выглядит следующим образом:

reg [DATA_WIDTH-1:0]     mem [0:2**ADDRESS_WIDTH-1]; 

Теперь, если я хочу, чтобы это выглядело как 32-битовые раз 512 глубок, как я реорганизовать эту память, чтобы выглядеть по-разному (вроде как переделать в C)? Я понимаю, что я мог бы сделать это с помощью 32-битного слова (-ов), но я пытаюсь понять, есть ли более чистый способ достичь этого.

Дайте мне знать, что вы думаете?

RRS

Исправление: Я имею в виду Xilinx Брэм (Брамс косяк быть 512 глубиной). Но это по существу блок памяти с логикой клея, объединяющей несколько BRAM. Спасибо, что указали !!

+0

Вы понимаете, что Xilinx BRAM не может быть меньше 512 слов в глубину? Другими словами, для 128-битной ОЗУ требуется, по крайней мере, ceil (128/36) = 4 BRAM. –

+0

Я называю это Xilinx BRAM (но это, по сути, предполагаемый блок памяти). Я бы позволил XST определить логику клеев. My Bad с определениями :-( – boffin

+0

Не беспокойтесь, я не пытался исправить ваши определения! Я просто указывал, что вы не можете магически получить RAM 128x128 в том же ресурсном месте, что и 32x512. –

ответ

2

Я решил это так:

В ISE, я смог найти «Язык шаблонов» в одном из меню, которое имеет реальные примеры кода. Существует один с «File I/O», который отлично работает.

Вы также можете создать оберточный модуль вокруг двухпортового ОЗУ, который изменит ширину данных на другой стороне. На меньшем порте ширины данных (т. Е. Больше адресных строк) вы можете использовать младшие адресные биты в качестве системы выбора слов, позволяющей записывать часть строки памяти. Это правильно синтезируется для меня (проверьте свой инструмент синтеза).