|
|
  |
Как избавиться от ступеньки?, посмотрите модуль и тестбенч в приложении |
|
|
|
Aug 4 2010, 08:15
|
Частый гость
 
Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494

|
Добрый день. Не могу избавиться от ступеньки:
В приложении модуль и тесбенч к нему. Используются неблокирующие операторы, но почему результат появляется только на следующем фронте тактовой частоты? Где я неправ? Спасибо.
Quadrature_Modulator.v ( 3.19 килобайт )
Кол-во скачиваний: 264
QM_tb.v ( 1.57 килобайт )
Кол-во скачиваний: 170
|
|
|
|
|
Aug 4 2010, 09:44
|
Гуру
     
Группа: Модераторы
Сообщений: 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
|
|
|
|
|
Aug 4 2010, 10:07
|
Гуру
     
Группа: Свой
Сообщений: 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. Как симулятор обрабатывает и выполняет неблокирующие процедурные назначения Ну и так далее... Удачи! Спасибо.
|
|
|
|
|
Aug 4 2010, 14:04
|
Частый гость
 
Группа: Участник
Сообщений: 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. Хочу, чтобы они тоже формировались по первому фронту. Я не гуру, подскажите, где я заблуждаюсь? Спасибо.
|
|
|
|
|
Aug 4 2010, 14:26
|
Частый гость
 
Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494

|
Цитата(sazh @ Aug 4 2010, 18:18)  У Вас используется блокируещее присваивание, но не суть. У Вас по описанию две тактовые, да еще по фронтам. Поиграйте ими, посмотрите, что получиться. А лучше - один клок использовать. Да, я уже вычитал, что с термином ошибся. По тактовой с2 принимается информационный бит. А в информационном бите есть семь бит последовательности Баркера (частота с1).... Так что мне только попробовать с2 сделать из с1, но я мыслил, что эти частоты получу из PLL модуля.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|