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

 
 
> Lattice MachXO2 (Diamond 3.5), Начальная установка данных
sonycman
сообщение Oct 24 2015, 14:44
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Доброго времени суток!

Недавно начал разбираться с ПЛИС, осваиваю потихоньку семейство небольших CPLD MachXO2.

Возник вопрос к сообществу - как принято устанавливать дефолтные значения регистров данных внутри модулей (не массивов памяти)?
Может, кто подскажет из тех, кто знаком с кристаллами от Лэттиса.

К примеру, простой модуль:
Код
module counter_test(
                    input CLK,
                    input RESET_N,
                    output reg [7:0] LEDS
                    );
    
    reg [20:0] counter;
    
    reg [7:0] leds = 8'd64;
    
    initial
        begin
        leds = 8'd64;
        end
    
    always @ (posedge CLK)
        begin
        counter <= counter + 21'd1;
        LEDS <= leds;
        end
    
    always @ (posedge counter[19] or negedge RESET_N)
        begin
        if (!RESET_N)
            begin
            leds <= 8'd64;
            end
        else
            begin
            leds <= leds + 8'd1;
            end
        end
        
endmodule

Строка с инициализацией: reg [7:0] leds = 8'd64; и блок initial не синтезируются, к сожалению sad.gif

Остаётся вариант со сбросом на начальные значения по внешнему сигналу RESET_N, если вывести его на ножку чипа.
Но всё же хотелось бы использовать внутренние ресурсы, мне сброс не нужен как таковой, нужна только начальная установка после подачи питания.

Хотел использовать внутренние сигналы GSR и PUR, но не пойму, как их задействовать, чтобы сработала ветка модуля по входу RESET_N?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sonycman
сообщение Oct 24 2015, 17:11
Сообщение #2


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



В общем, насколько я понял, в случае MachXO2 для установки всех ненулевых регистров придётся выделять отдельный пин на корпусе, вешать на него кондёр и подтяжку резистором.
И уже с него заводить внутрь сигнал сброса.
Это при том, что мне нафиг не нужен внешний сброс... Вот шняга то sad.gif

Получается определить входной сигнал сброса в топ модуле, и синтезатор вешает на него глобальный сброс GSR.
Но роутер выводит этот сигнал на пин на корпусе кристалла, даже когда он не задан в .lpf файле - на первый попавшийся свободный пин.

Можно ли как-то запретить роутеру выводить этот сигнал наружу?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 25 2015, 07:59
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(sonycman @ Oct 24 2015, 20:11) *
В общем, насколько я понял, в случае MachXO2 для установки всех ненулевых регистров придётся выделять отдельный пин на корпусе, вешать на него кондёр и подтяжку резистором.
И уже с него заводить внутрь сигнал сброса.
Это при том, что мне нафиг не нужен внешний сброс... Вот шняга то sad.gif

Получается определить входной сигнал сброса в топ модуле, и синтезатор вешает на него глобальный сброс GSR.
Но роутер выводит этот сигнал на пин на корпусе кристалла, даже когда он не задан в .lpf файле - на первый попавшийся свободный пин.

Можно ли как-то запретить роутеру выводить этот сигнал наружу?

Можно создать сдвиговый регистр, который после конфигурирования устанавливается в ноль, и к старшему биту этого регистра подключить инверсный сброс. После загрузки конфигурации в регистр задвигаются единицы, после чего сброс завершится. Ведь клок для сдвигового регистра какой-то у вас будет, хотя бы внутренний осциллятор. Триггеры можно в крайнем случае задать с помощью примитивов из стандартной библиотеки Lattice, и, кстати, насчёт MachXO не уверен, а для ECP можно создавать триггеры, которые стартуют с единицы.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Oct 25 2015, 09:44
Сообщение #4


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Timmy @ Oct 25 2015, 11:59) *
Можно создать сдвиговый регистр, который после конфигурирования устанавливается в ноль, и к старшему биту этого регистра подключить инверсный сброс.

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

Вот почему бы примитив под этот внутренний сброс GSR лэтисовцам не сделать с назначаемым выходом?
А то вход сделали, который не всегда нужен, а выхода сброса почему то нет, надо надеятся на автоматику, которая сама должна найти в схеме асинхронный сброс и подсоединиться к нему, что она делает не всегда так, как хотелось бы...

