Перейти к содержанию

Sobol'

Участник
  • Публикаций

    51
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Sobol'

  • Звание
    Участник
  1. Изначально температура была 27 градусов. Грели тем, что под руку попалось. Сегодня под руку попался резистор 1ом и лабораторный источник тока... приложили бедолагу-резистор сверху к ПЛИС и смотрели на осциллографе, как ползет задержка. Температуру мерили пирометром.
  2. Если вдруг кому интересно. на чипе epm3064 мерили сейчас реальную задержку осциллографом. Каждый Lcell увеличивает задержку примерно на 2.5нс. Цепочка из 10 буферов при комнатной температуре сдвинула входной сигнал на 27ns. Нагрели ПЛИС до 65 градусов, задержка увеличилась на 2.4ns.
  3. ТС хотел получить задержку тактового сигнала примерно на один лапоть силами означенной CPLD. Партия устройств маленькая, работать будут при комнатной температуре. ПЛИСина эта уже имеется на борту устройства. И, да, количество инверторов будет подбираться экспериментально для каждой платы. Да, это такой костыль. Да, мне это все не нравится. Да, руководство осознает что творит, но именно оно именно так поставило задачу. Нет, тактовую логику использовать нельзя. Еще раз говорю, что мне это все не нравится, но другого пути пока нет. Lcell-буферы вполне меня устраивают, хотел разобраться с директивами компилятора чисто для общего развития.
  4. Цитата(ViKo @ Dec 15 2017, 15:00) wire keep_wire /* synthesis keep */; Спасибо, добрый человек! У меня получилось: Кодmodule temp_altera ( input clk_in, output clk_out_delay     ); wire keep_wire_1 /* synthesis keep */; assign keep_wire_1 =  !clk_in; wire keep_wire_2 /* synthesis keep */; assign keep_wire_2 =  !keep_wire_1; wire keep_wire_3 /* synthesis keep */; assign keep_wire_3 =  !keep_wire_2; assign clk_out_delay = keep_wire_3; endmodule
  5. с lcell разобрался, спасибо. Однако все-таки интересно, как отключить оптимизацию в конкретном куске модуля. /*noprune*/ не помогло, явно что-то делаю не так: Кодmodule temp_altera ( input clk_in, output clk_out_delay     ); /*synthesis noprune*/ wire [3:0] line = { line [2:0], ~clk_in}; /*synthesis noprune*/ assign clk_out_delay = line[3]; endmodule
  6. Всем привет! Задача - получить задержку сигнала. ПЛИС - altera EPM3064. Среда - QUARTUS II 13.0. Мне бы хотелось просто поставить некоторое количество инверторов между входом и выходом, но при синтезе оптимизатор их убирает. Пробовал директиву /*synthesis keep*/, не помогло. Подскажите пожалуйста, как поступить.
  7. Цитата(woofer46 @ Feb 8 2016, 13:44) Спасибо, я хочу именно чтобы сравнивались свежие данные (полученные в текущем такте) с константой. Я жду когда в старших трех битах регистра появится 010 wire [31:0] new_data = { DATA_IN, DATA_PRELOAD[31:1] }; always@(posedge CLK) begin DATA_PRELOAD <= new_data; if(new_data[31:29] == 3'b010) begin /// end end
  8. Так, на всякий случай. "1" имеет размерность 32 бита, "1'b1" - 1 бит.
  9. я бы еще явно описал то, что должен делать триггер, когда оба сигнала в единице. Например так: always @* begin if (r && !s) q <= 1'b0; else if (!r && s) q <= 1'b1; else if (r && s) q <= 1'bZ; else q <= q; end последнюю строчку можно выкинуть.
  10. Всем спасибо! Я думал там есть внутренние подтягивающие резисторы. Буду пробовать ставить внешние.
  11. Все 4 пина JTAG должны быть подтянуты через килоОм к плюсу, верно?
  12. Доброго времени суток, уважаемые! Проблема следующая. Сделали несколько одинаковых устройств на основе альтеровской EPM3064 (семейство MAX3000A). После прошивки все заработало без проблем, аж порадовался. Повалялись эти девайсы на столе пару недель без дела и после этого отказались работать. Перепрошил - заработали. В чем может быть проблема? Конфигурационная память в CPLD со временем затирается без питания? Или может просто бракованые микрухи попались?
  13. в данном случае mem - локальная переменная оператора if, следовательно вне "своего" оператора она не видна - все логично. Как решить Вашу проблему, чтобы все было красиво - чесно ХЗ. Смотрите директивы компилятора языка, возможно поможет.
  14. Надо продлить импульс сброса используя клок200. Запилить счетчик и растянуть сброс на несколько тактов клок200, так чтобы полученный сигнал гарантированно попал в период клок50.