摘 要: 在闡述了嵌入式地形三維顯示系統的透視投影變換算法的基礎上,著重論述了基于FPGA設計實現透視投影變換算法的方法,并在XILINX公司的SPARTAN XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E上實現了本算法的基本功能。實驗數據表明該硬件算法系統具有實時性高和時間開銷低等優點。
關鍵詞: FPGA;透視投影變換;時間開銷
大規模地形繪制技術一直是國內外虛擬現實領域的研究熱點,被廣泛應用于戰場仿真、飛行模擬、電子地圖和地形漫游等方面。目前基于PC平臺上的地理信息系統技術已比較成熟,廣泛應用的有美國的MapInfo和ArcInfo,國內慧圖公司TopMap和中國地質大學的MapGIS等。而隨著嵌入式系統的廣泛應用,三維地理信息系統小型化已成為新的研究方向。相比之下,國內嵌入式地形三維的GIS應用系統目前還比較少。
本文在研究地形三維顯示算法的基礎上,設計了一個面向嵌入式系統的透視投影變換算法模塊,實現基于FPGA上的算法加速,極大提高了嵌入式系統下的數據處理速度。
1 透視投影變換的原理及算法
在實現地形三維建模過程中,一個重要步驟就是通過透視投影變換實現世界坐標(project coordinates)向像(視)點坐標(view coordinates)的過渡。世界坐標中的各類地形數據參數正是通過透視投影變換,轉換為視域坐標內相應點的二維數據,進而加以渲染形成二維坐標系統上的三維立體地形圖像。
1.1 透視投影變換的坐標轉換
所謂透視投影變換,就是世界坐標到視點坐標的空間轉換步驟,其作用是將x和y坐標映射到投影平面的正確位置上,同時保持深度信息。如圖1所示,S為視點(觀察者),地面上一點A在像平面上的映射點為α。o-xy為像平面坐標系,用以表示像點在像平面的位置。其坐標原點定義為像點o;S-xyz為像空間坐標系,它是用來表示像點在像空間的位置的右手空間直角坐標系統。OT-XTYTZT為地面輔助坐標系,是一種過渡性的地面坐標系統。透視投影變換算法最終實現地面坐標OT-XTYTZT上的點到像平面坐標o-xy的空間映射。
1.2 投影變換數學算法實現
在透視投影過程中,需要定量描述視點的姿態和空間位置,從而確定投影像片和地面之間的幾何關系。為了確定投影光束在地面輔助坐標系中的位置,需要有3個線元素和3個角元素,共需6個元素。其中3個線元素是投影中心S在地面輔助坐標系中的坐標(XS,YS,ZS),用來確定投影光束頂點在地面輔助坐標系中的空間位置;3個角元素用來確定投影光束在地面輔助坐標系中的姿態。為便于說明,在圖1左圖中引入θ-α-kv角元素系統,如右圖所示,兩圖的坐標定義一致。
根據視域范圍內地面點與像片映射點間的坐標關系,使用θ-α-kv角元素系統,將S-XYZ坐標系依次繞Z-X-Y軸相繼旋轉θ-α-kv角之后,與視點的像空間坐標系S-xyz重合。通過空間坐標的旋轉轉換,可以推出如下的坐標轉換公式:
假定:視點S在地輔坐標系OT-XTYTZT中的坐標為(XS,YS,ZS),地面點A在地輔坐標系OT-XTYTZT中的坐標為(XM,YM,ZM),像點α在像空間坐標系S-xyz中的坐標為(x,y,z);其中z=-f。
地面點A在坐標系S-XYZ中的坐標為(XM-XS,YM-YS,ZM-ZS)。經過推導,得到整理后的投影變換公式:
最后進行平面相似變換,變換為屏幕坐標(xc,yc),其轉換方法如下(定義:屏幕顯示分辨率范圍是ROW_MAX*COL_MAX):
經過取整以后即為屏幕上顯示的二維坐標。
2 FPGA硬件電路組成
系統硬件包括片內的SRAM數據緩存區,邏輯控制單元和透視投影變換算法模塊三部分,其核心設計為透視投影算法部分。算法硬件加速系統實現結構框架如圖2所示。
該算法加速模塊對輸入的地形三維數據進行相應的透視投影變換運算。它的功能正是基于FPGA的并行處理機制和流水線的工作模式來實現三維數據的高速空間坐標轉換。系統包括兩組片內的SRAM,分別位于數據輸入、輸出端及該系統的核心算法單元-透視投影變換運算,以及相應的時鐘、邏輯控制模塊。
嵌入式處理器通過片外的FIFO芯片實現對硬件加速模塊的數據輸入和讀取。FPGA數據處理模塊的通信接口則采用乒乓機制協調片內的SRAM緩存區資源與片外FIFO的數據交互。即FPGA核心算法模塊讀取1#數據時,FIFO寫2#數據;反之,算法模塊讀取2#數據時,FIFO寫1#數據。這種交互模式提高了系統對地形數據的采集、透視投影變換運算和二維數據的實時反饋速度。
2.1 透視投影變換算法的實現結構
透視投影變換最終實現的是世界坐標上的高程數據點到視野屏幕坐標的二維空間轉換。地形三維的建模過程正是通過頻繁調度該算法來實現龐大數據量的空間轉換,因此存在很高的時間開銷。
系統正是利用流水線設計來實現多層數據邏輯運算的并行處理,從而達到數據的高速緩存和邏輯控制,并最終縮短三維數據的處理時間。針對FPGA硬件邏輯特點,該算法模塊在對數據精度進行估計以后,通過左移8位來實現定點運算,大大加速了原算法。內部的邏輯設計主要涉及運算器的運用及時序和觸發信號的控制。下面詳細介紹算法內部各個邏輯單元的實現。
2.1.1 向片內SRAM寫數據的電路
首先說明算法數據接口的SRAM緩沖區,即每組片外的FIFO對應一個片內的SRAM緩存區。本文以數據輸入段為例說明該接口設計對數據的存儲和讀取過程,在FPGA內部電路圖截取其接口的一組SRAM來進行描述,如圖3所示。
圖中的din[15:0]表示輸入端FIFO緩存的16位數據線,只要FIFO的非空信號(int_ram)有效,該接口電路就不斷從FIFO中讀取地形數據,cs為來自模塊的全局時鐘信號。通過地址發生器ADDR_1、ADDR_2、ADDR_3產生存儲地址,FDE寄存器分別接收來自FIFO的地形數據。在數據寫入SRAM的同時,啟動數據個數計數器(COUNT),在接收完一個完整單點的三維數據(X、Y、Z坐標)后,啟動計數器(COUNT)的第二寄存區使能信號CE,用于FDEII接收門限(Gate)的開啟,緩存來自FDEI的數據。在延遲半個cs時鐘周期后,COUNT計數單元輸出第三寄存區FDEIII的讀取信號rd,該信號用來保證算法讀取穩定和準確的三維坐標數據。本文設計3個階段的寄存區分別實現的是:FDEI用于存儲FIFO輸出的16位串行數據;FDEII用于核心算法的3個并行數據的輸出;而FDEIII則實現三維數據的穩定讀取,并將可靠的地形數據輸入下一核心算法模塊。圖4為該電路的時序仿真圖。
2.1.2 透視投影變換核心算法電路
通過對透視投影變換原理的分析可知,坐標轉換過程中涉及空間坐標旋轉,數學運算上表現為矩陣的乘積。但由于地形三維數據空間旋轉的復雜性,實現過程中不僅涉及大量的矩陣運算,而且要考慮空間轉換的方向性,因此在電路的算法設計上必須采取一些輔助的方法來保證數據流的正確。數據符號矯正電路、數據位截取電路和時序控制電路是本系統的主要輔助手段,在很大程度上保證了數據處理的準確和高速。
(1)運算器電路設計
由數據有效位(clk_en)啟動的運算模塊接收來自緩存區的數據。進入算法模塊的數據,總共進行3次空間坐標轉換,將來自世界坐標的三維數據旋轉至屏幕坐標的相應映射點。該運算單元主要涉及大量的乘法運算器,通過空間轉換系數CONST實現無符號乘法運算,同時輸出數據標志位const_int,多個乘法器可以并行處理。圖5右為設計的標志位產生電路,各個運算單元的標志位通過與門之后產生總的讀取信號int_all。這里使用一個讀取請求信號,其原因是多個讀取標志位會由于信號延遲問題發生沖突等情況,使讀數據混亂,不利于下一步數據的讀取存儲。
(2)數據符號位矯正電路
由于乘法器中采用無符號的邏輯運算,因此需要對乘法器輸出值進行邏輯加減后的數據結果進行符號位(T_a,T_c)的判斷,并通過并置符(&)輸出符號標志位(T_mula),對下一步除法器的輸出結果進行數據符號位的檢測并矯正,從而實現有符號數據的運算過程無符號化,更加適合FPGA的邏輯結構特點,提高硬件邏輯中的數據運算速率。圖6為矯正電路及其時序仿真圖。
(3)各運算單元的時序分配
流水線的設計特別適合高速的數據流操作。其最大特點是數據流在各個步驟的處理從時間上看是連續的,關鍵在各個步驟時序設計的合理安排,尤其對于復雜的混合邏輯運算的電路,時序安排不當,容易造成后級數據丟失或溢出。
圖7中的邏輯時序控制設計,在綜合片內的混合邏輯周期后,實現了算法中步驟的單周期運行,不僅滿足了流水線時鐘的有序分配,同時以最少周期實現單步驟的算法運算,極大地提高了整個系統的實時性。
3 仿真結果與說明
應用本系統的硬件實現算法,本文對同一區域的地形三維數據進行了數據誤差和時間損耗測試。
3.1 準確性分析
根據FPGA的硬件邏輯特點采取了浮點轉定點方法,在整個地形三維透視投影變換的運算中,其前后的結果數據誤差分析如圖8。
圖8(a)為提供測試的三維地形數據;圖8(b)為采用軟件設計實現的浮點型透視投影變換算法,X軸、Y軸的數據為空間轉換后各點對應的二維坐標;圖8(c)為采用VHDL編程在FPGA上實現的定點型透視投影變換算法;圖8(d)則是(b)、(c)兩圖各相應點的坐標數據誤差。從中可以得出:(1)即使在地形數據高程值大的區域,其精度誤差也不超過5個單位數值。平均精度誤差數據:X軸為1.7367,Y軸為2.2183。(2)通過增加平移仍可繼續縮小誤差值。
3.2 時間損耗分析
根據透視投影變換算法,測試了該算法運用軟件編程在ARM系統下的運行時間,并與采用VHDL編程在硬件架構下的算法消耗時間進行對比。測試環境:ARM處理器SAMSUNG S3C2410,主頻為203 MHz,DMA傳輸頻率101.4 MHz,FIFO讀寫時鐘頻率101.4 MHz,FPGA時鐘周期為101 MHz。對同一地形數據的時間測試參數如圖9。圖9(a)為在ARM系統下采用軟件編程運行該算法,調用次數為55 651時,耗時13.23 s,如采用本系統的運行數據,則需調用180 880次,耗時達到43 s;圖9(b)則是硬件架構下的算法時間損耗,調用55 651時,耗時6.1 ms,調用180 880次,只需19.8 ms。
實驗結果表明:采用基于FPGA硬件架構的透視投影變換算法,在損失數據部分精度的條件下,數據運行時間損耗大大縮減,這將有利于提高嵌入式地形三維顯示系統的實時性。
參考文獻
[1] 藍榮欽,李淑霞,劉陽,等.地理信息系統的發展現狀和趨勢[J].地理空間信息,2007,2(1):8-11.
[2] David F.Rogers著.計算機圖形學的算法基礎.石教英,彭群生譯.北京:機械工業出版社,2005.
[3] Xilinx.Using embedded multipliers in spartan-3 FPGAs.2005,3.
[4] Uwe Meyer-Baese著.數字信號處理的FPGA實現.劉凌譯.北京:清華大學出版社,2006.
[5] Xilinx.Using block RAM in spartan-3 generation FPGAs.2005,3.
[6] GOSLIN G.Using Xilinx FPGAs to design custom digital signal processing devices in proceeding of the DSP.Springer Berlin,2006.
[7] TREICHLER J,JOHNSON C,LARIMORE M.Theory and design of adaptive filters.Prentice Hall,2001.
[8] POLTMANN R.Conversion of the delayed LMS algorithm into the LMS algorithm.IEEE signal Processing letters,2005.