PicoBlaze под Spartan-3.
Сначала пользовался только исходниками (kcpsm3.vhd+prog_rom.vhd). Программа написана, beh-симуляция проходит на ура, но тайминг делает не то. Вытащил из недр сигналы address и instruction. Выяснилось, что при зашивании программы в блокRAM она слегка "модифицируется", в итоге делает совсем не то...
Пошел другим путем...
kcpsm3.ngc+prog_rom.edn, объявляем компоненты как black_box и...

Первый поставляется вместе с исходником. А как получить второй?
Пробовал способ от PicoBlaze для Spartan2, но он тут не работает. Создал в Coregene блочную память, назвал prog_rom, вытащил оттуда prog_rom.xco и сказал:
coregen -b prog_rom.xco
В итоге получил prog_rom.edn, но вместо требуемого интерфейса:
Код
entity prog_rom is
Port ( address : in std_logic_vector(9 downto 0);
instruction : out std_logic_vector(17 downto 0);
clk : in std_logic);
получил:
Код
ENTITY prog_rom IS
port (
addra: IN std_logic_VECTOR(9 downto 0);
addrb: IN std_logic_VECTOR(9 downto 0);
clka: IN std_logic;
clkb: IN std_logic;
douta: OUT std_logic_VECTOR(17 downto 0);
doutb: OUT std_logic_VECTOR(17 downto 0);
ena: IN std_logic;
enb: IN std_logic);
END prog_rom;
И что мне с этим делать?
У меня есть: prog_rom.coe, prog_rom.dec, prog_rom.hex, prog_rom.fmt, prog_rom.log, prog_rom.mem, prog_rom.vhd. Мне нужен prog_rom.edn.
Кто знает как получить его или как заставить синтезатор не тусовать команды в программе?