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

 
 
 
Reply to this topicStart new topic
> Циклический регистр., непонятки.
Iptash
сообщение Nov 24 2012, 17:39
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Здравствуйте все.
вот простой циклический регистр:
Код
...    
    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, там все нормально.
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Nov 24 2012, 18:46
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Смотрите его как внутренний в составе проекта? У меня так бывает. Назначте выводом - покажет реальную картину.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
Iptash
сообщение Nov 24 2012, 18:56
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



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

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

Действительно, назначил на вывод и все нормально. Блин, а в железо как ляжет?
Go to the top of the page
 
+Quote Post
ReAl
сообщение Nov 24 2012, 18:56
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(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 и опять посмотреть внутренний


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Iptash
сообщение Nov 24 2012, 19:12
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



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

А где это?, я что то не нашел.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Nov 24 2012, 19:21
Сообщение #6


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(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


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Iptash
сообщение Nov 24 2012, 19:43
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Цитата(ReAl @ Nov 24 2012, 22:56) *
...

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

Все, так правильно работает. Спасибо всем.
А если бы так не сделал, то в железе как бы это работало?
Go to the top of the page
 
+Quote Post
ReAl
сообщение Nov 24 2012, 21:53
Сообщение #8


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



В железе всё работает, я же писал -- он просто у всех получатеелй этого бита temp[0] ставит на входах инверсию, чтобы вернуть этот бит к правильному виду. А сбрасывает триггер в 0, а не в 1.
После загрузки все триггера в 0 сами собой, тут он увидел, что res это сброс в начальное состояние. И решил сделать так, чтобы это состояние совпадало с тем, что после загрузки. Везде по цепочке проведя эквивалентное преобразование.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Iptash
сообщение Nov 25 2012, 06:04
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Цитата(ReAl @ Nov 25 2012, 01:53) *
В железе всё работает...

Спасибо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 10:10
Рейтинг@Mail.ru


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