Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Программируемые логические схемы и их применение»

Ответ:

Отправлено lutik 27 марта 2007 г. 12:41
В ответ на: Ответ: Действительно + отправлено axalay 26 марта 2007 г. 11:14

думается ворнинги нада внимательнее изучать при симуляции.
а генерить он конечно будет. потому как модельке аПсолютно побоку какие числа делить/умножать/складывать
модель VCO примерно так выглядит (тут для блекфина, но смысл не меняется и идея взята из модели PLL S3)

VCO_GEN:
block
--------------------
signal startup : boolean := true;
signal startup_cnt : integer := 5;
--------------------
signal period : time := 0ps;
signal delta : time := 1ps;
--------------------
signal VCO_EN : boolean := false;

signal VCO_FD0 : std_logic := '0';
signal VCO_FD1 : std_logic := '0';
--------------------
begin
--****************************
process begin
if CLKIN = '1' and CLKIN'event then
if startup_cnt /= 0 then
startup_cnt <= startup_cnt -1;
else
startup <= false;
VCO_EN <= not startup;
end if;
end if;
if MSEL'event or DF'event or period'event then
startup <= true;
startup_cnt <= 5;
VCO_EN <= false;
end if;
wait on CLKIN, MSEL, DF;
end process;

PLL_LOCKED <= '1' when not(startup) else '0';

process -- calculate period of input frequency
variable prv_time : time := 0ps;
variable cur_time : time := 0ps;
begin
wait until CLKIN = '1' and CLKIN'event;
prv_time := cur_time;
cur_time := now;
if not(startup) then
period <= now - prv_time;
end if;
end process;

process begin -- phase shifter
if DF = '0' then
delta <= period / conv_integer(unsigned(MSEL));
else
delta <= period / conv_integer(unsigned(MSEL)) / 2;
end if;
assert delta < 2.5ns
report "Frequency to large!! In module : */CMG/VCO_GEN"
severity FAILURE;
wait on MSEL, DF, period;
end process;

VCO <= not VCO after delta/2 when VCO_EN = true else '0' ;
--****************************
end block;

вот асерт вам скорее всего летел в ворнинги тока вы на него не смотрели

Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
увеличьте 2 вдвое:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru