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

 
 
 
Reply to this topicStart new topic
> Как избавиться от ступеньки?, посмотрите модуль и тестбенч в приложении
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
iosifk
сообщение Aug 4 2010, 08:37
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



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

Тестбенч еще не смотрел, но рекомендую посмотреть разницу между блокирующими и неблокирующими...
У меня на сайте "Краткий Курс HDL"... Там я этот раздел расписал особенно подробно...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
sazh
сообщение Aug 4 2010, 09:16
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(iosifk @ Aug 4 2010, 11:37) *
У меня на сайте "Краткий Курс HDL"... Там я этот раздел расписал особенно подробно...


Искал, но не нашел. Может, прямую ссылку укажите?
Go to the top of the page
 
+Quote Post
des333
сообщение Aug 4 2010, 09:32
Сообщение #4


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

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



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

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




--------------------
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 4 2010, 09:44
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(sazh @ Aug 4 2010, 13:16) *
Искал, но не нашел. Может, прямую ссылку укажите?


http://iosifk.narod.ru/articles.html
Начиная вот с этого:
"Краткий курс HDL-кодирования" Часть 1. "КиТ" №3 2008г."

В Части 2, раздел 2.19. Назначения уровня RTL (RTL Assignments)
2.19.1. Блокирующие процедурные назначения (Blocking Procedural Assignments)
2.19.2. Неблокирующее процедурное назначение (The Non-Blocking Procedural Assignment)
2.19.3. Как симулятор обрабатывает и выполняет неблокирующие процедурные назначения

Ну и так далее...
Удачи!











--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
sazh
сообщение Aug 4 2010, 10:07
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(iosifk @ Aug 4 2010, 12:44) *
http://iosifk.narod.ru/articles.html
Начиная вот с этого:
"Краткий курс HDL-кодирования" Часть 1. "КиТ" №3 2008г."

В Части 2, раздел 2.19. Назначения уровня RTL (RTL Assignments)
2.19.1. Блокирующие процедурные назначения (Blocking Procedural Assignments)
2.19.2. Неблокирующее процедурное назначение (The Non-Blocking Procedural Assignment)
2.19.3. Как симулятор обрабатывает и выполняет неблокирующие процедурные назначения

Ну и так далее...
Удачи!


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


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

Группа: Участник
Сообщений: 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
sazh
сообщение Aug 4 2010, 14:18
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Shaienn @ Aug 4 2010, 17:04) *
Я так понимаю, что неблокирующее присваивание работает сразу при применении


У Вас используется блокируещее присваивание, но не суть.
У Вас по описанию две тактовые, да еще по фронтам. Поиграйте ими, посмотрите, что получиться.
А лучше - один клок использовать.
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Aug 4 2010, 14:26
Сообщение #9


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

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



Цитата(sazh @ Aug 4 2010, 18:18) *
У Вас используется блокируещее присваивание, но не суть.
У Вас по описанию две тактовые, да еще по фронтам. Поиграйте ими, посмотрите, что получиться.
А лучше - один клок использовать.



Да, я уже вычитал, что с термином ошибся. По тактовой с2 принимается информационный бит. А в информационном бите есть семь бит последовательности Баркера (частота с1).... Так что мне только попробовать с2 сделать из с1, но я мыслил, что эти частоты получу из PLL модуля.
Go to the top of the page
 
+Quote Post
sazh
сообщение Aug 4 2010, 14:43
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Shaienn @ Aug 4 2010, 17:26) *
Да, я уже вычитал, что с термином ошибся. По тактовой с2 принимается информационный бит. А в информационном бите есть семь бит последовательности Баркера (частота с1).... Так что мне только попробовать с2 сделать из с1, но я мыслил, что эти частоты получу из PLL модуля.


Вы получили триггерную структуру, реакция которой зависит от фронтов этих двух клоков. Вы нарисовали c2, c1 Без учета задержек их формирования, получили реакцию. Вот и все.
Что мешает работать на частоте с1 и перезаписывать ваш код по каждому 7 отсчету.
Смотрите RTL просмотрщик в квартусе.

Go to the top of the page
 
+Quote Post

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

 


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


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