AVALON总线控制权,VGA,CPU共享SDRAM。

2019-03-25 10:39发布

设计了个VGA控制IP,由一个FIFO、一个VGA时序控制器、一个主端口、一个从端口组成。 在没有CPU的情况下能从SDRAM中读出数据正常显示,加了CPU后因为CPU也要用SDRAM,产生了冲突。

    SDRAM时钟:100MHz,速度略小于200MB/S。
    VGA时钟:50MHz,读32位FIFO时钟:25MHz。因为用两个字节(16bit)存放一个点的RGB值。速度略小于100MB/S。

    我想到的解决办法是:当FIFO快空时产生中断告诉CPU,让CPU等待(让出总线控制权),VGA控制器开始读SDRAM,总线将数据写入FIFO中。当FIFO快满时,CPU检测到标志改变,跳出中断函数,继续执行程序(获得总线控制权),同时VGA暂停读数据让出总线控制权,然后FIFO快空时……

    我已经实现的:当FIFO快空时,VGA端的主端口read_n有效,地址接着累加;当FIFO快满时,VGA主端口read_n无效,输出地址暂时为0。目前没有用中断。
   
    我想问的:具体怎么让出总线的控制权?是不是让read无效就行了?当我加入了CPU后程序没有任何反应,我觉得是SDRAM让CPU一直在等待,CPU被无限挂起。我就是想让VGA控制器与CPU共享一块SDRAM。望高手指点迷津。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
eeleader-mcu
2019-03-25 17:12
< / SOPC中的各模块通过Altera公司开发的Avalon总线互连。任何一个挂接在Avalon总线上的模块都必须符合Avalon总线规范,即包含特定的信号类型clk,reset,chipselect,write,writedata等,并满足一定建立保持时间和等待周期的读写模式。一个典型模块的Controller Core由硬件和驱动软件两部分构成。

一周热门 更多>