|
AVALON总线控制权,VGA,CPU共享SDRAM。
[复制链接]
设计了个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。望高手指点迷津。
|
|