欢迎分享,转载请注明来源:内存溢出
这个问题,你实际已经问到CPU的工作原理了。首先你要了解单片机的内核--CPU的逻辑原理。给单片机定义的变量的确也是存储在SDRAM(多数是SRAM)中的, *** 作时是这样的:首先,CPU用固定的时序到指令寄存器(Flash或ROM)中读取指令,发现有一条指令说:来,我这有个数,呆会要用,帮我分配个地方,这个地方编译器已经帮我定好了。好,CPU就按指令要求的把这个地方打扫干净(清零),这个过程就是CPU写SDRAM。完了CPU每执行下面的指令,如果指令要 *** 作这个数,它都会读写一次SDRAM中的那个地址。好,说到这里,你大概知道我的意思了吧?实际你在FPGA中定义的reg,相当于是CPU的特殊功能寄存器,是必须占用资源的。要完成你的想法,你要写一个CPU。最简单的,你在FPGA上挂个Flash,和一个SDRAM,Flash里面是你定义的变量在SDRAM中的地址(看清这句话),于是Flash有多少个存储单元,你就可以定义多少个变量了。在FPGA里定义两个reg:POINTER和ACC,只要两个。资源够少吧?用FLASH控制器读FLASH得到一个数据,存储到POINTER,以POINTER为地址,读取SDRAM,得到的数据放到ACC中,一顿加减乘除后,再给它存储到SDRAM中。用这样的方法你可以拥有和 *** 作无数个变量,而只费两个reg。完成这个,其实你就实现了一个最简单的CPU。先例化一个sdram controller,再打个testbench,然后再build image,再上板测试。这可能是比较快的方式了。最好要对sdram的读写时序比较熟悉,然后例化的controller才能比较靠谱,如果能搞到sdram的bfm模型,那可能更好。
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
微信公众号自动答题软件,微信公众号在线答题
上一篇
2023-05-17
微信小程序的有哪些限制?
下一篇
2023-05-17
评论列表(0条)