📄 monitor.vhd
字号:
ENTITY monitor IS
GENERIC( CONSTANT fileo: IN STRING := "u:videooutput.hex") ; -- File name
PORT( SIGNAL vdat: IN STD_LOGIC_VECTOR (7 DOWNTO 0) ; -- Data
SIGNAL clk: IN STD_LOGIC := '0' ; -- Clock
SIGNAL n_hs: IN STD_LOGIC := '1' ; -- Horizontal Sync
SIGNAL n_vs: IN STD_LOGIC := '1' ; -- Vertical Sync
SIGNAL dv: IN STD_LOGIC := '0'); -- Data valid
END monitor;
-------------------------------------------------------------------------------
ARCHITECTURE behav OF monitor IS
FILE image: hex_image_file IS OUT fileo ;
BEGIN
---- Data writing process ----------------------------------------------------------------
pm1: PROCESS (clk)
VARIABLE nib: STD_LOGIC_VECTOR (3 DOWNTO 0);
VARIABLE hex_nib: hex;
VARIABLE chr: CHARACTER;
BEGIN
IF clk='1' THEN --signals are sampled at rising edge
IF dv = '1' THEN -- If is data valid
nib := vdat(7 DOWNTO 4); -- converted to hex (MS nibble)
std2hex(nib,hex_nib);
hex2chr(hex_nib,chr);
WRITE(image,chr); -- and written into file
std2hex(vdat(3 DOWNTO 0),hex_nib); -- converted to hex (LS nibble)
hex2chr(hex_nib,chr);
WRITE(image,chr); -- and written into file
END IF;
END IF;
END PROCESS;
---- Horizontal sync pulse writing -------------------------------------------------------
pm2: PROCESS (n_hs)
BEGIN
IF (n_hs'EVENT AND n_hs='0' AND n_vs='1') THEN
WRITE(image,CR); -- CR-LF are written into file
WRITE(image,LF);
END IF;
END PROCESS;
---- Vertical sync pulse writing ---------------------------------------------------------
pm3: PROCESS (n_vs)
BEGIN
IF (n_vs'EVENT AND n_vs='0') THEN
WRITE(image,'*'); -- An asterisk is written into file
END IF;
END PROCESS;
END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -