精彩的J1 Forth CPU(Verilog source code)用于Xilinx FPGA。我试图将它移植到Altera Cyclone II FPGA。
我很难让Altera双端口RAM宏功能正常工作。从Verilog代码来看,我可以使用两个单端口RAM,而不是双端口RAM吗?
真正的问题是,J1 Forth在运行时是否修改了自己的代码?如果没有,为什么不将双端口RAM分成代码RAM(由{_pc}寻址)和数据RAM(由_st0 [15:1]寻址)?
答案 0 :(得分:0)
现在,为J1生成代码的编译器(你应该得到一些在Gforth下运行的Forth代码)假设数据和代码都来自同一个RAM空间。为了分离代码和数据(为了对每个代码和数据使用单独的RAM库,你必须这样做),你必须修改编译器,把用CREATE完成的任何东西放到数据RAM中。
您还必须更改定义!和@从相应的RAM库中取出。并且忘记实现任何类型的交互式提示,允许您定义任何新单词,因为这需要写入包含代码的RAM存储区,或者能够将PC指向数据RAM存储区,从而无法实现首先是两个RAM库。
否则,您必须连接某种逻辑以保持两个RAM存储区同步。
J1与拥有双端口RAM库的想法紧密相关。