zombi 0 18 марта, 2019 Опубликовано 18 марта, 2019 · Жалоба В системе MAXII на частоте 120MHz и медленный процессор 16MHz таковая. Процессор должен записать данные 8 бит по определённому адресу и cpld должна передать его дальше по SPI. Т.е. преобразовать параллельный код в последовательный. Только в одну сторону начиная с младшего бита по нарастающему фронту spi клока. Приём не нужен. Вот "наваял" в блок схеме нечто , вроде работает. Опыта не шибко много. Подскажите, не слишком ли перемудрил? делают ли так в принципе? А может кто чего посоветует как лучше или правильнее сделать надо/можно. В аттаче сама схема и временная диаграмма. Имена сигналов вроде должны быть интуитивно понятны. WRSPI - выход дешифратора адреса активная 1 (на схеме не показал дабы не загромождать) nWR - сигнал записи процессора (запись по нарастающему фронту) На времянке имитируется запись процессором данных : 0x45 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба А в чём сомнения? Схема синхронная. Если успевает до следующего обращения то всё отлично. Правда не вижу сигнал CS для устройства но возможно он не нужен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 1 hour ago, MegaVolt said: А в чём сомнения? Схема синхронная. Если успевает до следующего обращения то всё отлично. Правда не вижу сигнал CS для устройства но возможно он не нужен. Спасибо. мне просто нужен был взгляд со стороны. Задача то вроде простейшая, а элементов для её реализации как-то вроде много пришлось использовать. Вот и засомневался не слишком ли намудрил. CS не нужен - он формируется процессором отдельно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба Работает и чудненько. Правила для ПЛИС не нарушает и отлично. А вылизывать схему экономя триггер во времена ПЛИС уже как то и не принято без веских на то оснований. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 9 minutes ago, MegaVolt said: Работает и чудненько. Правила для ПЛИС не нарушает и отлично. А вылизывать схему экономя триггер во времена ПЛИС уже как то и не принято без веских на то оснований. Ясно. Еще вопрос вдогонку : возможно ли реализовать синхронную схему не на делённой на два тактовой частоте, а на полной? Т.е. что бы частота SPIS была равна входной частоте CLK поступающей на плис. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба Не вижу проблем. На то схема и синхронная чтобы все процессы происходили через 1 такт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 46 minutes ago, MegaVolt said: Не вижу проблем. На то схема и синхронная чтобы все процессы происходили через 1 такт. А я не понимаю как SPIS (частота spi колка) может быть равна CLK (входной частоте на плис). Ведь в таком случае придётся использовать какой-то разрешающий элемент перед пином SPIS. На входы которого должна поступать входная частота и сигнал разрешения. А это уже асинхронщина. Или я чего не так понимаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zig 31 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба Не скажу про MAXII, но у ПЛИС Xilinx есть ODDR выходной буфер. Он позволяет вывести частоту, поданную на его вход clk в прямом или инвертированном виде. Посмотрите, вдруг и у Intel подобное есть... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 18 минут назад, zombi сказал: А я не понимаю как SPIS (частота spi колка) может быть равна CLK (входной частоте на плис). Как верно уже предложили можно использовать DDR триггер который работает по двум фронтам и имеет два входа. На один подаётся 0 на второй 1. Если же такой возможности нет то есть несколько вариантов.: 1. Завести внутри кристалла удвоенную частоту. И отталкиваясь от неё всё сделать. 2. Вывести наружу клок. Хотя это вроде как и криминал но как по мне так путь от глобального буффера до выхода из кристалла будет вполне фиксированным. Опять же не знаю скоростные параметры вашего кристалла. При необходимости подвинуть данные относительно клока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться