?? vga_sync.tdf
字號:
TITLE "VGA_sync";
-- Version 1.0
-- Copyright Rune Baeverrud, October 6, 1997
-- You may use or distribute this function freely,
-- provided you do not remove this copyright notice.
-- You can download it from www.fpga.com.cn or www.pld.com.cn
INCLUDE "lpm_counter";
INCLUDE "lpm_compare";
SUBDESIGN VGA_sync
(
SysClk: INPUT;
Enable: INPUT=VCC;
h_sync, v_sync : OUTPUT;
video, pix_en, frame : OUTPUT;
h_cnt[9..0], v_cnt[9..0] : OUTPUT;
)
VARIABLE
h_state : MACHINE WITH STATES (h_video, h_delay1, h_sync_now, h_delay2);
v_state : MACHINE WITH STATES (v_video, v_delay1, v_sync_now, v_delay2);
h_counter : LPM_COUNTER WITH (LPM_WIDTH=10);
v_counter : LPM_COUNTER WITH (LPM_WIDTH=10);
v_enable : NODE;
h_cnt_1d[9..0]: DFF;
v_cnt_1d[9..0]: DFF;
frame_ff : DFF;
BEGIN
h_counter.clock = SysClk;
v_counter.clock = SysClk;
h_state.clk = SysClk;
v_state.clk = SysClk;
h_cnt_1d[].clk = SysClk;
v_cnt_1d[].clk = SysClk;
frame_ff.clk = SysClk;
h_counter.clk_en = Enable;
h_state.ena = Enable;
v_enable = Enable AND LPM_COMPARE(h_counter.q[], 699,,)
WITH (LPM_WIDTH=10, ONE_INPUT_IS_CONSTANT="YES")
RETURNS (.aeb);
v_counter.clk_en = v_enable;
v_state.ena = v_enable;
h_cnt_1d[] = h_counter.q[];
h_cnt[] = h_cnt_1d[];
v_cnt_1d[] = v_counter.q[];
v_cnt[] = v_cnt_1d[];
video = DFF(h_video AND v_video, SysClk,,);
h_sync = DFF(NOT h_sync_now, SysClk,,);
v_sync = DFF(NOT v_sync_now, SysClk,,);
pix_en = DFF(Enable AND h_video AND v_video, SysClk,,);
frame = DFF(frame_ff, SysClk,,);
CASE h_state IS
WHEN h_video =>
IF LPM_COMPARE(h_counter.q[], 639,,)
WITH (LPM_WIDTH=10, ONE_INPUT_IS_CONSTANT="YES")
RETURNS (.aeb) THEN
h_state = h_delay1;
ELSE h_state = h_video;
END IF;
WHEN h_delay1 =>
IF LPM_COMPARE(h_counter.q[], 658,,)
WITH (LPM_WIDTH=10, ONE_INPUT_IS_CONSTANT="YES")
RETURNS (.aeb) THEN
h_state = h_sync_now;
ELSE h_state = h_delay1;
END IF;
WHEN h_sync_now =>
IF LPM_COMPARE(h_counter.q[], 755,,)
WITH (LPM_WIDTH=10, ONE_INPUT_IS_CONSTANT="YES")
RETURNS (.aeb) THEN
h_state = h_delay2;
ELSE h_state = h_sync_now;
END IF;
WHEN h_delay2 =>
IF LPM_COMPARE(h_counter.q[], 799,,)
WITH (LPM_WIDTH=10, ONE_INPUT_IS_CONSTANT="YES")
RETURNS (.aeb) THEN
h_state = h_video;
h_counter.sclr = VCC;
ELSE h_state = h_delay2;
END IF;
END CASE;
CASE v_state IS
WHEN v_video =>
IF LPM_COMPARE(v_counter.q[], GND, 479,,)
WITH (LPM_WIDTH=10, ONE_INPUT_IS_CONSTANT="YES")
RETURNS (.aeb) THEN
v_state = v_delay1;
ELSE v_state = v_video;
END IF;
WHEN v_delay1 =>
IF LPM_COMPARE(v_counter.q[], GND, 492,,)
WITH (LPM_WIDTH=10, ONE_INPUT_IS_CONSTANT="YES")
RETURNS (.aeb) THEN
v_state = v_sync_now;
ELSE v_state = v_delay1;
END IF;
WHEN v_sync_now =>
IF LPM_COMPARE(v_counter.q[], GND, 494,,)
WITH (LPM_WIDTH=10, ONE_INPUT_IS_CONSTANT="YES")
RETURNS (.aeb) THEN
v_state = v_delay2;
ELSE v_state = v_sync_now;
END IF;
WHEN v_delay2 =>
IF LPM_COMPARE(v_counter.q[], 524,,)
WITH (LPM_WIDTH=10, ONE_INPUT_IS_CONSTANT="YES")
RETURNS (.aeb) THEN
v_state = v_video;
v_counter.sclr = VCC;
frame_ff = v_enable;
ELSE v_state = v_delay2;
END IF;
END CASE;
END;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -