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

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1811|回复: 4

[求助] vhdl 求大神指点

[复制链接]
发表于 2013-6-13 18:30:57 | 显示全部楼层 |阅读模式

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

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

x
代码如下
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
LIBRARY WORK;
ENTITY TEST IS
   PORT (
   CLK : IN  std_logic;
   d : out std_logic_vector(3 downto 0));
END TEST;



ARCHITECTURE SIM OF TEST IS
   FUNCTION TMR (A,B,C:STd_LOGIC_VECTOR( 3 DOWNTO 0))     -- 三路表决器函数

  RETURN STD_LOGIC_VECTOR IS
   variable RESULT : STD_LOGIC_VECTOR(3 DOWNTO 0);
   begin
     for i in 3 to 0  loop
      RESULT(i) := ((A(i) AND B(i)) OR (C(i) AND B(i)) OR (A(i) AND C(i)))   ;   
   END LOOP;
    RETURN  RESULT;
  END FUNCTION TMR;
  
  SIGNAL A :STD_LOGIC_VECTOR(3 DOWNTO 0);
  SIGNAL B :STD_LOGIC_VECTOR(3 DOWNTO 0);
  SIGNAL C :STD_LOGIC_VECTOR(3 DOWNTO 0);
   
     BEGIN
     P_RUN ROCESS(CLK)  
     BEGIN
       IF CLK='1' THEN
         A<="1101";
         B<="1111";
         C<="1111";
         D<= TMR(A,B,C);---A,B,C调用函数表决
       ELSE
          A<="0000";
         B<="1000";
         C<="0000";
         D<= TMR(A,B,C);
       END IF;
     END PROCESS  P_RUN;
     
     END SIM;
  
tb文件给一个时钟信号
仿真结果如下:三路表决结果出错,未初始化态。

仿真结果,函数调用错误

仿真结果,函数调用错误
发表于 2013-6-13 19:08:47 | 显示全部楼层
回复 1# hecwty888


   初始态
 楼主| 发表于 2013-6-13 20:29:51 | 显示全部楼层
回复 2# shiyinjita


    函数赋值无效怎么搞
 楼主| 发表于 2013-6-14 09:09:09 | 显示全部楼层
莫沉,顶起
发表于 2013-6-14 20:25:38 | 显示全部楼层
你或者改成用复位来实现初始化,或者
SIGNAL A :STD_LOGIC_VECTOR(3 DOWNTO 0) := 0

好像是这样的,你多尝试几遍
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-6 00:38 , Processed in 0.019718 second(s), 10 queries , Gzip On, Redis On.

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