реклама на сайте
подробности

 
 
> Не могу промоделировать ядро PicoBlaze!, Может есть у кого TestBench?
lexus.mephi
сообщение Jan 20 2007, 01:33
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 24-09-05
Пользователь №: 8 903



При моделировании ядра на выходах всегда UUUUUUUUUUUUUUU. В даташитах ксайлинсовских диаграмки есть, а вот testbench они привести не захотели!
Само ядро я добавлял в свой проект как в книге у Зотова и проект этот уже полностью реализован, вот тока при моделировании мне приходилось все сигналы от ядра ручками задавать, а это не есть хорошо.


--------------------
Мои сайты:www.systemverilog.ru
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dmivs
сообщение Jan 20 2007, 12:24
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 7-09-05
Из: Riga, LV
Пользователь №: 8 333



Цитата(lexus.mephi @ Jan 20 2007, 02:33) *
При моделировании ядра на выходах всегда UUUUUUUUUUUUUUU.

Нормально моделируется (Modelsim 6.1f)...
Смотрите входные (для Picoblaze) сигналы, в том числе и те, что вы не используете.
Проверьте соединение с ROM.


--------------------
Go to the top of the page
 
+Quote Post
lexus.mephi
сообщение Jan 20 2007, 13:25
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 24-09-05
Пользователь №: 8 903



Итак, у меня есть 2 исходных файла! Один - верхнего уровня иерархии и два нижнего уровня иерархии ( смотрите первый прикрепленный файл).
Для начала я хотел просто промоделировать память программ. По идее при изменении адреса там должны изменяться инструкции на выходе. Вот TB для этого:
=====================================================================
ARCHITECTURE behavior OF tb_porg_rom_vhd IS

-- Component Declaration for the Unit Under Test (UUT)
COMPONENT prog_rom
PORT(
address : IN std_logic_vector(9 downto 0);
clk : IN std_logic;
instruction : OUT std_logic_vector(17 downto 0)
);
END COMPONENT;

--Inputs
SIGNAL clk : std_logic := '0';
SIGNAL address : std_logic_vector(9 downto 0) := (others=>'0');

--Outputs
SIGNAL instruction : std_logic_vector(17 downto 0);

BEGIN

-- Instantiate the Unit Under Test (UUT)
uut: prog_rom PORT MAP(
address => address,
instruction => instruction,
clk => clk
);

pClock: process
begin
clk <= '0';
wait for 10 ns;
clk <= '1';
wait for 10 ns;
end process;

pProcess: process
begin
address <= "0000001101";
wait until rising_edge(clk);
wait until rising_edge(clk);
address <= "0000001111";
wait until rising_edge(clk);
wait until rising_edge(clk);
address <= "0000010001";
wait until rising_edge(clk);
wait until rising_edge(clk);
address <= "0000111100";
wait until rising_edge(clk);
wait until rising_edge(clk);
address <= "0000010101";
wait until rising_edge(clk);
wait until rising_edge(clk);
wait; -- will wait forever
END PROCESS;

END;
=====================================================================
Результат моделирования во втором прикрепленном файле.
Потом я попробовал промоделировать все 3 компонента в целом:
=====================================================================
ARCHITECTURE behavior OF tb_kcpsm3_vhd IS

-- Component Declaration for the Unit Under Test (UUT)
COMPONENT embedded_kcpsm3
PORT(
in_port : IN std_logic_vector(7 downto 0);
interrupt : IN std_logic;
reset : IN std_logic;
clk : IN std_logic;
port_id : OUT std_logic_vector(7 downto 0);
write_strobe : OUT std_logic;
read_strobe : OUT std_logic;
out_port : OUT std_logic_vector(7 downto 0);
interrupt_ack : OUT std_logic
);
END COMPONENT;

COMPONENT kcpsm3
PORT(
instruction : IN std_logic_vector(17 downto 0);
in_port : IN std_logic_vector(7 downto 0);
interrupt : IN std_logic;
reset : IN std_logic;
clk : IN std_logic;
address : OUT std_logic_vector(9 downto 0);
port_id : OUT std_logic_vector(7 downto 0);
write_strobe : OUT std_logic;
out_port : OUT std_logic_vector(7 downto 0);
read_strobe : OUT std_logic;
interrupt_ack : OUT std_logic
);
END COMPONENT;

