我在工作实习中,我在VHDL中有这个主题:计算机监视器响应时间的测量系统。 为了成功,我想把一个光电二极管放在显示器前面,然后每秒钟在显示器上切换黑白,知道响应时间。 但是我真的不知道如何制作它,我使用通过VGA在显示器上连接的斯巴达3。 我对一个程序不对,我不确定它是否正确,(我认为这是错误的)。我告诉你我的节目:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL
USE IEEE.NUMERIC_STD.ALL
ENTITY Counter IS
PORT(clk, rst : IN STD_LOGIC;
sync, PhD : IN STD_LOGIC;
s : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END ENTITY Counter;
ARCHITECTURE Main OF Counter IS
SIGNAL q : UNSIGNED (3 DOWNTO 0);
BEGIN
s <= STD_LOGIC_VECTOR(q);
PROCESS (clk, rst) IS
BEGIN
IF rst='1' THEN
q<=(OTHERS => '0');
ELSIF RISING_EDGE(clk) THEN
IF sync='0' THEN
q=q;
ELSIF sync='1' THEN
IF PhD='0' THEN
q<=q+1;
ELSIF PhD='1' THEN
q=q;
END IF;
END IF;
END IF;
END PROCESS;
END ARCHITECTURE Mai
N;
告诉我,如果你需要更多东西,也许我会忘记一些东西。并告诉我你的计划是什么。
答案 0 :(得分:0)
你写的是一个计数器,它在每个时钟周期递增,同步为1,phd为0.在不知道你的确切要求的情况下,很难说这是否是你想要的。
如果要确定同步变高和phd变高之间的时间量,则应在sync = 0时将q设置为0。这将导致计数器在每次同步变为高电平时从0开始。
您可能还应该增加q的宽度,具体取决于您的时钟速度。目前它只有4位,这意味着它将每16个周期回绕到0。给定典型的时钟频率(例如100MHz),这小于一微秒。要在100 MHz下计数一秒,您需要一个至少27位的计数器。