产生VGA信号,对于8位、16位MCU来说是一个不小的负担,出于实用的考虑,我有一个提法。
1)采用CPLD来产生VGA时序,对于MCU很难的事,用CPLD只需要少量逻辑单元就可以搞定。
2)VGA控制器与MCU之间的接口尽量简化,比如作到这种程度:在MCU看来VGA控制器就像一片SRAM,写VGA显示器就像写SRAM那么简单。
3)VGA控制器的实现方式:
a)CPLD需要有一个外部时钟,由CPLD独立产生VGA时序。(可以考虑硬件清屏,关闭输出等附加功能)
b)有两块SRAM作为数据缓冲器,当一个块SRAM作为VGA显示屏数据源时,另一个块SRAM负责接收MCU的数据。接收MCU数据的SRAM写满一屏之后,两块SRAM交换总线,原来显示缓冲SRAM变化MCU数据SRAM,而MCU数据SRAM变成显示缓冲SRAM。
c)两块SRAM之间的ping-pong切换逻辑可以利用CPLD逻辑实现。
4)如果步骤3的实现方法成本高的,可以考虑分时复用方式,只采用一块SRAM,由一个状态机控制SRAM,在某一时刻MCU可以读写,在另一个时刻VGA控制器可以读。
[ 本帖最后由 kata 于 2009-10-29 23:28 编辑 ] |