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

 
 
> Глобальный ресет и Xilinx
dr.Livsy
сообщение Aug 4 2009, 17:51
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 12-09-06
Пользователь №: 20 314



При изучении руководства по 3-му спартану наткнулся на пару интересных статей от Xilinx`a:
WP272: Get Smart About Reset: Think Local, Not Global, WP275: Get Your Priorities Right - Make Your Design up to 50% Smaller.
В них убедительно доказывается, что использование глобального ресета в ПЛИС не есть хорошо с точки зрения надежности и места занимаемого проектом в ПЛИС. При этом говорится, что при конфигурации ПЛИС вырабатывает сигнал Global Set\Reset и все триггеры и память переводяться в преодпределенное состояние. Однако, насколько я понял это состояние задается с помощью аттрибутов для библиотечных элементов. А как сделать аналогичную вещь для любой синхронной схемы без использования библиотечных триггеров и памяти от Xilinx?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
Boris_TS
сообщение Aug 4 2009, 18:49
Сообщение #2


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(dr.Livsy @ Aug 4 2009, 21:51) *
А как сделать аналогичную вещь для любой синхронной схемы без использования библиотечных триггеров и памяти от Xilinx?

Я так понимаю "без использования библиотечных триггеров" означает, что Вы хотите это описать на каком-либо языке.

Если для синтеза с языка использовать HDL, то начальное состояние триггера (ОЗУ и п.т.) задается через начальное значение переменной (сигнала), которая после синтеза превратиться в выход триггера.

Для VDHL это выглядит примерно так:
Код
library ieee;
library ieee;
use ieee.std_logic_1164.all;

entity FDRE_0 is
port(
    C, D, CE, PRE, RST:    in    std_logic;
    Q:                    out    std_logic );
end entity FDRE_0;

architecture FDRE_0_BODY of FDRE_0 is
begin
    process (C)
        variable    FF:    std_logic := '1';
    begin
        if rising_edge(C) then
            if PRE = '1' then
                FF := '1';
            elsif RST = '1' then
                FF := '0';
            elsif CE='1' then
                FF := D;
            end if;
        end if;
        Q <= FF;
    end process;
end FDRE_0_BODY;

В итоге получается триггер с начальным состоянием '1'.
Т.к. начальное состояние '1', то наивысший приоритет должен имеет сброс в '1' (т.е. PRE) - поэтому в основном if он проверяется первым.
Следующий по приоритету идёт "инверсный" сброс - в приведенном примере это RST.
Последним по приоритету идет сигнал CE и входные данные D (выход LUT или прямой вход на триггер мимо LUT).
Go to the top of the page
 
+Quote Post
des00
сообщение Aug 5 2009, 02:45
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(dr.Livsy @ Aug 4 2009, 11:51) *
При изучении руководства по 3-му спартану наткнулся на пару интересных статей от Xilinx`a:
WP272: Get Smart About Reset: Think Local, Not Global, WP275: Get Your Priorities Right - Make Your Design up to 50% Smaller.
В них убедительно доказывается, что использование глобального ресета в ПЛИС не есть хорошо с точки зрения надежности и места занимаемого проектом в ПЛИС.


насколько я помню там доказывается не это, там утверждается что во всем важна мера и нужно сбрасывать только то, что должно быть сброшено. А с учетом архитектуры хилых это дает дополнительные бонусы в производительности и ресурсе и не факт что это будет так у альтер, латексов и других чипах.

Цитата
При этом говорится, что при конфигурации ПЛИС вырабатывает сигнал Global Set\Reset и все триггеры и память переводяться в преодпределенное состояние. Однако, насколько я понял это состояние задается с помощью аттрибутов для библиотечных элементов. А как сделать аналогичную вещь для любой синхронной схемы без использования библиотечных триггеров и памяти от Xilinx?


если синтезатор поддерживает синтез начальной инициализации то решение тривиально, в противном случае, если нет такой опции синтезатора (как например Power Up Don't Care у альтер) ручками.


--------------------
Go to the top of the page
 
+Quote Post
dr.Livsy
сообщение Aug 5 2009, 16:10
Сообщение #4





Группа: Новичок
Сообщений: 2
Регистрация: 12-09-06
Пользователь №: 20 314



Спасибо, разобрался. Попробовал сегодня на виртексе, все работает =)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:36
Рейтинг@Mail.ru


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