0 / 0 / 0
Регистрация: 23.03.2012
Сообщений: 1,017
|
|
1 | |
[VHDL] ПЛИС длинный сдвиговый регистр с параллельной загрузкой09.04.2016, 16:12. Показов 13982. Ответов 8
Метки нет Все метки)
(
Подтолкните в нужную сторону, никак не могу сообразить.
С одной стороны поступают байты по 8-разрядной шине. Динные выдает контроллер AVR, он же выдает сигнал тактирования и строб загрузки. Размер буфера 9 байт. С другой стороны - непрерывный последовательный вывод 8х9 = 72 бита. Я хочу сделать, чтобы выдача начиналась сразу после загрузки первого байта, а остальные байты подгружались уже в процессе вывода. Как это сделать на VHDL? Или просто логику работы подскажите.
0
|
09.04.2016, 16:12 | |
Ответы с готовыми решениями:
8
Сдвиговый регистр с асинхронным сбросом и параллельной загрузкой [VHDL] Реверсивный сдвиговый N разрядный регистр Сдвиговый регистр |
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
09.04.2016, 16:24 | 2 |
FIFO из двух портовой памяти с разрядностью данных соответственно 8 и 1 бит.
0
|
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 767
|
|
10.04.2016, 09:38 | 3 |
Из краткого описания очень похоже на логику 74HC597.
Посмотреть структурную схему и описать на VHDL. PS. А почему раздел "Экзотические контроллеры", ведь ПЛИС больше к "Цифровой электронике" относится.
0
|
0 / 0 / 0
Регистрация: 23.03.2012
Сообщений: 1,017
|
|
10.04.2016, 09:55 | 4 |
с загрузкой вопросов нет.
Не знал, как выгрузку организовать. Теперь понял, что нужно отдельный 8-разрядный буфер и отдельный счетчик на выгрузку. Еще подумаю. PS/ про плис все пишут здесь, насколько я понимаю
0
|
0 / 0 / 0
Регистрация: 23.03.2012
Сообщений: 1,017
|
|
11.04.2016, 00:17 | 5 |
Нет, все равно не врубаюсь.
Ну сделал я память. 9 ячеек. Как алгоритм работы реализовать. Вот смотрите. Опускаем ресет. Указатель адреса нулевой, буфер пустой, сигнал разрешения загрузки высокий. Передатчик устанавливает нужное значение и поднимает вход data_tood. Байт с входа data попадает в нулевую ячейку памяти. Указатель адреса увеличивается на единицу. ---Здесь должна начаться передача, то есть внутренний сигнал разрешения передачи поднимается, адрес ячейки для передачи равен нулю, ячейка под таким номером загружается в выходной буфер, он начинает сдвигаться по тактовому сигналу. Когда девять ячеек загружено, сигнал разрешения загрузки опускается (для простоты - до окончания передачи). Как все это по процессам распихать? И еще, есть толковая инструкция, как тестбенч сделать, чтобы сигналы посмотреть? А то тыкаюсь, как слепой котенок.
0
|
0 / 0 / 0
Регистрация: 23.03.2012
Сообщений: 1,017
|
||||||||||||||||
11.04.2016, 00:42 | 6 | |||||||||||||||
Ладно.
1. асинхронный ресет - сброс всех значений на 0, выходы в Z-состояние. 2. если указатель адреса переполнен - опустить разрешение загрузки иначе, если поднялся data_tood, то загрузить data по адресу, адрес увеличить. 3. если указатель адреса больше 0 (хотя бы 1 байт загрузился) - поднять out_enable. Так примерно? С выводом еще думать надо. Может, есть способ описать это все как-то попроще? Пробелы в знаниях сказываются.
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
11.04.2016, 01:00 | 7 |
0
|
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 65
|
||||||
25.04.2017, 00:55 | 8 | |||||
![]() Примерно так, сигнал clk -тактовая частота много выше частоты сдвига в SPI. sclk-сигнал сдвига в самом SPI. Двигаем влево (вправо переделать можно по аналогии).
0
|
0 / 0 / 0
Регистрация: 23.03.2012
Сообщений: 1,017
|
|
25.04.2017, 08:43 | 9 |
Спасибо.
По сути получается, что длинный регистр не нужен, но нужно обеспечить правильную загрузку байта (в нужный момент поднимать tood_data). A я хотел в принципе асинхронную загрузку, то есть мастер выдает байты насколько сможет быстро, слейв загружает их в буфер до заполнения, сразу после загрузки первого байта начинает передачу, а когда буфер заполнится, поднимает флаг занято, пока не закончит передачу. А вообще да, не актуально уже.
0
|
25.04.2017, 08:43 | |
Помогаю со студенческими работами здесь
9
Сдвиговый регистр Сдвиговый регистр Сдвиговый регистр ШД, Сдвиговый регистр и МК VHDL. Реализация UART на ПЛИС Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Циклы for в Python
py-thonny 17.03.2025
Существует множество ситуаций, когда нам нужно выполнить одно и то же действие несколько раз. Цикл for в Python — настоящий рабочий конь для большинства программистов. Если вам нужно пройтись по всем. . .
|
Предсказание ветвлений - путь к высокопроизводительному C++
NullReferenced 17.03.2025
В высокопроизводительном программировании на C++ каждый такт процессора на счету. Когда речь заходит о разработке систем с низкой задержкой — будь то высокочастотная торговля, обработка потоковых. . .
|
Паттерн CQRS в C#
UnmanagedCoder 17.03.2025
Создание сложных корпоративных приложений часто требует нестандартных подходов к архитектуре. Один из таких подходов — паттерн CQRS (Command Query Responsibility Segregation), предлагающий простую,. . .
|
Паттерн Цепочка ответственности в C#
UnmanagedCoder 17.03.2025
Цепочка ответственности — это поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке потенциальных обработчиков, пока один из них не обработает запрос. . . .
|
Создаем микросервисы с NestJS, TCP и Typescript
run.dev 17.03.2025
NestJS — фреймворк, который значительно упрощает создание серверных приложений на Node. js. Его прелесть в том, что он комбинирует концепции ООП, функционального программирования и предлагает. . .
|
Гексагональная архитектура со Spring Boot
Javaican 17.03.2025
Если вы когда-нибудь сталкивались с ситуацией, когда внесение простых изменений в базу данных или пользовательский интерфейс заставляло вас переписывать весь код, то вы точно оцените элегантность. . .
|
Позиционирование Kafka Consumer и Seek-операции
Javaican 17.03.2025
Что же такое Consumer Seek в Kafka? По сути, это API-метод, который позволяет программно указать, с какой позиции (offset) Consumer должен начать или продолжить чтение данных из партиции. Без этого. . .
|
Python NumPy: Лучшие практики и примеры
py-thonny 17.03.2025
NumPy (Numerical Python) — одна из ключевых библиотек для научных вычислений в Python. Она превращает Python из просто удобного языка общего назначения в среду для проведения сложных математических. . .
|
Java Micronaut в Docker: контейнеризация с Maven и Jib
Javaican 16.03.2025
Когда речь заходит о микросервисной архитектуре на Java, фреймворк Micronaut выделяется среди конкурентов. Он создан с учётом особенностей облачных сред и контейнеров, что делает его идеальным. . .
|
Управление зависимостями в Java: Сравнение Spring, Guice и Dagger 2
Javaican 16.03.2025
Инъекция зависимостей (Dependency Injection, DI) — один из фундаментальных паттернов проектирования, который радикально меняет подход к созданию гибких и тестируемых Java-приложений. Суть этого. . .
|