Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Циклический регистр.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Iptash
Здравствуйте все.
вот простой циклический регистр:
Код
...    
    always_ff @ (posedge clk, negedge res) begin
     if(res == 1'b0)
        temp <= 16'b0000000000000001;
     else
        temp[15:0] <= {temp[14:0],temp[15]};    
    end    
    
...

ну почему то в симуляторе Quartus v9.1 младший бит всегда в 1 кроме когда там должен быть 1 там 0.
В Questa Sim, там все нормально.
EvgenyNik
Смотрите его как внутренний в составе проекта? У меня так бывает. Назначте выводом - покажет реальную картину.
Iptash
Цитата(EvgenyNik @ Nov 24 2012, 22:46) *
Смотрите его как внутренний в составе проекта? У меня так бывает. Назначте выводом - покажет реальную картину.

Внутренний. Сейчас попробую на вывод назначить.

Действительно, назначил на вывод и все нормально. Блин, а в железо как ляжет?
ReAl
Цитата(Iptash @ Nov 24 2012, 19:39) *
ну почему то в симуляторе Quartus v9.1 младший бит всегда в 1 кроме когда там должен быть 1 там 0.
Может, это not gate push-back?
Он делает
Код
...    
    always_ff @ (posedge clk, negedge res) begin
     if(res == 1'b0)
        temp <= 16'b0000000000000000; // так ему удобнее, но temp[0] становится инверсным
     else
        temp[15:0] <= {temp[14:1],~temp[0],~temp[15]};    
    end    
...

и везде у получателей вход temp[0] инвертирует, благо, инверсия даётся даром.

Попробуйте запретить not gate push-back и опять посмотреть внутренний
Iptash
Цитата(ReAl @ Nov 24 2012, 22:56) *
...
Попробуйте запретить not gate push-back и опять посмотреть внутренний

А где это?, я что то не нашел.
ReAl
Цитата(Iptash @ Nov 24 2012, 21:12) *
А где это?, я что то не нашел.

На весь проект
Assignments -- Settings -- Analysis & Synthesis settings -- More settings -- NOT gate Push-Back -- Off

Только для temp[]
Правая кнопка мыша на имени, Locate in -- assignment editor и там в assignment name начинаете набирать not.. оно вывалит продолжения на выбор. В следующей колноке Off
Iptash
Цитата(ReAl @ Nov 24 2012, 22:56) *
...

Попробуйте запретить not gate push-back и опять посмотреть внутренний

Все, так правильно работает. Спасибо всем.
А если бы так не сделал, то в железе как бы это работало?
ReAl
В железе всё работает, я же писал -- он просто у всех получатеелй этого бита temp[0] ставит на входах инверсию, чтобы вернуть этот бит к правильному виду. А сбрасывает триггер в 0, а не в 1.
После загрузки все триггера в 0 сами собой, тут он увидел, что res это сброс в начальное состояние. И решил сделать так, чтобы это состояние совпадало с тем, что после загрузки. Везде по цепочке проведя эквивалентное преобразование.
Iptash
Цитата(ReAl @ Nov 25 2012, 01:53) *
В железе всё работает...

Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.