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

 
 
> Как избавиться от ступеньки?, посмотрите модуль и тестбенч в приложении
Shaienn
сообщение Aug 4 2010, 08:15
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Добрый день.

Не могу избавиться от ступеньки:
Прикрепленное изображение


В приложении модуль и тесбенч к нему. Используются неблокирующие операторы, но почему результат появляется только на следующем фронте тактовой частоты? Где я неправ?

Спасибо.

Прикрепленный файл  Quadrature_Modulator.v ( 3.19 килобайт ) Кол-во скачиваний: 264

Прикрепленный файл  QM_tb.v ( 1.57 килобайт ) Кол-во скачиваний: 170
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des333
сообщение Aug 4 2010, 09:32
Сообщение #2


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

Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079



Цитата(Shaienn @ Aug 4 2010, 12:15) *
В приложении модуль и тесбенч к нему. Используются неблокирующие операторы, но почему результат появляется только на следующем фронте тактовой частоты?  

У меня в ответ вопрос - а какого результата Вы ждете?




--------------------
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Aug 4 2010, 14:04
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Цитата(des333 @ Aug 4 2010, 13:32) *
У меня в ответ вопрос - а какого результата Вы ждете?


я хочу, чтобы по первому фронту с1 после выставления locked начинался прием данных data_gen и по этим данным формировались остальные сигналы. Я так понимаю, что неблокирующее присваивание работает сразу при применении, но не могу понять, почему при одном событии:
Код
always @(posedge c1 or posedge Reset)
begin
     if (Reset)
     begin
     rSseq = 1'b0;
     rCseq = 1'b0;
     rSmod_seq = 1'b0;
     rCmod_seq = 1'b0;
     Qseq = 7'b1111110;
     Iseq = 7'b1110011;
     end
     else if (locked)
     begin
     Qseq = {Qseq[5:0], Qseq[6]};
     Iseq = {Iseq[5:0], Iseq[6]};
    
     rSseq = (oddOne && Qseq[0]) || (oddZero && Qseq[0]) || (evenOne && (~Qseq[0])) || (evenZero && (~Qseq[0]));
     rCseq = (oddOne && Iseq[0]) || (oddZero && Iseq[0]) || (evenOne && (~Iseq[0])) || (evenZero && (~Iseq[0]));    
    
     rSmod_seq = (rSseq && oddClock) || (~oddClock && rCseq);
     rCmod_seq = (rSseq && ~oddClock) || (oddClock && rCseq);
     end
end


регистры Qseq и Iseq формируются как мне нужно (по первому фронту), а регистры rSseq, rCseq, rSmod_seq и rCmod_seq формируются на второй фронт с1. Хочу, чтобы они тоже формировались по первому фронту. Я не гуру, подскажите, где я заблуждаюсь?

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



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

 


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


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