реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Можно ли передать по RS232 более 8 бит данных в одном фрейме?, формат фрейма передачи
Vagant
сообщение Feb 1 2010, 06:53
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Здравствуйте.

Скажите пожалуйста новичку - а можно ли передать более чем 8 бит в одном фрейме передачи через COM порт по интерфейсу RS232? В книжках обычно пишется что по этому интерфейсу асинхронно передаются фреймы формата:

стартовый бит - 8 бит данных - стоповый бит

где только 8 бит в одном фрейме.

А мне хотелось бы передавать с ПК на ПЛИС 64-битные коды (в каждом из которых первый байт является кодом команды а остальные 7 байт - данные). ПЛИС будет принимать такие 64-битные коды (фреймы) и в соответствие с кодом команды (первый байт во фрейме) будет обрабатывать данные переданные в остальных 6 байтах фрейма.

Можно ли вот так, в одном фрейме - передать с ПК сразу 64-битный код на ПЛИС?

Спасибо.

Сообщение отредактировал Vagant - Feb 1 2010, 07:12
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 1 2010, 07:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Vagant @ Feb 1 2010, 09:53) *
Можно ли вот так, в одном фрейме - передать с ПК сразу 64-битный код на ПЛИС?

Нет, нельзя.
Go to the top of the page
 
+Quote Post
МП41
сообщение Feb 1 2010, 08:32
Сообщение #3


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Обычно для передачи больших блоков формируют логические фреймы, например: 1-й байт - синхронизация (типа AAh или 55h), потом служебный байт (команда, длина фрейма и т.д., кто как делает), потом блок данных, а в конце - контрольная сумма.


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Feb 1 2010, 13:57
Сообщение #4


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



использовать протокол, например, wake


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Vagant
сообщение Feb 1 2010, 14:59
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Спасибо большое за советы.

А нельзя просто запрограммировать FIFO достаточно большого размера на ПЛИС и соединить вход этого FIFO c Tx? (это когда компьютер передаёт). А потом, когда данные переданы с компьютера, просто читать одно за другим 64-битные слова из FIFO. Будет ли работать такой подход?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 1 2010, 15:28
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Vagant @ Feb 1 2010, 17:59) *
Будет ли работать такой подход?

В тепличных условиях - возможно. Но лучше принять хотя бы минимальные меры для синхронизации данных.
Go to the top of the page
 
+Quote Post
Vagant
сообщение Feb 1 2010, 16:21
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Цитата(aaarrr @ Feb 1 2010, 19:28) *
В тепличных условиях - возможно. Но лучше принять хотя бы минимальные меры для синхронизации данных.


Про синхронизацию - как я понимаю, у UART есть свой FIFO. А Tx этого UART будет соединён со входом serial-to-parallel shift register выход (64-битный, параллельный) которого будет подан на вход FIFO размера 1024 (к примеру) на 64. Этот shift register будет синхронизирован от CLK на FPGA board. То есть с каждым импульсом от CLK данные будут по одному биту записываться в FIFO. Имхо, должно работать. Потом данные уже просто считываются из FIFO с любой скоростью.

Сообщение отредактировал Vagant - Feb 1 2010, 16:22
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 1 2010, 16:25
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Vagant @ Feb 1 2010, 19:21) *
Имхо, должно работать.

На столе - будет. Хотя в вашей схеме отсутствует собственно UART: тактировать сдвиговый регистр чем будете?
Go to the top of the page
 
+Quote Post
Vagant
сообщение Feb 1 2010, 16:56
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Цитата(aaarrr @ Feb 1 2010, 20:25) *
На столе - будет. Хотя в вашей схеме отсутствует собственно UART: тактировать сдвиговый регистр чем будете?


Сдвиговый буду тактировать от CLK на плате (50 МГц). А вот с UART есть непонятки. Вообще я собираюсь это всё делать на Xilinx 3E 1600E Microblaze Development Board а там есть разьём RS232 а вот UART тоже должен быть но я его на самой плате не нашёл (искал чип MAXIM). В описании к плате указано только к каким пинам ПЛИС просоединён Tx и Rx. Может это Tx и Rx RS232 разьёма а UART вообще на плате нет? Пока что сам не понял этого момента.
Go to the top of the page
 
+Quote Post
V_G
сообщение Feb 1 2010, 21:12
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



RS232 - интерфейс асинхронный. При 8-битной передаче имеются определенные требования к разбросу тактовых частот приемника и передатчика (у меня вроде как работало с 3% отклонениями). Синхронизация каждый раз осуществляется по старт-биту. При увеличении длины посылки требования к точности частот многократно возрастают.
Другие форматы, например, Манчестер, допускают 25% отклонение, но там фактически побитная синхронизация.
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 2 2010, 09:04
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Vagant @ Feb 1 2010, 19:56) *
Сдвиговый буду тактировать от CLK на плате (50 МГц).
Ой! У вас RS232 на 50MBaud? cranky.gif
Цитата
Вообще я собираюсь это всё делать на Xilinx 3E 1600E Microblaze Development Board а там есть разьём RS232 а вот UART тоже должен быть но я его на самой плате не нашёл (искал чип MAXIM).
Не там искали. Он собирается внутри этой самой 'Xilinx 3E 1600E'
Зайдите на www.opencores.org и посмотрите какую нибудь корку UART'а попроще, много вопросов отпадет
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 15:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01433 секунд с 7
ELECTRONIX ©2004-2016