COMPONENT prog_rom
PORT(
address : IN std_logic_vector(9 downto 0);
clk : IN std_logic;
instruction : OUT std_logic_vector(17 downto 0)
);
END COMPONENT;

--Inputs
SIGNAL interrupt : std_logic := '0';
SIGNAL reset : std_logic := '0';
SIGNAL clk : std_logic := '0';
SIGNAL in_port : std_logic_vector(7 downto 0) := (others=>'0');

--Outputs
SIGNAL port_id : std_logic_vector(7 downto 0);
SIGNAL write_strobe : std_logic;
SIGNAL read_strobe : std_logic;
SIGNAL out_port : std_logic_vector(7 downto 0);
SIGNAL interrupt_ack : std_logic;

SIGNAL address : std_logic_vector(9 downto 0) := (others=>'0');
SIGNAL instruction : std_logic_vector(17 downto 0) := (others=>'0');
BEGIN

-- Instantiate the Unit Under Test (UUT)
full: embedded_kcpsm3 PORT MAP(
port_id => port_id,
write_strobe => write_strobe,
read_strobe => read_strobe,
out_port => out_port,
in_port => in_port,
interrupt => interrupt,
interrupt_ack => interrupt_ack,
reset => reset,
clk => clk
);

proc: kcpsm3 PORT MAP(
address => address,
instruction => instruction,
port_id => port_id,
write_strobe => write_strobe,
out_port => out_port,
read_strobe => read_strobe,
in_port => in_port,
interrupt => interrupt,
interrupt_ack => interrupt_ack,
reset => reset,
clk => clk
);

progrom: prog_rom PORT MAP(
address => address,
instruction => instruction,
clk => clk
);

pClock: process
begin
clk <= '0';
wait for 10 ns;
clk <= '1';
wait for 10 ns;
end process;

pProcess: process
begin
wait until rising_edge(clk);
wait until rising_edge(clk);
wait until rising_edge(clk);
wait until rising_edge(clk);
wait until rising_edge(clk);
wait until rising_edge(clk);
wait until rising_edge(clk);
wait until rising_edge(clk);
wait until rising_edge(clk);
wait until rising_edge(clk);
wait until rising_edge(clk);
wait; -- will wait forever
END PROCESS;

END;
====================================================================
Что из этого получилось я хотел прикрепить в третий прикрепленный файл, но он не поместился. Да вобщем-то там и смотреть то нечего - на выходах UUUUUUUUUUUUUUUUU
Прикрепленные файлы
Прикрепленный файл  Ishodnie_faili.bmp ( 99.83 килобайт ) Кол-во скачиваний: 37
Прикрепленный файл  Modelirovanie_prog_rom.bmp ( 254.51 килобайт ) Кол-во скачиваний: 33
 


--------------------
Мои сайты:www.systemverilog.ru
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- lexus.mephi   Не могу промоделировать ядро PicoBlaze!   Jan 20 2007, 01:33
- - makc   Для полноты картины не хватает исходников. Я, напр...   Jan 20 2007, 10:46
- - makc   Очень похоже на то, что данные в памяти не проиниц...   Jan 20 2007, 14:08
|- - lexus.mephi   Цитата(makc @ Jan 20 2007, 14:08) Очень п...   Jan 20 2007, 18:28
|- - makc   Цитата(lexus.mephi @ Jan 20 2007, 18:28) ...   Jan 20 2007, 18:41
|- - lexus.mephi   Ну да, там по нулям. И как быть?   Jan 20 2007, 19:06
|- - makc   Цитата(lexus.mephi @ Jan 20 2007, 19:06) ...   Jan 20 2007, 19:13
|- - lexus.mephi   Я имел ввиду что на этой закладке вообще пусто. Во...   Jan 20 2007, 20:44
- - makc   На будущее - не нужно цитировать файлы. Их можно з...   Jan 20 2007, 21:42
|- - lexus.mephi   А у тебя какой ModelSim? Я просто заметил, что у т...   Jan 20 2007, 22:49
|- - makc   Цитата(lexus.mephi @ Jan 20 2007, 22:49) ...   Jan 20 2007, 22:53
|- - lexus.mephi   Макс, спасибо тебе огромное!!! Я подум...   Jan 20 2007, 23:56
|- - lexus.mephi   УРА!!! Перекомпилил и все пучком =))) ...   Jan 21 2007, 00:16
- - makc   Кнопка внизу из опций модератора, которые доступны...   Jan 21 2007, 11:28


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 02:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016