首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我代码中的警告

我代码中的警告
EN

Stack Overflow用户
提问于 2014-02-05 10:11:25
回答 1查看 214关注 0票数 1
代码语言:javascript
运行
复制
library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
use IEEE.NUMERIC_STD.ALL; 
entity fir_123 is 
port(   Clk : in std_logic; --clock signal              
    Xin : in signed(7 downto 0); --input signal                
    Yout : out signed(15 downto 0)  --filter output             
    );                 
    end fir_123; 
architecture Behavioral of fir_123 is  
component DFF is 
port( 
Q : out signed(15 downto 0);      --output connected to the adder
Clk :in std_logic;      -- Clock input  

  D :in  signed(15 downto 0)      -- Data input from the MCM block.
 );   
end component;
signal H0,H1,H2,H3 : signed(7 downto 0) := (others => '0');  
signal MCM0,MCM1,MCM2,MCM3,add_out1,add_out2,add_out3 : signed(15 downto 0) := (others        => '0'); 
signal Q1,Q2,Q3 : signed(15 downto 0) := (others => '0');
begin  
--filter coefficient initializations.
--H = [-2 -1 3 4].
H0 <= to_signed(-2,8);  
H1 <= to_signed(-1,8);                    
H2 <= to_signed(3,8);                           
H3 <= to_signed(4,8); 
--Multiple constant multiplications.
MCM3 <= H3*Xin;                         
MCM2 <= H2*Xin;        
MCM1 <= H1*Xin;                      
MCM0 <= H0*Xin;  
--adders
add_out1 <= Q1 + MCM2;                            
add_out2 <= Q2 + MCM1;                          
add_out3 <= Q3 + MCM0;
--flipflops(for introducing a delay).
dff1 : DFF port map(Q1,Clk,MCM3);                                
dff2 : DFF port map(Q2,Clk,add_out1);                                         
dff3 : DFF port map(Q3,Clk,add_out2);
--an output produced at every positive edge of clock cycle.
process(Clk)                                          
begin 
if(rising_edge(Clk)) then  
Yout <= add_out3;  
end if;
end process;
end Behavioral; 
library IEEE;                                                     
use IEEE.STD_LOGIC_1164.ALL;                                     
use IEEE.NUMERIC_STD.ALL;
entity dff is                                                      
port(`
Q : out signed(15 downto 0);      --output connected to the adder                           
  Clk :in std_logic;      -- Clock input                                 
  D :in  signed(15 downto 0)      -- Data input from the MCM block. 
);  
end dff;
architecture Behavioral of dff is                       
signal qt : signed(15 downto 0) := (others => '0'); 
begin                          

Q <= qt;                              

process(Clk)                                   
begin 
if ( rising_edge(Clk) ) then 
qt <= D; 
end if;  
end process; 
end Behavioral; 

当我运行这段代码时,它成功地编译了没有错误的语法,但是我得到了几个警告,因此我没有得到想要的结果。在仿真结果中,我得到了Xin,Clkin & Yout。我尝试了不同的方法,但仍然没有解决这些警告:

1)警告:Xst:1293-FF/Latch在块中的恒定值为0。此FF/Latch将在优化过程中被裁剪。 2)警告:Xst:1293-FF/Latch块中的恒定值为0。此FF/Latch将在优化过程中被裁剪。 3)警告:Xst:1293-FF/Latch的块值为0。此FF/Latch将在优化过程中被裁剪。 4)警告:Xst:1896年-由于其他FF/舱口修整,FF/Latch在块中的恒定值为0。此FF/Latch将在

EN

回答 1

Stack Overflow用户

发布于 2014-02-14 17:24:11

代码似乎没有问题。我认为唯一可能出错的是,冷杉模块没有任何复位。杉木的编码如下:

代码语言:javascript
运行
复制
library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
use IEEE.NUMERIC_STD.ALL;

entity fir_123 is 
port(   Clk : in std_logic; --clock signal
        reset: in std_logic;     
    Xin : in signed(7 downto 0); --input signal                
    Yout : out signed(15 downto 0)  --filter output          
    );                 
end fir_123;


architecture Behavioral of fir_123 is  
component DFF is 
port( 
  Q : out signed(15 downto 0);      --output connected to the adder
  Clk :in std_logic;      -- Clock input  
  reset: in std_logic;
  D :in  signed(15 downto 0)      -- Data input from the MCM block.
 );   
end component;

signal H0,H1,H2,H3 : signed(7 downto 0) := (others => '0');  
signal MCM0,MCM1,MCM2,MCM3,add_out1,add_out2,add_out3 : signed(15 downto 0) := (others => '0'); 
signal Q1,Q2,Q3 : signed(15 downto 0) := (others => '0');

signal yout_int : signed(15 downto 0);

begin  
--filter coefficient initializations.
--H = [-2 -1 3 4].
H0 <= to_signed(-2,8);  
H1 <= to_signed(-1,8);                    
H2 <= to_signed(3,8);                           
H3 <= to_signed(4,8); 
--Multiple constant multiplications.
MCM3 <= H3*Xin;                         
MCM2 <= H2*Xin;        
MCM1 <= H1*Xin;                      
MCM0 <= H0*Xin;  
--adders
add_out1 <= Q1 + MCM2;                            
add_out2 <= Q2 + MCM1;                          
add_out3 <= Q3 + MCM0;
--flipflops(for introducing a delay).
dff1 : DFF port map(Q1,Clk,reset,MCM3);                                
dff2 : DFF port map(Q2,Clk,reset,add_out1);                                         
dff3 : DFF port map(Q3,Clk,reset,add_out2);
--an output produced at every positive edge of clock cycle.

registered_yout: process                                          
begin
  wait until rising_edge(clk);
  if (reset = '1') then
    yout_int <= (others => '0');
  else
    yout_int <= add_out3;  
  end if;
end process;

Yout <= yout_int;

end Behavioral;

我还为dff添加了重置,修改后的文件如下所示:

代码语言:javascript
运行
复制
library IEEE;                                                     
use IEEE.STD_LOGIC_1164.ALL;                                     
use IEEE.NUMERIC_STD.ALL;

entity dff is                                                      
  port(
    Q : out signed(15 downto 0);      --output connected to the adder                           
    Clk :in std_logic;      -- Clock input
    reset: in std_logic;                                 
    D :in  signed(15 downto 0)      -- Data input from the MCM block. 
);  
end dff;

architecture Behavioral of dff is                       
signal qt : signed(15 downto 0) := (others => '0'); 
begin                          

Q <= qt;                              

registered_qt : process                                  
begin
  wait until rising_edge(clk);
  if (reset = '1') then
    qt <= (others => '0');
  else 
    qt <= D;
  end if;
end process;

end Behavioral;

我使用的testbench如下所示:

代码语言:javascript
运行
复制
library ieee;
use ieee.numeric_std.all;
use ieee.std_logic_1164.all;

entity tb is
end entity tb;

architecture test_bench of tb is

component fir_123 is 
port(   Clk   : in  std_logic;
        reset : in std_logic;          
        Xin   : in  signed(7 downto 0);                
        Yout  : out signed(15 downto 0)            
    );                 
end component fir_123;

constant clk_per : time := 8 ns;

signal clk: std_logic;
signal reset: std_logic;

signal Xin  : signed(7 downto 0);
signal Yout : signed(15 downto 0);

begin

dft : component fir_123
port map (
    Clk     => clk,
    reset   => reset,
    Xin     => Xin,
    Yout    => Yout
);

Clk_generate : process --Process to generate the clk
begin
    clk <= '0';
    wait for clk_per/2;
    clk <= '1';
    wait for clk_per/2;
end process;

Rst_generate : process --Process to generate the reset in the beginning
begin
    reset <= '1';
    wait until rising_edge(clk);
    reset <= '0';
    wait;
end process;


Test: process

begin
  Xin <= (others => '0');
  wait until rising_edge(clk);
  Xin <= (others => '1');
  wait until rising_edge(clk);
  Xin <= (others => '0');

  wait for clk_per*10;
  report "testbench finished" severity failure;
end process test;

end architecture test_bench; 

我已经检查了模拟器中的波形,它们似乎都是在复位被取消后定义的。Xin和Clk未定义的事实表明,testbench有问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21574218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档