User Tag List

Показано с 1 по 10 из 2727

Тема: Цифровая археология: 1801 и все-все-все

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    Вот например, строки 1540-1541:
    Код:
    assign cpred   = {c[14:0], cl};
    assign c       = (cpred & oxy) | (~cpred & axy & oxy);
    Дык, это не замкнутая петля. Каждый бит результата сам от себя не зависит, а только от предыдущего разряда. Перепишем явно с указанием разрядов:
    Код:
    assign cpred[15:0]   = {c[14:0], cl};
    assign c[15:0]     = (cpred[15:0] & oxy[15:0]) | (~cpred[15:0] & axy[15:0] & oxy[15:0]);
    Затем рассмотрим, например, разряд c[1]:
    Код:
    assign cpred[1]   = c[0];
    assign c[1]     = (cpred[1] & oxy[1]) | (~cpred[1] & axy[1] & oxy[1]);
    Делаем подстановку:
    Код:
    assign c[1]     = (c[0] & oxy[1]) | (~c[0] & axy[1] & oxy[1]);
    Итого: c[i+1] зависит от c[i], но никак от самого себя. Вычисляем их в таком порядке: c[0], c[1] ... c[14], c[15] и удается все вычислить за один проход. Ну или через сдвиг сразу словом.
    Update: тут я, кажется, погорячился - сразу за одну операцию не получится, надо вычислять именно последовательно - разряд за разрядом.

    Цитата Сообщение от gid Посмотреть сообщение
    Кстати, в alwaysе, начинающемся со строки 1014, с комментарием "ACLO edge detectors" нет ошибки? Там висящий блок begin end, который перебивает действие того, что было сделано ранее.
    Да, спасибо, это ошибка, согласно схемы должно быть так:
    Код:
    always @(posedge pin_clk_p)
    begin
       if (reset | aclo_ack)
          aclo <= 1'b0;
       else
          if (~pin_aclo)
             aclo <= 1'b1;
    
       if (pin_dclo | aclo_ack)
          acok <= 1'b0;
       else
          if (pin_aclo)
             acok <= 1'b1;
    end
    Цитата Сообщение от gid Посмотреть сообщение
    Например модуль vm1_vgen у меня выродился в одну линейную функцию из простых присваиваний, alwaysы там оказались не нужны.
    Да, это вот такой верилог, always @(*) вырождается/представляется в набор assign. В-общем-то, и наоборот все assign-ы можно переписать через always @(*). Но я сознательно использовал always для триггеров, а assign для комбинационной логики. Но пару мест все-таки попалось, где это введенное мной стилистическое правило не соблюлось.

    Цитата Сообщение от gid Посмотреть сообщение
    модуля, дискретным состояниям. Поэтому наверняка субмодуль можно описать в виде триггера блоком(ами) always с условиями которые соответствуют условиям always внутри субмодуля.
    Это да, а в чем вопрос? Представить модуль в виде объекта С++? Можно, но метод always объекта надо будет вызывать в методе always всей системы, и надо будет мониторить изменение выходов объекта. А если совсем не лезть внутрь, то не получится проанализировать и выстроить assign-ы так чтобы вычислить за один проход.
    Последний раз редактировалось Vslav; 22.04.2015 в 09:31.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 7
    Последнее: 28.06.2014, 17:50
  2. Микросхемы МПК 580,1801,1810 и другие...
    от Alex_Vac в разделе Барахолка (архив)
    Ответов: 44
    Последнее: 07.04.2012, 08:03
  3. ЦИФРОВАЯ МУЗЫКА НА ZX
    от AAA в разделе Музыка
    Ответов: 98
    Последнее: 18.09.2011, 22:33
  4. Учебный стенд УМПК-1801
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 12.05.2010, 16:52
  5. Цифровая музыка от Вадима Ермеева
    от zxmike в разделе Музыка
    Ответов: 2
    Последнее: 06.08.2007, 23:13

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •