|
Проблема синтеза под Altera, Не моделируется синтезированная схема |
|
|
|
Sep 9 2005, 11:48
|
Частый гость
 
Группа: Свой
Сообщений: 81
Регистрация: 31-01-05
Из: Москва
Пользователь №: 2 324

|
Дроброго времени суток. Если кто может-помогите Проблема вот в чем: Есть код на VHDL. Вот он: Цитата library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.std_logic_arith.all;
entity imit is port( clk : in STD_LOGIC; enable : in STD_LOGIC; synh_out : out STD_LOGIC; data_strob : out STD_LOGIC; data_out : out STD_LOGIC_VECTOR(31 downto 0) ); end imit;
--}} End of automatically maintained section
architecture rl of imit is constant t_min:integer:=100; --100 ns
begin
p1: process (clk, enable)
constant temp1:STD_LOGIC_VECTOR(31 downto 0):=B"00000001100000000110010000110011"; constant temp2:STD_LOGIC_VECTOR(31 downto 24):=X"02"; constant temp3:STD_LOGIC_VECTOR(31 downto 0):=B"00000011000000010000001010111100"; constant temp4:STD_LOGIC_VECTOR(31 downto 0):=B"11100100000000000000000000001000"; variable count_temp:integer range 0 to 256 :=0; variable t1:integer:=750; variable temp:integer range 0 to 16777215 :=0; variable num:integer range 0 to 32;
begin if enable='0' then count_temp:=0; t1:=750; data_out<=(others=>'0'); data_strob<='1'; synh_out<='1'; temp:=0; num:=0; else if clk'event and clk='1' then --CLK rising edge count_temp:=count_temp+1; end if; if clk'event and clk='0' then case count_temp is when 1 =>data_strob<='0'; when 2 =>synh_out<='0'; data_out<=temp1; when 3 => synh_out<='1'; when 4 =>synh_out<='0'; ------------------------ temp:=temp+t1; data_out<=temp2 & CONV_STD_LOGIC_VECTOR(temp,24); num:=num+1; if t1 = 750 and num = 20 then t1:=1000; num:=0; elsif t1=1000 and num=20 then t1:=750; num:=0; end if; ------------------------ when 5 => synh_out<='1'; when 6 =>synh_out<='0'; data_out<=temp3; when 7 => synh_out<='1'; when 8 =>synh_out<='0'; data_out<=temp4; when 9 => synh_out<='1'; when 11 =>data_strob<='1'; when 150 => if t1=750 then count_temp:=0; end if; when 200 => if t1=1000 then count_temp:=0; end if; when others => null; end case; end if; end if; end process p1; end rl; он замечательно моделируется в A-HDL но при попытке моделировать синтезированое устройство в Quartus не чего не происходит т е результате состояния выходов не меняются. ПЛИС-MAX 7000S Вообщем вопрос что я делаю не так, и если объяснять долго то где посмотреть. PS До этого с ПЛИС не работал. Так что сильно не бейте
|
|
|
|
|
 |
Ответов
|
Sep 9 2005, 13:08
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(vetal @ Sep 9 2005, 07:58) Код ------------------------------------------------------------------- -- edge detection ------------------------------------------------------------------- FUNCTION rising_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN IS BEGIN RETURN (s'EVENT AND (To_X01(s) = '1') AND (To_X01(s'LAST_VALUE) = '0')); END; Разница на лицо. eventы иногда полезнее при симуляции, к примеру, когда сигнал выходит их 'X' в '1', при использовании *_edge, симулятор отработает только переход из '0' в '1' и наоборот. Иногда это спасает от введения в проект дополнительных цепей тестового сброса/инициализации. На самом деле корректнее использовать *_edge. а по моему даже для симуляции лучше исползовать именно _edge, т.к. лучше видны проблемы с генераторами тестовых сигналов. ИМХО event были заложены для bit_vector у которого всего 2 состояния, но не для std_logic.
--------------------
|
|
|
|
|
Sep 9 2005, 13:25
|

Гуру
     
Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553

