Перейти к содержанию
    

Передача данных UART => SDRAM память

На стороне ПЛИС я могу делать всё что смогу, и реализовать почти любой протокол. Лишь бы хватило ресурсов в ПЛИС. А вот со стороны ПК передавать данные по UART через какой-либо протокол... У меня пока недостаточно знаний в области программирования, чтобы сделать такое.

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

называется: wave_gen_vhd_v6.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реализовал я передачу данных между UART => ПЛИС следующим образом:

Для увеличения скорости передачи данных я выбрал скорость UART 230400 (8-N-1). Думаю можно и больше, но не тестировал.

Данные с uart приемника подаются в модуль PIXEL_CREATING, который принимает 3 байта, отбрасывает ненужные мене значения байтов и объединяет их в цвет пикселя, который мне нужно записать в память.

Когда модуль PIXEL_CREATING "собрал" пиксель и готов его записывать в память, формируется одиночный сигнал PIXEL_VALID (равный одному периоду синхрочастоты), который разрешает запись данных в FIFO буфер.

В FIFO буфере у меня настроен сигнал rdempty, синхронизированный(внутри FIFO буфера)с частотой работы SDRAM контроллера, которой я этот буфер читаю. Через 22 такта, (почему именно 22 такта я не знаю, есть зависимость от количества стадий синхронизации, настраиваемых в mega wizzard. В datasheet на эту мегафункцию, я не нашел данных про это. Буду благодарен, если услышу пояснения почему так.) после записи, буфер выдаст сигнал rdempty равный лог.0, который говорит о том, что в буфере есть данные. Этот сигнал я подаю на детектор заднего фронта. Детектированным фронтом READ_UART_FIFO_SIG я читаю данные из FIFO буфера. Этот же фронт- сигнал о том, что можно записывать данные в контроллер SDRAM. Таким образом я реализовал передачу данных между клоковомыи доменами. То, что я теряю 22 такта - меня не смущает, поскольку частоты приёма по UART и частоты записи в память очень сильно отличаются, и за время приёма одного байта по UART пройдет гораздо больше времени чем 22 такта...

Данные передаются нормально, сбоев нет. Изображение передано в матрицу без искажений.

Кому интересно, проект приёмника UART c модулем PIXEL_CREATING выложил внизу. Буду рад всем недочётам, обнаруженным в проекте.

 

image.jpg

 

image.jpg

PIXEL_RECEIVER.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...