Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1
  • 2

ТЕМА: Доработка Марсоход v1.3

Доработка Марсоход v1.3 10 года 7 мес. назад #2568

  • melman
  • melman аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 11
  • Спасибо получено: 0
Создавая проект SPI master столкнулся с плаванием клока по время передачи данных. Оказалось, что проблема решается, если внешний генератор подключить к одному из пинов CLK_n и в AssigmentEditor'е настроить его как GlobalClock.
Я разрезал дорожки и перекинул местами pt_right и led[7], т.е. pt_right стал PIN_62, а led[7] - PIN_75 (внес изменения в AssignmentEditor). Предложение описать доработку на сайте, чтобы все, столкнувшиеся с подобной проблемой, могли решить ее.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от melman.

Re: Доработка Марсоход v1.3 10 года 6 мес. назад #2583

melman пишет: Создавая проект SPI master столкнулся с плаванием клока по время передачи данных. Оказалось, что проблема решается, если внешний генератор подключить к одному из пинов CLK_n и в AssigmentEditor'е настроить его как GlobalClock.
Я разрезал дорожки и перекинул местами pt_right и led[7], т.е. pt_right стал PIN_62, а led[7] - PIN_75 (внес изменения в AssignmentEditor). Предложение описать доработку на сайте, чтобы все, столкнувшиеся с подобной проблемой, могли решить ее.


А вы не пробовали менять местами с каким-нибудь другим пином или не вносить изменения в AssignmentEditor?
У меня есть подозрение, что не в этом было дело.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Доработка Марсоход v1.3 10 года 6 мес. назад #2584

  • melman
  • melman аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 11
  • Спасибо получено: 0
Честно говоря, подавать клок на другой пин я не пробовал. Пробовал в AssignmentEditor для pt_right выставить Global Clock, но это не помогло.

или не вносить изменения в AssignmentEditor?

- поясните, что вы имеете ввиду?
Если смотреть пины в Resource Property Editor, то там есть Input Pin to Logic Array Delay. Так вот, на всех(подключенных) входах, даже при выставленной настройке Global Clock, эта задержка есть. А на пинах CLK_n, при включенном Global Clock, задержки нет. Может в этом все дело?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от melman. Причина: дополнено

Re: Доработка Марсоход v1.3 10 года 6 мес. назад #2585

Вы бы поподробнее описали проблему.
На какой скорости у вас SPI?
Почему вы решили, что проблемы именно с клоком?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Доработка Марсоход v1.3 10 года 6 мес. назад #2586

  • melman
  • melman аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 11
  • Спасибо получено: 0
SPI написан на verilog. Частота 1 МГц. Передача (работа SPI) начинается при нажатии кнопки. Передаю 16 бит на nanoDAC AD5601. Повторяю с частотой 8 КГц, т.е. вывожу звук 8 бит 8 КГц. На выходе ЦАП должна получиться синусоида с частотой 420 Гц.
Из клока 100 МГц делаю 1 МГц (clk) с помощью LPM_COUNTER и D-триггера. Клок SPI (sclk) получаю так:
assign sclk = sclk_en ? (CPOL + CPHA + clk) : CPOL;
Вывожу на пины clk и sclk (а также mosi, miso, cs).
Есть USB-осциллограф 2х60 МГц. Ставлю щупы на clk и на sclk.
При выключенной передаче клок идет нормально. Осциллограф определяет clk = 1 МГц, sclk - пусто.
Нажимаю кнопку (начинается передача). И тут самое интересное. Между посылками клок clk идет нормально, а вот в момент, когда выдается клок на ЦАП (sclk), clk плывет и sclk соответственно тоже. Плавать начинает частота и, что самое интересное, скважность (не 50%, а ~40%). И на выходе ЦАП куча гармоник.
После действий, описанных выше, этот непонятный эффект пропал и на выходе ЦАП синусоида 420 Гц (проверено осциллографом).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Доработка Марсоход v1.3 10 года 6 мес. назад #2587

А можно схемку как вы делаете "clk", а то не очень понятно.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Доработка Марсоход v1.3 10 года 6 мес. назад #2590

  • melman
  • melman аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 11
  • Спасибо получено: 0

lpmcounter_50 считает до 50, т.е. на выходе cout 2 МГц, но со скважностью не 50%. DFF уменьшает частоту вдвое и дает скважность 50%. Т.е. на выходе DFF (Inst14) частота - 1 МГц, скважность - 50%.
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от melman.

Re: Доработка Марсоход v1.3 10 года 6 мес. назад #2591

Ну наконец-то разобральсь.
Сигнал "cout" на клок триггера подавать нельзя, это выход комбинаторной логики и на нем между фронтами управляющего клока может выть все, что угодно.
Переделать вашу схему можно двумя способами, либо подать на клоки триггеров выходы старших разрядов (q[5] на inst1 и на inst2 q[6])
или вместо DFF поставить DFFE и cout завести на enable.
Да, и inst2 переделать.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Доработка Марсоход v1.3 10 года 6 мес. назад #2592

  • melman
  • melman аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 11
  • Спасибо получено: 0
Дело в том, что изначально у меня был свой делитель написанный на verilog (код приблизительный, т.к. я заменил его на lpm_counter и dff, и удалил).
module div_clk 
(
	clk_in,
	clk_out
);

input wire clk_in;
output reg clk_out = 1'b0;

parameter DIV = 20;
parameter DIV_WIDTH = 5;

reg [DIV_WIDTH-1:0] counter = 0;

always @(posedge clk_in)
begin
	if(counter == DIV - 1)
	begin
		clk_out <= 1'b0;
		counter <= 0;
	end
	else
	begin
		if(counter == DIV/2 - 1)
			clk_out <= 1'b1;
		counter <= counter + 1;
	end		
end

endmodule
После возникновения проблемы с клоком, я и начал искать другие пути его получения. В констрейны пробовал вносить глобал и генерированные клоки.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Доработка Марсоход v1.3 10 года 6 мес. назад #2593

Это правильный модуль. Вы на выходе этого модуля смотрели осциллографом?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Время создания страницы: 0.167 секунд
Работает на Kunena форум