3. 3 FIFO 控制模块
考虑到非标准视频信号一帧图像数据量太大, 一块FIFO 放不下, 同时, 电视信号都采用隔行扫描, 数据流将按奇偶场交替输出, 故设计中用两块FIFO A、B 分别存放图像的奇偶帧, 但在图像恢复时为逐行扫描方式, 这就涉及到在两块FIFO 间交替读出数据的问题。设计中, 用两个场同步信号Vsync 间的行同步信号Hsync 做判断, 决定两块F IFO 的读写, 使数据按ABAB..... 逐行读出。该部分代码段如下, 仿真时序图见图6。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ctrl IS
PORT (
vsync, hsync : IN STD_LOGIC;
fifoa_en, fifob_en:OUT STD_LOGIC
);
END ctrl;
ARCHITECTURE behav OF ctrl IS
SIGNAL fifo_en: STD_LOGIC;
BEGIN
PROCESS (hsync, vsync)
BEGIN
IF vsync='0' THEN
fifo_en<= '1';
ELSIF hsync'event AND hsync='0' THEN
fifo_en<= not (fifo_en);
END IF;
END PROCESS;
fifoa_en<= fifo_en WHEN vsync='1' ELSE '1';
fifob_en<= not (fifo_en) WHEN vsync='1' ELSE '1';
END behav;