在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 10850|回复: 3

signal does not hold its value 是什么错误,请问如何解决

[复制链接]
发表于 2007-8-21 16:47:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
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
发表于 2007-8-22 12:51:04 | 显示全部楼层
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;   
这两端程序冲突了。。。。。。。。所谓的“信号不能保持以前的值”是因为你的两个违宝马(HBW)的赋值一个是组合逻辑一个是寄存器逻辑,逻辑冲突了。。。。。。。。。。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2007-8-24 08:56:50 | 显示全部楼层
互相控制的两个信号要用时序逻辑,否则会出错
回复 支持 反对

使用道具 举报

发表于 2011-5-10 16:57:49 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-14 07:09 , Processed in 0.017188 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表