-
Искал модель в сети по не незнанию даже простейшей СРАМ. А не фига. Модели от производителей есть. Но там ….. )
- - - Добавлено - - -
Уж извините. Не вникал в ваш частный случай. Могу оперировать ток шаблонами от Quartus II. Себе обычно говорю. Давай разбирайся до просветления)
- - - Добавлено - - -
Хотя конечно можно любую схему построить в ФПЖА при наличии времени и упорства. А что с ней потом делать. Пример реплика Z80. Добавил частоту (турбировал) и все развалилось.
-
:v2_dizzy_wall:
Это какой-то вынос мозга...
Инициализирую ROM .hex файлом, размер слова 8 бит. https://yadi.sk/i/T461wN8I3GcsQd. Все хорошо.
Делаю ROM на 16 (или 32) бита, инициализирую ROM .hex файлом, размер слова 16 (32) бит. https://yadi.sk/i/kUfjlF693GcsYs https://yadi.sk/i/ZER7m-Jy3GcsZd.
Мало того что Big Endian, так еще и левые данные появляются!!!:mad:
Столько кровушки отпило это глюкало...
У кого-нибудь получалось ROM 16/32 бит?
-
Попробуйте создать hex в intelhex формате.
-
LeoN65816, разрядность HEX файла должна совпадать с разрядностью эмулируемого ПЗУ.
-
vlad, HardWareMan, разумеется, само собой! ;)
Это проделывал ДОСовым bin2hex - https://yadi.sk/i/jLZhHCt-3GdauD, который делает интел формат и о разрядности он понятия не имеет...
Вот этим bin2hex создается просто hex-представление данных, ни заголовков, ни какой-либо служебки. Соответственно, кактус не открывает хексы после него...
srec_cat отсюда "проглатывает" входной бинарник и создает интелхекс - https://yadi.sk/i/qZurtDXe3Gdexk, хотя по умолчанию создает несъедобный для квартуса мотороловский кекс с S-записями. Кактус открывает его как 8-разрядный. Как 16(32)-разрядное слово открывает с теми же глюками - https://yadi.sk/i/phIwEK9X3GdgGj.
Тем же srec-cat создаю 16-разрядный интелхекс - https://yadi.sk/i/M6xK5P1P3Gdw4d. Однако, квартус его не "сглатывает" никак (8-, 16-, 32-)... - https://yadi.sk/i/nb3vNMri3Gdwcr :mad:
Им же создаю .mif, квартус "хавает".
Им же создаю 16-разрядный .mif - https://yadi.sk/i/iq-ccsTp3Ge3gk. Сам srec-cat, скотина, делает его big-endian... - https://yadi.sk/i/PLYN3WsP3GdyyY. Соответственно, квартус его тоже "хавает" - https://yadi.sk/i/7bgoFojg3GdzMd. Но! Big-endian, Карл! А нужно Little-endian.
Вот такой вот квест... :) Может быть кому-нибудь это поможет не наступать на такие же грабли...
И еще раз спрошу: кому-нибудь удавалось сделать инициализацию 16-разрядного ROM с Little-endian? Поделитесь опытом, пожалуйста.
-
мне кажется легче самому написать такую программку чем найти в интернетах )
-
Это не процессор, чтобы иметь endianess. Это ПЛИС. Если ты указал шину [15:0] то она и будет цельной и неделимой 16 бит. А уж порядок побайтного доступа ты можешь описать сам [15:8]/[7:0]. Что касается инициализации ПЗУ файлом я еще раз говорю: разрядность должна совпадать. Иначе будут непонятки.
-
LeoN65816, сам заметил эту странность с предзагрузкой hex файла. Работал с 8 битным ПЗУ. Quartus отчаянно ругается, но по факту втягивает или не втягивает нормально. Дальше разбираться не стал, есть дела поинтересней:) Для себя сделал заметку, делать hex файл в формате как у Grant Searle (самый простой без излишеств). Файл 16 бит (в строке 32 байта), если я правильно понял о разрядности 8/16 бит.
Ох уж эта эволюция hex формата начиная с 8 битных компов. Ведь в формате нет явного указания на разрядность данных. Просто последователь байт с указанием адреса посадки (в каждой строке).
-
OrionExt, именно. Вот, например, пошли PICи первые. А у них 12бит. Но HEX то для них есть, верно? А потом AVRки. И программатор корректно распознает. Ну а Кактус надо просто принять как данное. Ведь выбора то и нет.
-
Я может и не в тему. Но в своих проектах rom или автоматом делается из логики. Или из mif файла. Формат я подсмотрел, вроде все просто. И разрядности все указываются:
file: sine8x8.mif
-- Quartus II generated Memory Initialization File (.mif)
-- discretization : any Hz 8 bit not signed
WIDTH=8;
DEPTH=256;
ADDRESS_RADIX=UNS;
DATA_RADIX=UNS;
CONTENT BEGIN
0 : 127;
1 : 130;
2 : 133;
3 : 136;
4 : 139;
5 : 143;
6 : 146;
...вырезано
250 : 111;
251 : 115;
252 : 118;
253 : 121;
254 : 124;
255 : 127;
END;
Таким образом делал mif с синусом и подгружал. Все работало.