Цитата(zltigo @ Oct 12 2008, 19:25)

Уж не знаю, что Вы там себе нарисовали, что такое str и почему оно идет на половинной частоте клоков, ибо:
- имеется чередующийся битовый поток, естественно, c частотой клоков;
- имеется клок по rising edge которого поток семплируется;
- делим этот клок на два;
- получившимся rising edge семплируем (записываем в первый триггер) биты для первого
выходного потока
- falling edge (rising c инверсного выхода тригера делящего частоту) семплируем биты во втором триггере для второго битового потока.
Это все понятно, но очевидно, что на выход отсчеты не могут попасть одновременно, (т.е. синхронно), так как попадают туда заведомо по противоположным фронтам одного клока, т.е. выходная последовательность будет сдвинута на пол бита или на период исходной частоты.
Цитата
В результате получаем два битовых потока на половинной частоте исходного клока.
Получать-то мы их получаем, но не синхронными! Более того сдвиг не равен одному биту, а равен половине, что тоже не годится.
Цитата(zltigo @ Oct 12 2008, 19:25)

Уж не знаю, что Вы там себе нарисовали, что такое str и почему оно идет на 1/4 частоте клоков, ибо:
озвученному ранее "~10MHz"?
Не успеваю отвечать, как сообщение изменяется.
str - это и есть поток, 2 единицы, 2 нуля подряд
он и есть 1/2 а не одна 1/4 (clk2 = clk1*2)
На всякий случай прикладываю осцилограму, что надо получить:
Нажмите для просмотра прикрепленного файла Т.е. сплошной поток на удвоенной частоте 11001100 синхронно преобразуется в два потока 1010 на одинарной частоте. На самом деле такое легко реализуется сдвиговым регистром и триггером.
А если я просто соседними командами запишу в буфер SSP0 и SSP1 (с настроенными DMA), насколько детерменированным/постоянным будет сдвиг между выходными потоками?