Я пытаюсь построить блок 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. Спасибо, что указали !!
Вы понимаете, что Xilinx BRAM не может быть меньше 512 слов в глубину? Другими словами, для 128-битной ОЗУ требуется, по крайней мере, ceil (128/36) = 4 BRAM. –
Я называю это Xilinx BRAM (но это, по сути, предполагаемый блок памяти). Я бы позволил XST определить логику клеев. My Bad с определениями :-( – boffin
Не беспокойтесь, я не пытался исправить ваши определения! Я просто указывал, что вы не можете магически получить RAM 128x128 в том же ресурсном месте, что и 32x512. –