|
Конвертер serial->8b parallel, Хочу сделать на CPLD от Альтеры |
|
|
|
Jan 23 2008, 10:16
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Суть-соль: Необходимо сделать конвертер parallel<->serial Может быть до 4х входных serial каналов, и до 4х выходных. Тактирования 2. Одно для входных, другое для выходных каналов. Скорость вх/вых могут быть только кратны. Для serial интерфейса конвертор должен быть slave. Макс. скорость до 12.3Мбит в каждую сторону по каждому serial каналу. Параллельных интерфейсов 2, на вход и выход. Сервисные: строб выдачи, вход для подтверждения получения, вход для строба чтения, сигнал переполнения, вход для сброса сигнала переполнения. Примерно так: >InSCK >In1 >In2 >In3 >In4 <POut (8b) <RD >RDE <OVFOut >OVFOutRES ============== >PIn (8b) >WR >OutSCK <Out1 <Out2 <Out3 <Out4 <OVFIn >OVFInRES Вроде все... Это возможно вообще? Есть желание сделать на CPLD от Альтеры. Какой лучьше пойдет для этой цели? Если кто уже делал подобное, поделитесь пожалуйста.
|
|
|
|
|
 |
Ответов
|
Jan 23 2008, 20:05
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Спасибо за ответы! Извиняюсь что коряво объяснил задачу... Цитата(XVR @ Jan 23 2008, 16:52)  А какие возможности нужны?
Требование п4. можно ослабить, введя (входной) строб чтения (это будет FIFO на 1 злемент)
В принципе, так как система состоит из 2х независимых частей, то можно сделать 2 разных клока, но нужно убедится, что CPLD позволяет использовать 2 клока (IMHO они все позволяют, но точно гарантировать не могу - с Alter'ой не работал, только с Xilinx, он позволяет)
И что понимается под фразой 'до 4х serial каналов' - как они должны укладываться в один параллельный выходной? Возможности нужны те что описал. Да, именно так и нужно - буфер на 1 байт (но для каждого канала отдельно) 2 клока необходимо, т.к. скоросте для входных и выходных потоков надо иметь возможность настраивать независимо (ну, почти независимо - они кратны у меня могут быть) А вот это самое интересное:  например для serial->parallel Считываем по 1 байту из каждого из 4х входных каналов (данные в них синхронные т.к. у них 1 клок, и непрерывные) Каждый байт пихаем в свой буфер (FIFO на 1 байт). Начинаем считывание следующего байта (для всех каналов) И в это время выводим один за другим принятые байты из буфера в паралл. интерфейс. т.е. время считывания 1 байта по посл. интерфейсу = времени выдачи 4х принятых байт. Делается для того, что бы загнать посл. потоки в CY7C68013. Если честно, то 4 потока это я взял по максимуму, в минимальном варианте может быть и 1 в каждую сторону. Цитата(maxfox2k @ Jan 23 2008, 19:06)  для связи разных клоков использовать fifo довольно просто, но надо помнить, что fifo занимает память, кратную размеру блока, например по 9216 бит, для cycloneiii что-то не понял.... FIFO достаточно на 1 байт клоки разные для разных направлений
|
|
|
|
|
Jan 23 2008, 20:36
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(MAXvaLL @ Jan 23 2008, 23:05)  Спасибо за ответы!
Да, именно так и нужно - буфер на 1 байт (но для каждого канала отдельно)
2 клока необходимо, т.к. скоросте для входных и выходных потоков надо иметь возможность настраивать независимо (ну, почти независимо - они кратны у меня могут быть) Тут поподробнее - параллельные концы (прием/передача) будут подключаться к одному CY7C68013 или к разным? Если к одному, то тут еще добавляется арбитраж входных и выходных каналов. Цитата А вот это самое интересное:  например для serial->parallel Считываем по 1 байту из каждого из 4х входных каналов (данные в них синхронные т.к. у них 1 клок, и непрерывные) Каждый байт пихаем в свой буфер (FIFO на 1 байт). Начинаем считывание следующего байта (для всех каналов) И в это время выводим один за другим принятые байты из буфера в паралл. интерфейс. т.е. время считывания 1 байта по посл. интерфейсу = времени выдачи 4х принятых байт. Это понятно, а по последовательному интерфейсу данные как-то управляются или льется непрерывная битовая последовательность? Если первое, то добавляется формирование фреймов и передача их в параллельный интерфейс. А если второе, то как предполагается управлять переключением FIFO в CY7C68013 - он же не будет отправлять данные из активного в данный момент FIFO, его надо сначала отключить от внешнего интерфейса. Цитата Делается для того, что бы загнать посл. потоки в CY7C68013. Если честно, то 4 потока это я взял по максимуму, в минимальном варианте может быть и 1 в каждую сторону. В общем, не совсем понятно с управлением всей этой штукой, но ничего принципиально нереализуемого пока не видно
|
|
|
|
|
Jan 24 2008, 20:24
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Цитата(XVR @ Jan 23 2008, 23:36)  Тут поподробнее - параллельные концы (прием/передача) будут подключаться к одному CY7C68013 или к разным? Если к одному, то тут еще добавляется арбитраж входных и выходных каналов.
Это понятно, а по последовательному интерфейсу данные как-то управляются или льется непрерывная битовая последовательность?
если второе, то как предполагается управлять переключением FIFO в CY7C68013 - он же не будет отправлять данные из активного в данный момент FIFO, его надо сначала отключить от внешнего интерфейса. К одному. А что есть такое арбитраж? Непрерывный поток. Насчет FIFO не понял... Вы имеете ввиду аппаратный или программный буфер?
|
|
|
|
|
Jan 25 2008, 07:13
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(MAXvaLL @ Jan 24 2008, 23:24)  К одному. А что есть такое арбитраж? Это есть полный абзац У CY7C68013 только один двунаправленный порт как на прием данный в ее FIFO, так и на чтение. У тебя с сериалайзера идет 2 потока - один на прием и один на передачу, так что их придется разделить по времени и засунуть в один параллельный порт CY7C68013. Цитата Непрерывный поток. Т.е можно нарезать по 8 бит не заботясь не о каких границах - это упрощает дело Цитата Насчет FIFO не понял... Вы имеете ввиду аппаратный или программный буфер? Я имею в виду буффер в CY7C68013. Насколько я понял для того, что бы передать блок по USB надо сделать следующее: 1) Подключить свободный блок памяти к внешнему интерфейсу 2) Закачать в него данные 3) Переключить блок на USB Engine 4) Стартовать передачу Т.е. одновременный прием с внешнего порта и передача ЭТОГО ЖЕ блока через USB невозможна (может быть я не прав - я глянул в datasheet по диагонали, но впечатление сложилось именно такое) Клоки на прием и передачу имеют кратные частоты? Если нет - то дело труба, придется делать внутренние FIFO и полноразмерный арбитр внешней шины Кстати, под такую задачу лучше подойдет FPGA - тригеров получается прилично, CLPD такой емкости будет стоить дороже аналогичной FPGA.
|
|
|
|
|
Jan 26 2008, 11:05
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Цитата(XVR @ Jan 25 2008, 10:13)  У CY7C68013 только один двунаправленный порт как на прием данный в ее FIFO, так и на чтение. У тебя с сериалайзера идет 2 потока - один на прием и один на передачу, так что их придется разделить по времени и засунуть в один параллельный порт CY7C68013. Т.е можно нарезать по 8 бит не заботясь не о каких границах - это упрощает дело Я имею в виду буффер в CY7C68013. Насколько я понял для того, что бы передать блок по USB надо сделать следующее: 1) Подключить свободный блок памяти к внешнему интерфейсу 2) Закачать в него данные 3) Переключить блок на USB Engine 4) Стартовать передачу Т.е. одновременный прием с внешнего порта и передача ЭТОГО ЖЕ блока через USB невозможна (может быть я не прав - я глянул в datasheet по диагонали, но впечатление сложилось именно такое) Клоки на прием и передачу имеют кратные частоты? Если нет - то дело труба, придется делать внутренние FIFO и полноразмерный арбитр внешней шины Кстати, под такую задачу лучше подойдет FPGA - тригеров получается прилично, CLPD такой емкости будет стоить дороже аналогичной FPGA. Да, вы совершенно правы, там одна (8/16 Б) шина, так что изначальная постановка задачи идет в жжж, а я балда Ну, как сказать... Нарезать-то можно по 8 (или 16) бит, но надо правильно нарезать - т.е. резать по началу байта Насколько я понял - там все аппаратно (для EP2-8). Надо только выбирать - пишем мы в шину, или читаем из нее. Пока клоки кратны, но по хорошему их надо вообще разделить. Пусть будет FPGA. Я уже на все согласен =) PS Кстати, то что я писал про 4 serial канала - это бред.  Можно сделать 1, но скорость там будет ~50МБит Может так проще?
|
|
|
|
Сообщений в этой теме
MAXvaLL Конвертер serial->8b parallel Jan 23 2008, 10:16 XVR Цитата(MAXvaLL @ Jan 23 2008, 13:16) Суть... Jan 23 2008, 11:47 MAXvaLL Цитата(XVR @ Jan 23 2008, 14:47) Рекоменд... Jan 23 2008, 12:38 XVR Цитата(MAXvaLL @ Jan 23 2008, 15:38) И чт... Jan 23 2008, 13:52 maxfox2k во-первых если устройство единичное, то лучше взят... Jan 23 2008, 16:06     XVR Цитата(MAXvaLL @ Jan 26 2008, 14:05) Да, ... Jan 26 2008, 11:51      MAXvaLL XVR, спасибо вам за помощь!
ЦитатаИтого, п... Jan 28 2008, 11:43       XVR Цитата(MAXvaLL @ Jan 28 2008, 14:43) XVR,... Jan 28 2008, 18:47        MAXvaLL У меня оказывается был старый даташит на CY. В кот... Jan 28 2008, 21:41         XVR Цитата(MAXvaLL @ Jan 29 2008, 00:41) SLCS... Jan 29 2008, 10:16          MAXvaLL Цитата(XVR @ Jan 29 2008, 13:16) Главное ... Jan 29 2008, 11:59           XVR Цитата(MAXvaLL @ Jan 29 2008, 14:59) Ну, ... Jan 29 2008, 15:09            MAXvaLL Цитата(XVR @ Jan 29 2008, 18:09) А что де... Jan 29 2008, 15:27             XVR Цитата(MAXvaLL @ Jan 29 2008, 18:27) Ниче... Jan 29 2008, 18:07              MAXvaLL Цитата(XVR @ Jan 29 2008, 21:07) Ну в общ... Jan 29 2008, 21:51               XVR Цитата(MAXvaLL @ Jan 30 2008, 00:51) А на... Jan 30 2008, 07:22 maxfox2k Цитата(MAXvaLL @ Jan 23 2008, 23:05) что-... Jan 23 2008, 23:21  XVR Цитата(maxfox2k @ Jan 24 2008, 02:21) есл... Jan 24 2008, 07:53 призрак Что мелочиться - пость возьмет чтото типа FLEX10K ... Jan 28 2008, 06:12 MAXvaLL Еще вопросец:
Есть разница на чем писать: AHDL/VHD... Jan 30 2008, 18:18 XVR Цитата(MAXvaLL @ Jan 30 2008, 21:18) Еще ... Jan 30 2008, 18:38  dvladim Цитата(XVR @ Jan 30 2008, 21:38) Verilog,... Jan 30 2008, 20:41   XVR Цитата(dvladim @ Jan 30 2008, 23:41) Не о... Jan 31 2008, 10:14  MAXvaLL Цитата(XVR @ Jan 30 2008, 21:38) Забыть, ... Jan 30 2008, 22:02   RHnd Проект не видел, но с верояностью 99% verilog/vhdl... Jan 31 2008, 07:23   khach Цитата(MAXvaLL @ Jan 31 2008, 01:02) Вида... Jan 31 2008, 08:15    MAXvaLL Цитата(khach @ Jan 31 2008, 11:15) Опишит... Jan 31 2008, 08:42 MAXvaLL Нашел I2S Interface core.
Но он на VHDL, а я уж вз... Jan 31 2008, 23:36 XVR Цитата(MAXvaLL @ Feb 1 2008, 02:36) Нашел... Feb 1 2008, 09:14  MAXvaLL Цитата(XVR @ Feb 1 2008, 12:14) Собственн... Feb 1 2008, 11:44   XVR Цитата(MAXvaLL @ Feb 1 2008, 14:44) Это п... Feb 1 2008, 12:59 MAXvaLL Смотрю тут сорец один:
Код...
reg bclk;
reg [3... Feb 1 2008, 14:56 XVR Цитата(MAXvaLL @ Feb 1 2008, 17:56) Смотр... Feb 1 2008, 15:33  MAXvaLL Цитата(XVR @ Feb 1 2008, 18:33) Автор пре... Feb 1 2008, 15:48 MAXvaLL Тут при реализации вопрос возник:
параллельная шин... Feb 3 2008, 12:32 XVR Цитата(MAXvaLL @ Feb 3 2008, 15:32) Тут п... Feb 3 2008, 15:58  MAXvaLL Цитата(XVR @ Feb 3 2008, 18:58) Поставить... Feb 3 2008, 20:04   XVR Цитата(MAXvaLL @ Feb 3 2008, 23:04) Это б... Feb 4 2008, 16:41    MAXvaLL Цитата(XVR @ Feb 4 2008, 19:41) IOBUF my_... Feb 4 2008, 18:19
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|