|
|
  |
Конвертер serial->8b parallel, Хочу сделать на CPLD от Альтеры |
|
|
|
Jan 28 2008, 18:47
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(MAXvaLL @ Jan 28 2008, 14:43)  XVR, спасибо вам за помощь! 1) Параллельный интерфейс 8бит к CY7C68013 (8 должно хватить по скорости, а ноги нужны свободные у МП) FD[0-7] IFCLK SLOE (SLCS я не видал, есть CS, но это к памяти. А SLOE надо отдельно) SLRD SLWR PKTEND FIFOADDR[0-1] 2) Последовательный интерфейс (2 шт) clk dat[0-3] (что значит 0-3 ?) Это значит 4 канала Цитата strobe (есть. период = 8 БАЙТ если в слове 32 бита, либо 4БАЙТА, если в слове 16бит) 3) Управление pkt_switch (не понял  ) Нарезка на USB пакеты. Насколько я понял CY работает так: 1) Данные заливаются в FIFO CY 2) Выставляется PKTEND, текущее FIFO начинает выливаться в USB 3) Переключаемся на другое FIFO Цитата А как можно ОДНОВРЕМЕННО?  Этаж невозможно... Потоки-то льются одновременно, а FIFO на что? Как раз для разделения по времени. Последовательные входные и выходные потоки - одновременно, потоки в FIFO CY - по очереди Цитата Да, сложно получается. Я тут попробовал сделать на логике - получилось, но для одинаковых частот. 2 регистра сдвига, с промежуточными регистрами, счетчик и по мелочи: и, или, инверторы... Я думаю если хорошо подумать, то для кратных тоже можно сделать. А для разных частот, я пока даже не представляю что делать...  2 FIFO в FPGA + арбитер, выливающий данные из непустых FIFO в CY по очереди Цитата 4х битный serial Это как? Это последовательно/паралельный интерфейс - последовательно по 4 бита за раз. От 4х отдельных serial каналов отличается порядком битов в выходной последовательности Цитата А какая разница как передавать? Пихаем в буфер, а USB контроллер сам пусть разбирается  Боюсь, что не разберется. Похоже им надо управлять Что касается FPGA то подойдет практически любая из младшего семейства, например Spartan2 (E) или Spartan3 (E) от Xilinx (у Alter'ы не знаю - не работал)
|
|
|
|
|
Jan 28 2008, 21:41
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
У меня оказывается был старый даташит на CY. В котором непонятно было нехрена. Отсюда и недопонимание было.... Новый оказался куда лучше SLCS# там таки появился. Но его можно всегда на select Цитата(XVR @ Jan 28 2008, 21:47)  Нарезка на USB пакеты. Насколько я понял CY работает так: 1) Данные заливаются в FIFO CY 2) Выставляется PKTEND, текущее FIFO начинает выливаться в USB 3) Переключаемся на другое FIFO Да, но есть еще авто режим, когда пакет отправляется, набрав X байт. В моем случае это удобнее, т.к. пакеты постоянной длинны. Соотв-но PKTEND не нужен. Цитата 2 FIFO в FPGA + арбитер, выливающий данные из непустых FIFO в CY по очереди А если скорости в несколько раз (до 4х) отличаются? Там ничего не зашкалит? Цитата Это последовательно/паралельный интерфейс - последовательно по 4 бита за раз. Не, это не пойдет однозначно. Либо 4 канала. Либо 1 на скорости в 4 раза выше. Цитата Боюсь, что не разберется. Похоже им надо управлять Ткните меня в даташит пожалуйста (параграф). Что-то не вижу чем надо управлять... Цитата Что касается FPGA то подойдет практически любая из младшего семейства, например Spartan2 (E) или Spartan3 (E) от Xilinx (у Alter'ы не знаю - не работал) А насколько это дорого? По сравнению с теми же CPLDхами?
Сообщение отредактировал MAXvaLL - Jan 28 2008, 22:00
|
|
|
|
|
Jan 29 2008, 10:16
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(MAXvaLL @ Jan 29 2008, 00:41)  SLCS# там таки появился. Но его можно всегда на select Его можно вообще на землю Цитата Да, но есть еще авто режим, когда пакет отправляется, набрав X байт. В моем случае это удобнее, т.к. пакеты постоянной длинны. Соотв-но PKTEND не нужен. Ок Цитата А если скорости в несколько раз (до 4х) отличаются? Там ничего не зашкалит? Главное что бы скорость приема/передачи в CY была больше, чем у последовательных интерфейсов Цитата Не, это не пойдет однозначно. Либо 4 канала. Либо 1 на скорости в 4 раза выше. А как надо биты из этих 4х каналов складавать в выходные байты в CY? Цитата Ткните меня в даташит пожалуйста (параграф). Что-то не вижу чем надо управлять... Отбой, в datasheet'е было очень туманно описан процесс передачи буферов между SIE/CPU/Peripheral, скачал
Endpoint FIFO Architecture of EZ-USB FX1/FX2 - там вроде все проще, ничем управлять не надо. Кстати, а что делать с исчерпанием/переполнением FIFO в CY? Цитата А насколько это дорого? По сравнению с теми же CPLDхами? XC2S50E-PQ208C ~ $19 XC3S100E-4VQG100C ~ $12
|
|
|
|
|
Jan 29 2008, 11:59
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Цитата(XVR @ Jan 29 2008, 13:16)  Главное что бы скорость приема/передачи в CY была больше, чем у последовательных интерфейсов
А как надо биты из этих 4х каналов складавать в выходные байты в CY?
Кстати, а что делать с исчерпанием/переполнением FIFO в CY? Больше. Полюбому Надо байты последовательно (по номерам) Я думаю все же проще 1 канал скоросной. Там уже все само разложено как надо. Ну, переполнения не должно быть - ибо авто отправка =) Надо только Х с умом выбрать. Это надо для ручной отправки при помощи пакетенда, чтобы знать,что буфер уже забит. А пустой - буфер - значит читать больше нечего
|
|
|
|
|
Jan 29 2008, 15:09
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(MAXvaLL @ Jan 29 2008, 14:59)  Ну, переполнения не должно быть - ибо авто отправка =) Надо только Х с умом выбрать. Это надо для ручной отправки при помощи пакетенда, чтобы знать,что буфер уже забит. А пустой - буфер - значит читать больше нечего  А что делать для канала USB -> Serial если FIFO в CY пустое? Что передавать? Да и с одним каналом на 50 МГц скорее всего получится, хотя потребуется указать тайминги фитеру.
|
|
|
|
|
Jan 29 2008, 15:27
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Цитата(XVR @ Jan 29 2008, 18:09)  А что делать для канала USB -> Serial если FIFO в CY пустое? Что передавать?
Да и с одним каналом на 50 МГц скорее всего получится, хотя потребуется указать тайминги фитеру. Ничего.  USB должен успевать подсовывать данные. Можно подробнее - ничего не понял
|
|
|
|
|
Jan 29 2008, 18:07
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(MAXvaLL @ Jan 29 2008, 18:27)  Ничего. USB должен успевать подсовывать данные. Можно подробнее - ничего не понял  Нужно будет указать программе разводки FPGA, что у тебя на сериальных клоках идет 50 MHz, и указать все времена установок/задержек последовательных данных относительно клоков. Для 13 MHz это не обязательно (но желательно), FPGA успеет в любом случае Ну в общем, если это все устраивает, то берешь ISE WebPack (если Xilinx) или что там у Alter'ы, пишешь схему в Verilog'е, разводишь и заливаешь через CY (ноги для заливки придется предусмотреть)
Сообщение отредактировал XVR - Jan 29 2008, 18:20
|
|
|
|
|
Jan 29 2008, 21:51
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Цитата(XVR @ Jan 29 2008, 21:07)  Ну в общем, если это все устраивает, то берешь ISE WebPack (если Xilinx) или что там у Alter'ы, пишешь схему в Verilog'е, разводишь и заливаешь через CY (ноги для заливки придется предусмотреть) А насколько это геморно будет? Ну, по объему, примерно. Я тут видел конвертер SPI-I2C, шибко много кода.  Предусмотреть надо в CY? И сколько? Значит на FPGA полюбому лучше?
Сообщение отредактировал MAXvaLL - Jan 29 2008, 21:52
|
|
|
|
|
Jan 30 2008, 07:22
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(MAXvaLL @ Jan 30 2008, 00:51)  А насколько это геморно будет? Ну, по объему, примерно. Я тут видел конвертер SPI-I2C, шибко много кода.  Это будет больше, чем SPI-I2C конвертер  FIFO будут сгенерированны автоматически CoreGen'ом, остальное придется писать ручками в Verilog'е (строк 500-1000 примерно) Цитата Предусмотреть надо в CY? И сколько? 2 выделенных + 3 разделяемых с параллельным интерфейсом (причем 1 из них Open-drain)Цитата Значит на FPGA полюбому лучше? CPLD такой емкости, что бы туда влезла пара FIFO будет стоить на порядок больше. Кстати, понадобится синхронизация скорости потоков USB->FPGA и FPGA->Serial, иначе никаких FIFO не хватит. Т.е. еще как минимум нужен входной сигнал о непустом передающем буфере FIFO в CY
|
|
|
|
|
Jan 30 2008, 18:38
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(MAXvaLL @ Jan 30 2008, 21:18)  Еще вопросец: Есть разница на чем писать: AHDL/VHDL/Verilog? Что лучше начать изучать? Verilog, однозначно Цитата А что вы скажите по поводу графики? (ну, элементы там всякие клепать) Забыть, как страшный сон. Объемы современных схем таковы, что в графическом виде они займут не одну пачку бумаги Цитата А можно прописать логику, а ПЛИС выбрать потом, по потребностям того, что получилось? До некоторой степени можно. Для создания проекта в IDE всеравно придется выбрать какой то тип ПЛИС, потом можно его поменять.
|
|
|
|
|
Jan 30 2008, 20:41
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(XVR @ Jan 30 2008, 21:38)  Verilog, однозначно  Не однозначно. Verilog и VHDL занимают примерно по 50% рынка. Исторически повелось, что Verilog чаще использовался для проектов в ASIC. Для проектов в ПЛИС чаще используют VHDL. Но оба этих языка примерно равны и являются лидерами. Перспективным считается SystemVerilog, но его рынок пока невелик.
|
|
|
|
|
Jan 30 2008, 22:02
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Цитата(XVR @ Jan 30 2008, 21:38)  Забыть, как страшный сон. Объемы современных схем таковы, что в графическом виде они займут не одну пачку бумаги  Видал я тут: Цитата Ну вот например, как сделать грубо говоря, видеоплату? Интересен сам подход. Т.е. в моем девайсе есть два SRAMа по 1Мбайт каждый. Есть видеоцап (ADV7123), в альтере сидит загружаемая таблица - палитра. И того имеем 256 цветов из палитры 2^24. Надо разворачивать видеобуфер сквозь эту таблицу в ЦАП, причем SRAM читаем с интерливом (т.к. они 10 нс, а максимальная частота на выходе - 200МГц). А еще надо уметь в SRAM записывать, желательно во время чтения. А еще там болтается SPI DataFlash на 1Мбайт, из которой надо уметь вытащить данные, разжать из RLE и сунуть в SRAM. Да, а тактируется это все от PLL, которая умеет давать частоты от 2 до 200МГц с шагом 1 КГц, снаружи только ГУН. Ну и само собой, должны быть счетчики синхронизации. Вот примерно такой девайс. Добавлю, что он у меня сейчас стоит на столе, а справа стоит монитор, на котором светится картинка, формируемая этим девайсом 100% схемного ввода... Тактовая сейчас 135, разрешение 1280*1024@75Hz (больше LCD монитор не тянет), работает превосходно (после долгих мучений), распаковывает картинку за 0.12 секунды, правда с монопольным доступом к SRAM во время записи.
А что бы мне тут дал верилог?? И как вам такое?
|
|
|
|
|
Jan 31 2008, 08:15
|
Гуру
     
Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741

|
Цитата(MAXvaLL @ Jan 31 2008, 01:02)  Видал я тут: И как вам такое?  удаление гланд через непредназначенное для этого отверстие. Полное отсутствие возможности пользоваться отлаженным сторонним кодом. @MAXvaLL Опишите функцию своего устройства, а то меня терзают смутные сомнения что городиться преобразователь I2S-шина CY7C68013 для аудиоустройства? Тгда всю проблему можно решить парой ссылок на opencores.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|