基于FPGA的一种高速图形帧存设计
Entity sel_gen is
Port(clk : in std_logic;
Rst : in std_logic;
Vsync : in std_logic;
Sel :out std_logic;
Clear : out std_logic;
end sel_gen
architecture rtl_sel_gen of sel_gen is
signal clken : std_logic;
signal cleartemp : std_logic;
signal inputrega : std_logic;
signal inputregb : std_logic ;
signal qn : std_logic_vector(1 downto 0);
signal seltemp : std_logic;
begin
process(rst,vsync)
begin
if rst'event and rst='0' then
cleartemp ='1'
end if;
if(vsync='0')then
cleartemp ='0';
end if;
end process;
clear=cleartemp;
process(clk)
begin
if clk'event and clk='1'then
inputregb = inputrega;
inputrega = not vsync;
end if;
end process;
clken = not inputregb and inputrega;
process (clk,rst)
begin
if (rst-'1') then
qn = (others = >'0');
elsif clk'event and clk = '1' then
if clken='1' then
if qn = 3 then
qn = (others =>'0');
else
qn =qn +1;
end if;
end if;
end if;
seltemp =qn(1);
end process;
sel = seltemp;
end rtl sel gen;
3 时序分析
要使高速帧存能正常工作,必须满足一定的时延要求。AMLCD是在像素时钟的下降沿将数据锁存,从像素时钟的上升沿到正确的RGB图形数据出现在AMLCD的数据总线上,之间的延时T必须小于25ns(像素时钟周期为50ns,半周期为25ns),系统才能正常工作,如图6所示。图中的DLL(Delay-Locked Loop)为SpartanII芯片内置的数字锁相环,Clk_top(40MHz)经DLL二分频后得20MHz像素时钟。20MHz时钟一路作为系统工作时钟为FPGA地址计数器提供计数脉冲,一路作为像素时钟直接送至AMLCD。从图6可以看出,延时T包括如下几个延时:T1为Clk_top到帧存SRAM地址总线上地址的改变所需的延时(总线上各个信号的延时是不同的,T1为其中最大值);T2为帧存SRAM从地址改变到有效的数据出现在数据总线上所需的延时;T3为FPGA读帧存数据总线上的数据到输出至AMLCD所需的延时;T4为Clk_top经DLL产生像素时钟直接输出至AMLCD所需的延时。可以看出延时T=T1+T2+T3-T4。系统中的帧存控制器由Xilinx公司的SparatnII 芯片XC2S50-6实现,经过FPGA Express3.7综合和Xilinx公司的ISE4.2I软件布局布线。经分析,布线后的延时:T1=10.994ns、T3=10.691ns、T4=7.784ns,T2 由IS61LV5128芯片的时间参数决定,T2≤10ns,从而T≤23.901ns25ns,满足系统的时序要求。一般开发工具所得出的时序报告是系统最坏情况下的延时,实际系统中的延时将小于仿真时所得出的数据。

采用高速SRAM存储器作为图形帧存,用FPGA设计帧存控制器,能大大减小电路板的尺寸,增加系统的可靠性和设计灵活性采用双帧存交替切换及单帧双扫技术,提高了系统视频带宽,并能提高系统实时性,减少图形闪烁采用VHDL语言进行FPGA设计具有方法简单、易读和可重用性强的特点。该高速图形帧存已用Xilinx公司的SpartanII系列器件XC2S50实现,并在某型飞机座舱图形显示系统中实际应用。
评论