fingertouch 2 30 января, 2023 Опубликовано 30 января, 2023 · Жалоба Хочу предупредить любителей (таких как я, например) ставить элементы соответствующими примитивами, а не использовать IP Core Generator. В даташите на говиновскую память (в доступной мне версии UG285-1.3.4E, 11/01/2022 по крайней мере) использование Byte Enable нигде явно не оговорено. Лишь однажды, в режиме SDPB, когда порт А используется только для записи, byte_en появляется в адресе в инстансе примитива. Больше никаких упоминаний. В prim_sim.v (когда уже приходится туда лезть) мы увидим, что в любом режиме с шириной данных больше или равной 8 битам по порту записи, младшие биты адреса используются как Byte Enable соответственно количеству байтов. IP Core Generator сам подставляет в нужные биты перманентные единицы. Надеюсь, сэкономлю кому-нибудь время, которое сам безвозвратно потратил. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 31 января, 2023 Опубликовано 31 января, 2023 · Жалоба Зачем генерить память КореГеном, если она прекрасно описывается в RTL? Или у Говина с этим проблемы? Или это какая-то хитро работающая память? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 31 января, 2023 Опубликовано 31 января, 2023 · Жалоба On 1/30/2023 at 1:02 PM, fingertouch said: Хочу предупредить любителей А в чем предупреждение ? В чем кроется опасность ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fingertouch 2 1 февраля, 2023 Опубликовано 1 февраля, 2023 · Жалоба 19 часов назад, dimka76 сказал: А в чем предупреждение ? В чем кроется опасность ? Так вроде же подробно рассказал... Опасность не заметить, что существует byte enable, который в документации не описан. Если его не заметить - в память ничего записываться не будет. Например, хотите вы поставить Dual Port, идёте в даташит, вытаскиваете оттуда инстанс (допустим, как и приведено в даташите, для 8-битной ширины шины данных) в виде Спойлер DPB bram_dpb_0 ( .DOA({doa[15:8],doa[7:0]}), .DOB({doa[15:8],dob[7:0]}), .CLKA(clka), .OCEA(ocea), .CEA(cea), .RESETA(reseta), .WREA(wrea), .CLKB(clkb), .OCEB(oceb), .CEB(ceb), .RESETB(resetb), .WREB(wreb), .BLKSELA({3'b000}), .BLKSELB({3'b000}), .ADA({ada[10:0],3'b000}), .DIA({{8{1'b0}},dia[7:0]}) .ADB({adb[10:0],3'b000}), .DIB({{8{1'b0}},dib[7:0]}) ); И видите там нули в младших битах адреса. Повторяете всё по чертежу. И какое-то время не можете отдуплить, почему из памяти читается какая-то фигня. Потом понимаете, что фигня - инициализационный массив. Ищите ошибку в автомате генерации адресов. Смотрите сигналы внутри примитива. А на самом деле при записи с соответствующего порта просто в младший бит адреса нужно было подсунуть единицу. 22 часа назад, andrew_b сказал: Зачем генерить память КореГеном, если она прекрасно описывается в RTL? Или у Говина с этим проблемы? Или это какая-то хитро работающая память? Честно говоря, я вообще не люблю кореген. Не только в отношении памяти. Тем более, что в говине я ещё ни разу не видел, чтобы он создавал какой-то хитросделанный код, отличающийся от простенького враппера с соответствующими настройками. Для тех, кому лень разбираться с настройками самостоятельно. Однако, как показала практика, отсутствие нормальной документации у говина приходится восполнять в том числе и сравнением с корегеновскими поделками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 1 февраля, 2023 Опубликовано 1 февраля, 2023 · Жалоба 1 hour ago, fingertouch said: Честно говоря, я вообще не люблю кореген. Не только в отношении памяти. Тем более, что в говине я ещё ни разу не видел, чтобы он создавал какой-то хитросделанный код, отличающийся от простенького враппера с соответствующими настройками. Для тех, кому лень разбираться с настройками самостоятельно. Однако, как показала практика, отсутствие нормальной документации у говина приходится восполнять в том числе и сравнением с корегеновскими поделками. Много слов ни о чём. Вы пытались описать нужную вам память в RTL? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fingertouch 2 1 февраля, 2023 Опубликовано 1 февраля, 2023 · Жалоба 22 минуты назад, andrew_b сказал: Много слов ни о чём. Вы пытались описать нужную вам память в RTL? Нет. И пробовать, как она отсинтезируется, не интересно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться