将FPGA(Nios软件部分)程序放在SDRAM里面跑

加了Nios并在上面跑uCOS的时候,nios里面的onchip memory已经无法满足程序的规模了。即使是EP4CE6的,单跑一个带uCOS的nios cpu也不够放。所以必须放到板上的SDRAM(内存)里面去跑。


1. 先创建一个Nios核。

注意new_sdram_controller的最后一个Conduit的s需要双击输出端口。

将FPGA(Nios软件部分)程序放在SDRAM里面跑_第1张图片


2. 在设置sdram_controller的时候注意要与开发板上的sdram型号对应

我的是hy57v641620,配置如图:

将FPGA(Nios软件部分)程序放在SDRAM里面跑_第2张图片

3. 当然CPU(NIos Processor)里面的Reset Vector 和 Exception Vector不能再是Onchip Memory而应该是new_sdram_controller。

将FPGA(Nios软件部分)程序放在SDRAM里面跑_第3张图片


4. 其他什么自动分配基地址,中断等等都一样。然后生成。


5. 回到硬核添加Nios

将FPGA(Nios软件部分)程序放在SDRAM里面跑_第4张图片


这里注意:

(1)sdram_controller的s引出的管脚必须严格对应开发板sdram型号的分配

(2)SDRAM_controller的时钟虽然在nios内部设置的时候从clk连接到了controller上面,但是sdram本身的时钟必须与Nios系统的时钟分开。

具体操作是:在硬核中加一个PLL,input是板上的晶振,output用两个c0,c1。c0不倍频接给Nios,c1需要向右边移动63相位。

c1配置如图:


将FPGA(Nios软件部分)程序放在SDRAM里面跑_第5张图片


硬件连接如图:

将FPGA(Nios软件部分)程序放在SDRAM里面跑_第6张图片


6. 软核部分

(1)打开eclipse建立带bsp的工程blahblah。。。

建立hello microOS模板工程

(2)edit bsp

common里面有这几个地方修改:

将FPGA(Nios软件部分)程序放在SDRAM里面跑_第7张图片


Advanced里面设置成这样:


将FPGA(Nios软件部分)程序放在SDRAM里面跑_第8张图片

(3)build and run

如果build过了,run到一半出现无法下载elf的错误,多半是管脚sdram_controller的s甩出来的那一堆管脚没有分配正确导致;另外就是SDRAM本身没有分配单独的一个时钟信号。







你可能感兴趣的:(Embedded,Systmes,QUARTUS)