Замените двухпортовую ОЗУ двумя однопортовыми ОЗУ для процессора J1 Forth на ПЛИС Altera
Замечательный процессор J1 Forth ( исходный код Verilog) предназначен для работы на Xilinx FPGA. Я пытался перенести его на ПЛИС Altera Cyclone II.
У меня проблемы с настройкой мегафункции двухпортовой оперативной памяти Altera. Судя по коду Verilog, можно ли использовать две однопортовые ОЗУ вместо двухпортовой?
Реальный вопрос в том, изменяет ли J1 Forth свой собственный код во время работы? Если нет, то почему бы не разделить двухпортовую оперативную память на оперативную память кода (адресуемую {_pc}) и оперативную память данных (адресуемую _st0[15:1])?
1 ответ
В настоящее время компилятор, который создает код для J1 (вы должны были получить некоторый код Forth, работающий под Gforth), предполагает, что и данные, и код поступают из одного и того же пространства ОЗУ. Чтобы разделить код и данные (что вам нужно будет сделать, чтобы использовать отдельные банки ОЗУ для каждого), вам нужно будет изменить компилятор, чтобы поместить что-либо сделанное с помощью CREATE в ОЗУ данных.
Вам также придется изменить определение! и @ для получения из соответствующего банка оперативной памяти. И забудьте о реализации любого вида интерактивного приглашения, которое позволяет вам определять любые новые слова, потому что для этого потребуется либо запись в банк ОЗУ, содержащий код, либо возможность указать ПК на банк ОЗУ данных, что лишает цели наличия два банка оперативной памяти на первом месте.
В противном случае вам придется подключить какую-то логику, чтобы синхронизировать два банка ОЗУ.
J1 довольно тесно связан с идеей иметь двухпортовый банк оперативной памяти.