используя делитель ядра от Xilinx - PullRequest
0 голосов
/ 12 февраля 2011

Я не знаю, как правильно использовать ip core делителя из xilinx и что я делаю неправильно.

Вот код, приведенный к проблеме, и все, что я делаю дополнительно в ISE, это то, что я добавляю ядро ​​делителя

CE - включен
Коэффициент ширины 17
Ширина делителя 11
Остаток
Подпись
2 часа на одно деление

и файл ucf с определением NET "CLK_50MHZ"

Я не могу избавиться от этой ошибки 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;

1 Ответ

3 голосов
/ 15 февраля 2011

Не знаю, какое у вас сообщение об ошибке, но вот некоторые комментарии, основанные на коде.

Первый:

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 имеет только тактовый вход.Инструменты заметят, что никакие выходы никогда не отправляются во внешний мир, и оптимизируют все это!

Попробуйте перенести вход и выход делителя во внешний мир.

...