|
Цитата(des00 @ Sep 9 2005, 16:08) Цитата(vetal @ Sep 9 2005, 07:58) Код ------------------------------------------------------------------- -- edge detection ------------------------------------------------------------------- FUNCTION rising_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN IS BEGIN RETURN (s'EVENT AND (To_X01(s) = '1') AND (To_X01(s'LAST_VALUE) = '0')); END; Разница на лицо. eventы иногда полезнее при симуляции, к примеру, когда сигнал выходит их 'X' в '1', при использовании *_edge, симулятор отработает только переход из '0' в '1' и наоборот. Иногда это спасает от введения в проект дополнительных цепей тестового сброса/инициализации. На самом деле корректнее использовать *_edge. а по моему даже для симуляции лучше исползовать именно _edge, т.к. лучше видны проблемы с генераторами тестовых сигналов. ИМХО event были заложены для bit_vector у которого всего 2 состояния, но не для std_logic. Согласен на 200%. Все зависит от того как он начинал. Во многом к использованию event приучают авторы учебной литературы, и в результате человек садится на него надолго. Хотя есть такие случаи, в которых можно и не просимулировать, к примеру при post P&R тестировании при наличии "смешных" обратных связей можно и не выползти из 'X' окружения, т.к. в симуляторы триггеры инициализируются в X, а реально на sram lut fpga там всегда нули, по крайней мере у меня из-за этого не было сбоев.
|
|
|
|
Сообщений в этой теме
White Проблема синтеза под Altera Sep 9 2005, 11:48 des00 else
if clk'event and clk='1' then... Sep 9 2005, 11:58 andrew_b Цитата(des00 @ Sep 9 2005, 15:58)else
... Sep 9 2005, 12:13 Iouri count_temp желательно вынести в отдельный процесс
... Sep 9 2005, 12:31 des00 Цитата(Iouri @ Sep 9 2005, 07:31)count_temp ж... Sep 9 2005, 12:37   des00 уважаемый Vetal вы не могли бы ответить мне в неок... Sep 9 2005, 13:33 White Спасибо всем за советы. Разобрался - все вроде раб... Sep 10 2005, 11:53 White К сожалению приходится возобновлять тему
Продолж... Sep 12 2005, 13:17 des00 Цитата(White @ Sep 12 2005, 08:17)К сожалению... Sep 12 2005, 13:39 White Цитатане вижу ничего странного, кроме может быть т... Sep 12 2005, 13:48 des00 Цитата(White @ Sep 12 2005, 08:48)так и что ж... Sep 12 2005, 14:05 White Ок посмотрим в железе, а там видно будет.
При од... Sep 12 2005, 14:27 vetal Ни одна программа не запакует триггеры в эвв max7s... Sep 12 2005, 16:57 des00 Цитата(vetal @ Sep 12 2005, 11:57)Ни одна про... Sep 13 2005, 04:53 sazh (C VHDL не знаком. Посмотрел в Квартусе в RTL п... Sep 12 2005, 17:49 des00 Раз пошла такая пьянка, то ИМХО по моим иследовани... Sep 13 2005, 05:31 vetal sazh : Вы не туда смотрите. На RTL действительно в... Sep 12 2005, 19:31 sazh to Vetal:
Я посмотрел на плюсик в Proekt Navigator... Sep 13 2005, 06:31 White 2 Vetal
ЦитатаWhite: добавьте следующие строчки м... Sep 13 2005, 13:02 des00 Цитатаа что это изменит ? в бинарном виде мне в да... Sep 13 2005, 13:18 White ЦитатаЦитата
Но в принципе идея понятна, единствен... Sep 13 2005, 13:36 vetal Аттрибуты которые я вам сказал написать предназнач... Sep 13 2005, 13:37 White ЦитатаАттрибуты которые я вам сказал написать пред... Sep 14 2005, 09:21 vetal Выключите так же:
Remove duplicate registers -off.... Sep 14 2005, 09:37 des00 Насчет счетчика и всех асинхронно/синхронных дел
... Sep 14 2005, 09:52 White 2 vetal Спасибо за советы все заработало
2 d... Sep 14 2005, 10:07 des00 Цитата(White @ Sep 14 2005, 05:07)За ссылки н... Sep 14 2005, 11:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|