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

 
 
> Не работает кусок логики, Вроде элементарно, но не работает..туплю...
Саша Z
сообщение May 11 2009, 15:34
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Простой кусочек кода проэкта не работает, сижу пол дня над ним, туплю, не понимаю почему молчит.

Код
out_swithing: process(nRST, CLK, OUT_SW, PATTERN)    
    begin
        if rising_edge(CLK) then
        
            if nRST = RST_pol then
                
                OUT_SW_sig <= OUT_SW;
                
                PATTERN_sig <= PATTERN;
                
            else
                OUT_SW_sig <= OUT_SW_sig;
                
                PATTERN_sig <= PATTERN_sig;
            end if;
            
        end if;
end process;


смысл кода в том что-бы синхронно читать вход OUT_SW в внутренний сигнал OUT_SW_sig только во время активизации глобального сброса (nRST). Когда-же сброс не активизирован - сигнал удерживает последнее значение. Это нужно для конфигурации системы.

OUT_SW - определен в entity как input, std_logic;
OUT_SW_sig - определен как сигнал в architecture
OUT_SW_sig - выводится на выход для debugа

Второй вход/сигнал не проверял еще.

В функциональной симуляции работает нормально, в тайминговой и в железе - не работает, т.е. OUT_SW_sig заткнут постоянно в '0';
Когда в процессе debugа ставлю постоянное значение на выход OUT_SW_sig (например '1') - нормально выводится на выход в железе.
Когда вешаю на OUT_SW_sig сам вход OUT_SW и им играюсь (он на dip-switchе) - тоже нормально работает в железе.

А вот в коде - никак.

Чего делаю левого ?

Спасибо..

P.S. FPGA - Lattice ECP2 (LFE2-50E)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sazh
сообщение May 11 2009, 17:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Саша Z @ May 11 2009, 19:34) *
Это нужно для конфигурации системы.


А зачем при конфигурации системы что то считывать извне. Где гарантия, что это извне уже сконфигурировалось.
По идее, При конфигурации системы заботятся о выходах, игнорируя входы?
Go to the top of the page
 
+Quote Post
Саша Z
сообщение May 11 2009, 20:30
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(sazh @ May 11 2009, 21:54) *
А зачем при конфигурации системы что то считывать извне. Где гарантия, что это извне уже сконфигурировалось.
По идее, При конфигурации системы заботятся о выходах, игнорируя входы?


Именно как поясним выше SM.
Такой режим конфигурации системы (не IOs а именно системная конфигурация) не редко употребляется. Например на моей прошлой работе был evaluation system нашего процессора цифорвых камер, там процессор имел целый ряд конфигурационных входов которые во время активного Resetа функционировали именно как конфигурационные входа, а затем после Resetа - автоматически конфигурирвались как IO. Конфигурация системы например определяла с каким типом карточки памяти система должан работать, тип подключенного дисплея и т.д. и т.п.


Цитата(SM @ May 11 2009, 20:39) *
Не, не подскажу. Я от Вас об этой возможности впервые слышу, тоже было бы интересно. Я просто везде где могу GSR отключаю в таких проектах, где не надо все ресетить. И, докучи, завожу его на жесткую 1, чтобы всякие там синтезаторы самодеятельностью не занимались.

Почитал я тут, полистал... http://www.latticesemi.com/dynamic/view_do...cument_id=31408 Как я понял, надо вынести этот блок в отдельный модуль, и при его подключении указать:
Код
module_name mod_inst( signal list) /* synthesis GSR=DISABLED */;


Только расскажите, получилось ли smile.gif


Пытаюсь разбираться с GSRом...
Свою проблему вроде решил, хотя пока не проверял в железе (я уже дома, не на работе), но в timing симуляции уже работает.
В чем суть: у меня в дизайне я использовал GSR как Global, т.е. explicitly делал его instantiation в топ модуле.
Существует атрибут GSR который можно исползовать по идее как ENABLE или DISABLE для конкретного сигнала (регистра ессно). Что-бы использовать атрибут нужно его вначале обьвить, но это проблема если уже есть GSR instantiation (ибо атрибут тоже называется GSR).

В общем, на данный момент я отменил GSR instantiation (значит согласно тому PDFу он работате как inferred), и теперь не нужно и атрибута ибо GSR уже не действует на сей сигнал.

Но тогда мне опять непонятно применение этого атрибута.... wink.gif
Кроме того вот надыбал такую errata на форуме Латтиса:
http://www.latticesemi.com/forums/forum/me...p;enterthread=y

Завтра еще раз перечитаю тот PDF по GSRу и сосстыкуюсь с саппортом Lattice - пусть разьяснят что и как с GSRом...
Go to the top of the page
 
+Quote Post
SM
сообщение May 12 2009, 06:48
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Саша Z @ May 12 2009, 00:30) *
Что-бы использовать атрибут нужно его вначале обьвить, но это проблема если уже есть GSR instantiation (ибо атрибут тоже называется GSR).

Ну это на раз обходится методом написания того модуля, где это нужно, на верилоге.

ЗЫ. Потом расскажите пожалуста, что саппорт про GSR наговорит... Уж очень интересно, все таки реально управлять неподключением GSR-а к отдельным регистрам, или нет...
Go to the top of the page
 
+Quote Post
Саша Z
сообщение May 14 2009, 06:38
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(SM @ May 12 2009, 09:48) *
Ну это на раз обходится методом написания того модуля, где это нужно, на верилоге.

ЗЫ. Потом расскажите пожалуста, что саппорт про GSR наговорит... Уж очень интересно, все таки реально управлять неподключением GSR-а к отдельным регистрам, или нет...


Получил частичный ответ от саппорта. Если определен GSR как Global - он обнуляет все абсолютно флип-флопы чипа там где Reset не определен explicitly логикой. Что-бы сделать так чтоб определенный сигнал/флип-флоп не обнулялся автоматом Global GSRом - можно дать ему gated Reset, т.е. через логику (входной сигнал Resetа подогнать к флип-флопу через какой-нить gate).

Сам пока не проверял, у себя просто отменил Global GSR и оставил inferred.
Go to the top of the page
 
+Quote Post
SM
сообщение May 14 2009, 09:09
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Саша Z @ May 14 2009, 10:38) *
Если определен GSR как Global

А под определением как Global понимается использование примитива GSR в исходнике?
Go to the top of the page
 
+Quote Post
Саша Z
сообщение May 14 2009, 15:32
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(SM @ May 14 2009, 12:09) *
А под определением как Global понимается использование примитива GSR в исходнике?


Да, instantiation GSRа как блока в сорсе.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 01:47
Рейтинг@Mail.ru


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