0

我不知道如何正确使用来自 xilinx 的除数 ip 内核以及我做错了什么。

这是代码简化为问题,我在 ISE 中额外做的就是添加除数核心白衣

CE - 启用
商宽度 17
除数宽度 11
余数有
符号
每个器件 2 个时钟

和带有NET“CLK_50MHZ”定义的ucf文件

我无法摆脱这个错误http://www.xilinx.com/support/answers/13873.htm

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_arith.ALL;
use IEEE.STD_LOGIC_signed.ALL;


use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity pg is
 Port ( CLK_50MHz : in  STD_LOGIC );
end pg;

architecture Behavioral of pg is

signal CLK : std_logic;
signal div_ce :  std_logic := '0' ;
signal div_rfd :  std_logic;
signal dividend_std : std_logic_vector (16 downto 0) := "00000000000000000";
signal divisor_std: std_logic_vector (10 downto 0) := "00000000000";
signal quotient_std:  std_logic_vector (16 downto 0) ;
signal fractional_std :  std_logic_vector (10 downto 0);


component divider is 
port (   clk: in  std_logic;
            rfd: in  std_logic;
            ce:  in std_logic;
            dividend : in std_logic_vector (16 downto 0);
            divisor: in  std_logic_vector (10 downto 0);
            quotient: out std_logic_vector (16 downto 0); 
            fractional : out  std_logic_vector (10 downto 0)
            );          
end component;


begin   
cdiv: process(CLK_50MHz)
begin
    if(CLK_50MHz'event and CLK_50MHz='1') then
        CLK<=not CLK;
    end if;
end process cdiv;


VVV:divider
port map( clk=>CLK,
         rfd=>div_rfd, 
         ce=>'1',
         dividend=>dividend_std,  
         divisor=>divisor_std,   
         quotient=>quotient_std,  
         fractional=>fractional_std
);

end Behavioral;
4

1 回答 1

3

不确定您的错误消息是什么,但这里有一些基于代码的注释。

第一的:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_arith.ALL;
use IEEE.STD_LOGIC_signed.ALL;


use IEEE.NUMERIC_STD.ALL;

您真的不想要所有这些库,它们会以各种方式发生冲突。

只需使用 numeric_std(事实上,在这个例子中你甚至不需要它)

第二:

您可能还会受到影响,因为您的顶级实体pg只有一个时钟输入。这些工具会注意到没有任何输出被发送到外部世界并优化整个事情!

尝试将分频器输入和输出带到外部世界。

于 2011-02-15T12:30:59.423 回答