[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено SAZH 14 января 2006 г. 20:11
В ответ на: Вобщем одним словом нужно описать микросхему 7497, но проще похоже ее просто в код вставить :( отправлено <font color=gray>MALLOY</font> 14 января 2006 г. 14:37

Такой подход неприемлем при работе с программируемой логикой.
Потому что все пакеты заточены прежде всего под одноклоковую глобальную синхронизацию. Если вдруг появиться многоклоковая, нужно разбираться с установками пакета. Иначе пролетите с временами установки и удержания данных относительно клоков.
А это значит, что качественный макрос должен начинаться и кончаться триггером.
Все установки и загрузки только синхронные.
В противном случае Вы не сможете его переносить от проекта в проект.
Посмотрите на макрос 7497. Клок приходит на логику. Значит глобальной синхронизации не будет. Выходы нестробируемая логика. Значит может быть вся в пичках на каком либо этапе изменения проекта.
Более того, макросы повторяющие влоб интегральные микросхемы, избыточны. Это правильно для микросхем средней степени интеграции. Для минимизации ассортимента закупки. И неприемлемо для пакета. Синтезатор лишнее все равно выбросит. Более того все это слеплено на базовых библиотечных примитивах. Ради чего ковыряться на гейтовом уровне..
А ведь пакет может опираться не только на базовые примитивы, но и на базовые мегафункции. ВСЕ можно описать с этим минимальным набором.
А это уже поведенческое описание. Значит это легко ложиться на языки описания. Ваша задача так описать свой проект, чтобы он лег на базовые примитивы или мегафункции.
Что касается Вашей задачи. Если я правильно понял, Вам нужен вобулирующий период повторения. Вот пример.

module ct_vobul
(
input global_clk,
input s_set,
input [3:0] data,
output reg cs
);

reg [3:0] ct;

always @(posedge global_clk)
begin
if (s_set)
ct <= data;
else if (ct == 4'd1)
ct <= data;
else
ct <= ct - 1'b1;
end

always @(posedge global_clk)
begin
cs <= (ct == 4'd1);
end

endmodule


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru