|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
LIBRARY IEEE; -- 2004;GWDVPB 选择模式5
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY etester IS
PORT (BBCLK : IN STD_LOGIC; --标准频率时钟信号
TCLK : IN STD_LOGIC; --待测频率时钟信号
CLR : IN STD_LOGIC; --清零
START : IN STD_LOGIC; --开始
SEL : IN STD_LOGIC_VECTOR(3 DOWNTO 0); --数据位输出选择
DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) --数据读出
);
END etester;
ARCHITECTURE behav OF etester IS
SIGNAL BZQ : STD_LOGIC_VECTOR(31 DOWNTO 0); --标准计数器
SIGNAL TSQ : STD_LOGIC_VECTOR(31 DOWNTO 0); --测频计数器
SIGNAL HBW : STD_LOGIC_VECTOR(7 DOWNTO 0); --脉宽高电平计数
SIGNAL LBW : STD_LOGIC_VECTOR(7 DOWNTO 0); --脉宽低电平计数
SIGNAL ENA : STD_LOGIC; -- 计数使能
SIGNAL ENAP : STD_LOGIC; -- START脉宽计数使能
SIGNAL ENAP1 : STD_LOGIC; -- 1脉宽计数使能
SIGNAL ENAP0 : STD_LOGIC; -- 0脉宽计数使能
SIGNAL BCLK : STD_LOGIC; --锁相环用
COMPONENT PLL50 --嵌入式锁相环
PORT(inclk0 : IN STD_LOGIC := '0';
c0 : OUT STD_LOGIC );
END COMPONENT;
BEGIN
DATA <= BZQ(7 DOWNTO 0) WHEN SEL = "0000" ELSE -- 标准频率计数低8位输出
BZQ(15 DOWNTO 8) WHEN SEL = "0001" ELSE
BZQ(23 DOWNTO 16) WHEN SEL = "0010" ELSE
BZQ(31 DOWNTO 24) WHEN SEL = "0011" ELSE -- 标准频率计数最高8位输出
TSQ(7 DOWNTO 0) WHEN SEL = "0100" ELSE --待测频率计数值最低8位输出
TSQ(15 DOWNTO 8) WHEN SEL = "0101" ELSE
TSQ(23 DOWNTO 16) WHEN SEL = "0110" ELSE
TSQ(31 DOWNTO 24) WHEN SEL = "0111" ELSE --待测频率计数值最高8位输出
HBW(7 DOWNTO 0) WHEN SEL ="1000" ELSE
LBW(7 DOWNTO 0) WHEN SEL ="1001" ELSE
LBW(7 DOWNTO 0) ;
-- HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
BZH : PROCESS(BCLK, CLR) --标准频率测试计数器,标准计数器
BEGIN
IF CLR = '1' THEN BZQ <= ( OTHERS=>'0' ) ;
ELSIF BCLK'EVENT AND BCLK = '1' THEN
IF ENA = '1' THEN BZQ <= BZQ + 1;
END IF;
END IF;
END PROCESS;
-- gggggggggggggggggggggggggggggggggggggggggggggggggggg
TF : PROCESS(TCLK, CLR) --待测频率计数器,测频计数器
BEGIN
IF CLR = '1' THEN TSQ <= ( OTHERS=>'0' );
ELSIF TCLK'EVENT AND TCLK = '1' THEN
IF ENA = '1' THEN TSQ <= TSQ + 1;
END IF;
END IF;
END PROCESS;
--FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
PROCESS(TCLK,CLR) --计数控制使能触发器
BEGIN
IF CLR = '1' THEN ENA <= '0' ;
ELSIF TCLK'EVENT AND TCLK = '1' THEN
ENA <= START ; --测频和脉宽计数使能
END IF;
END PROCESS;
PROCESS(TCLK,CLR)
BEGIN
IF CLR = '1' THEN ENAP <= '0' ;
ELSIF TCLK'EVENT AND TCLK = '1' THEN
ENAP <= START ; --测频和脉宽计数使能
END IF;
END PROCESS;
--OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
HBWC : PROCESS(TCLK, CLR) --标准频率测试计数器,标准计数器
BEGIN
IF CLR = '1' THEN HBW <= ( OTHERS=>'0' ) ;
ELSIF TCLK'EVENT AND TCLK = '1' THEN
ENAP1 <= '1';
END IF;
IF ENAP = '1' THEN
ELSIF BCLK'EVENT AND BCLK = '1' THEN
IF ENAP1 = '1' THEN HBW <= HBW + 1;
END IF;
--END IF;
END IF;
END PROCESS;
--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
LBWC : PROCESS(TCLK, CLR) --测低脉宽
BEGIN
IF CLR = '1' THEN LBW <= ( OTHERS=>'0' ) ;
ELSIF TCLK'EVENT AND TCLK = '0' THEN
ENAP0 <= '1';
END IF;
IF ENAP = '1' THEN
ELSIF BCLK'EVENT AND BCLK = '1' THEN
IF ENAP0 = '1' THEN LBW <= LBW + 1;
END IF;
--END IF;
END IF;
END PROCESS;
-- HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
u1 : PLL50 PORT MAP(inclk0=>BBCLK,c0=>BCLK);
END behav;
上面是原程序,下误是编译的错误
Error: VHDL error at ETESTER.VHD(87): can't infer register for signal "HBW[7]" because signal does not hold its value outside clock edge
Error: VHDL error at ETESTER.VHD(87): can't infer register for signal "HBW[6]" because signal does not hold its value outside clock edge
Error: VHDL error at ETESTER.VHD(87): can't infer register for signal "HBW[5]" because signal does not hold its value outside clock edge
Error: VHDL error at ETESTER.VHD(87): can't infer register for signal "HBW[4]" because signal does not hold its value outside clock edge
Error: VHDL error at ETESTER.VHD(87): can't infer register for signal "HBW[3]" because signal does not hold its value outside clock edge
Error: VHDL error at ETESTER.VHD(87): can't infer register for signal "HBW[2]" because signal does not hold its value outside clock edge
Error: VHDL error at ETESTER.VHD(87): can't infer register for signal "HBW[1]" because signal does not hold its value outside clock edge
Error: VHDL error at ETESTER.VHD(87): can't infer register for signal "HBW[0]" because signal does not hold its value outside clock edge
Error: Can't elaborate top-level user hierarchy
Error: Quartus II Analysis & Synthesis was unsuccessful. 9 errors, 2 warnings
Error: Processing ended: Tue Aug 21 11:28:01 2007
Error: Elapsed time: 00:00:04
Error: Quartus II Full Compilation was unsuccessful. 9 errors, 2 warnings |
|