Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MAX10 + Quartus , velilog
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
diwil
Господа, генерю сигналы для аудиокодека (pcm3500) и наткнулся на следующую фигню:

Код
Код
module pcm_clocks(
    input reset_n,
    input clk,
    output mclk,
    output fs,
    output bclk
);

reg [8:0] counter;

assign mclk = clk;
assign bclk = counter[4];
assign fs = !(counter[8:5]) & reset_n;

initial
begin
    counter = 0;
end


always @(posedge clk)
begin
    if (!reset_n)
    begin
        counter <= 0;
    end
    else
    begin
        counter <= counter + 9'd1;
    end

end

endmodule


clk и mclk - это 4МГц.
fs - это синхронизационный импульс,
bclk - это битовый клок.

так вот...
Казалось бы, fs должен быть единицей первые 32 счета счетчика, а потом нулем. И это работает.
Но! поскольку fs это НЕ ИЛИ 8:5 разрадов счетчика, то спад импульса fs должен совпадать со спадом импульса bclk
А получается...

В зависимости от непонятных мне причин иногда получается с точностью до наоборот. Т.е. приходится писать
assign bclk = ~counter[4];
что, на мой взгляд, не правильно.

Что сомое интересное, сие не зависит от времени появления reset_n -
он синхронен с clk и переходит в 1 по спадающему фронту clk

Вопрос(ы) -

- что я упустил?
- как это засинхронизировать програмно?
- или это глюк компилера?
- или глюк железа?

забыл добавить - моделсим показывает все как надо
iosifk
Цитата(diwil @ Jul 10 2015, 15:17) *
Господа, генерю сигналы для аудиокодека (pcm3500) и наткнулся на следующую фигню:


- что я упустил?
- как это засинхронизировать програмно?
- или это глюк компилера?
- или глюк железа?


Вообще все немного не так. Должна быть только одна частота, а все остальные формируются из нее на триггерах со входом разрешения...
Могу объяснить но голосом по скайпу...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.