设计了个VGA控制IP,由一个FIFO、一个VGA
时序控制器、一个主端口、一个从端口组成。 在没有CPU的情况下能从
SDRAM中读出数据正常显示,加了CPU后因为CPU也要用SD
RAM,产生了冲突。
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。望
高手指点迷津。
此帖出自
小平头技术问答
一周热门 更多>