ЗЫ: посмотрел в квартусе, как альтера реализует в синтезе начальную установку - дополнительной логикой, ставятся инверторы для битов, установленных как бы в единички.
Наворочено!
Смотрится всё потом весьма громоздко, конечно.

ЗЗЫ: никто не знает, есть ли в мире форум по Лэттисам, подобие альтеровского?
На офф. сайте вроде нет, хотя раньше что-то было, как я понимаю?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 25 2015, 15:06
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(sonycman @ Oct 25 2015, 12:44) *
Ага, спасибо, сегодня уже делал похожий блок сброса, на счётчике, правда.
Работает, но тогда надо отключать фишку под именем GSR, что не очень хорошо, как я понимаю.

Вот почему бы примитив под этот внутренний сброс GSR лэтисовцам не сделать с назначаемым выходом?
А то вход сделали, который не всегда нужен, а выхода сброса почему то нет, надо надеятся на автоматику, которая сама должна найти в схеме асинхронный сброс и подсоединиться к нему, что она делает не всегда так, как хотелось бы...

Для генератора сброса можно индивидуально отключить GSR, либо атрибутом, либо использовав для него примитивы без GSR.
А реализован GSR действительно очень извращённо. На самом деле вы можете сами присоединить вход примитива GSR к своему сигналу управляющему общим сбросом, тогда точно именно он будет работать через GSR, однако при этом в настройках симплифая GSR всё равно должен быть включён.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sonycman   Lattice MachXO2 (Diamond 3.5)   Oct 24 2015, 14:44
- - qwa   Цитата(sonycman @ Oct 24 2015, 17:44) Стр...   Oct 24 2015, 14:57
|- - sonycman   Цитата(qwa @ Oct 24 2015, 18:57) Вообще,п...   Oct 24 2015, 15:00
|- - qwa   Цитата(sonycman @ Oct 24 2015, 18:00) Я у...   Oct 24 2015, 15:11
|- - m_m   Цитата(qwa @ Oct 24 2015, 18:11) Синтезир...   Oct 26 2015, 14:50
|- - sonycman   Цитата(m_m @ Oct 26 2015, 18:50) В Даймон...   Oct 27 2015, 01:38
|- - qwa   Цитата(m_m @ Oct 26 2015, 17:50) В Даймон...   Oct 27 2015, 11:12
- - _Sam_   Попробуйте КодPUR PUR_INST (.PUR (<pow...   Oct 27 2015, 12:59
|- - sonycman   Цитата(_Sam_ @ Oct 27 2015, 16:59) Попроб...   Oct 27 2015, 14:03
- - _Sam_   Да я ерунду написал так краем глаза увидел и не ра...   Oct 27 2015, 14:25
- - sonycman   Благодарю, потом обязательно попробую сравнить син...   Oct 27 2015, 14:45
- - olefil   А чем сброс от PLL не нравится, частоту в любом сл...   Oct 29 2015, 05:02
|- - sonycman   Цитата(olefil @ Oct 29 2015, 09:02) А чем...   Oct 29 2015, 08:21
|- - Мур   Цитата(olefil @ Oct 29 2015, 08:02) А чем...   Dec 14 2015, 09:19
- - Мур   Это пример для Lattice iCE40   Dec 15 2015, 09:14
- - sonycman   Да, PLL при слёте сигнала LOCK рекомендуется прину...   Dec 15 2015, 09:46
- - Мур   Error: Module PUR is not a valid primitive.... PUR...   Dec 15 2015, 17:57
- - sonycman   PUR это Power Up Reset - начальный сброс при подач...   Dec 15 2015, 21:04
|- - Мур   Цитата(sonycman @ Dec 16 2015, 00:04) Тол...   Dec 16 2015, 07:24
|- - sonycman   Цитата(Мур @ Dec 16 2015, 11:24) Мне инте...   Dec 16 2015, 10:03
- - Мур   Это из iCE40FamilyHandbook Все красиво, ...но п...   Dec 16 2015, 10:05
- - sonycman   Ну что тут недоступного-то? Это схема внутреннего ...   Dec 16 2015, 23:13
- - Мур   Цитата(sonycman @ Dec 17 2015, 02:13) Ну ...   Dec 17 2015, 10:18


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

 


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


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