打印

请教大家一个很奇怪的现象

[复制链接]
1507|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhulin|  楼主 | 2014-9-27 20:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
以下这段代码,信号位宽为20BIT,不管是在用ISM还是用MODELSIM仿真都得不到延时一拍的结果,请问大家这上为什么。谢谢
PROCESS(rstN,vclk)
      BEGIN
        IF rstN = '0' THEN
              Video_out <=(OTHERS => '0');         
        ELSIF vclk'EVENT AND vclk = '1' THEN   
               Video_out   <= Video_in;                                    
        END IF;
   END PROCESS;

相关帖子

沙发
zhulin|  楼主 | 2014-9-27 21:24 | 只看该作者
以下是完整代码

entity Active_video_detect20140922 is
    Port (
          RstN_in : IN STD_LOGIC;
          VCLK_in  : IN STD_LOGIC;
          Video_in : IN STD_LOGIC_VECTOR(19 DOWNTO 0);
          Video_out : OUT STD_LOGIC_VECTOR(19 DOWNTO 0)         
          );
end Active_video_detect20140922;

architecture Behavioral of Active_video_detect20140922 is

  SIGNAL rstN : STD_LOGIC;
  SIGNAL vclk : STD_LOGIC;
   
begin

  rstN <= RstN_in;
  vclk <= VCLK_in;   
  
       
         PROCESS(rstN,vclk)
      BEGIN
        IF rstN = '0' THEN
              Video_out <= (OTHERS => '0');         
        ELSIF vclk'EVENT AND vclk = '1' THEN   
               Video_out   <= Video_in;                                    
        END IF;
   END PROCESS;
         
end Behavioral;

使用特权

评论回复
板凳
ococ| | 2014-9-27 21:49 | 只看该作者
这个跟你的testbench写法有关系吧。
如果这个模块的输入信号Video_in的产生是由VCLK_in来驱动的话那你这个模块肯定可以达到延迟一个clk的目的。
所以你查一下输入到这个模块的Video_in是不是由VCLK_in上升沿来产生的。

使用特权

评论回复
地板
zhulin|  楼主 | 2014-9-27 22:19 | 只看该作者
ococ 发表于 2014-9-27 21:49
这个跟你的testbench写法有关系吧。
如果这个模块的输入信号Video_in的产生是由VCLK_in来驱动的话那你这个 ...

testbench没有问题,输入信号是由VCLK_in上升沿产生的

使用特权

评论回复
5
ococ| | 2014-9-28 08:49 | 只看该作者
zhulin 发表于 2014-9-27 22:19
testbench没有问题,输入信号是由VCLK_in上升沿产生的

那把tb文件和仿真波形图贴出来看看吧

使用特权

评论回复
6
雪夜虫子| | 2014-9-28 10:37 | 只看该作者
实际上板跑呢?拿chipscope抓一下看看。

使用特权

评论回复
7
zhulin|  楼主 | 2014-9-28 13:50 | 只看该作者
D:\1.jpg
TB代码
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;

ENTITY gg IS
END gg;

ARCHITECTURE behavior OF gg IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT Active_video_detect20140922
    PORT(
         RstN_in : IN  std_logic;
         VCLK_in : IN  std_logic;
         Video_in : IN  std_logic_vector(19 downto 0);
         Video_out : OUT  std_logic_vector(19 downto 0)
        );
    END COMPONENT;
   

   --Inputs
   signal RstN_in : std_logic := '0';
   signal VCLK_in : std_logic := '0';
   signal Video_in : std_logic_vector(19 downto 0) := (others => '0');

        --Outputs
   signal Video_out : std_logic_vector(19 downto 0);
   -- No clocks detected in port list. Replace <clock> below with
   -- appropriate port name

   constant VCLK_in_period : time := 10 ns;

BEGIN

        -- Instantiate the Unit Under Test (UUT)
   uut: Active_video_detect20140922 PORT MAP (
          RstN_in => RstN_in,
          VCLK_in => VCLK_in,
          Video_in => Video_in,
          Video_out => Video_out
        );

   -- Clock process definitions
   VCLK_in_process :process
   begin
                VCLK_in <= '0';
                wait for VCLK_in_period/2;
                VCLK_in <= '1';
                wait for VCLK_in_period/2;
   end process;


   -- Stimulus process
   stim_proc: process
   begin               
      RstN_in <= '0';
      wait for 100 ns;       
      RstN_in <= '1';
--      wait for <clock>_period*10;

      -- insert stimulus here

      wait;
   end process;
       
        process(RstN_in,VCLK_in)
          begin
            if RstN_in = '0' then
                   Video_in <= (others => '0');
                 elsif VCLK_in'event and VCLK_in = '1' then
                   Video_in <= Video_in + '1';
                 end if;
        end process;

END;

使用特权

评论回复
8
zhulin|  楼主 | 2014-9-28 13:51 | 只看该作者
d:\1.jpg

使用特权

评论回复
9
ococ| | 2014-9-28 14:19 | 只看该作者
图挂了,看不到

使用特权

评论回复
10
zhulin|  楼主 | 2014-9-29 13:21 | 只看该作者
d:\1.jpg

使用特权

评论回复
11
ococ| | 2014-9-30 11:46 | 只看该作者
还是看不到图啊

使用特权

评论回复
12
zhulin|  楼主 | 2014-10-8 08:55 | 只看该作者
d:\1.jpg

使用特权

评论回复
13
zhulin|  楼主 | 2014-10-8 08:57 | 只看该作者
不知道为什么,我加了图片还是看不到

使用特权

评论回复
14
zhulin|  楼主 | 2014-10-8 08:58 | 只看该作者
图片见附件

1.jpg (100.25 KB )

1.jpg

使用特权

评论回复
15
EDAbuffalo| | 2014-10-17 22:16 | 只看该作者
注释掉  rstN <= RstN_in;  vclk <= VCLK_in;这两句好像就可以了 原因我也不知道  知道的言语一声哈

使用特权

评论回复
16
zhulin|  楼主 | 2014-10-18 16:28 | 只看该作者
EDAbuffalo 发表于 2014-10-17 22:16
注释掉  rstN

我也是这么做的,就是不知道啥原因

使用特权

评论回复
17
zhaojingzb| | 2014-10-23 10:44 | 只看该作者
是精度的问题?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

182

帖子

2

粉丝