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

 
 
> CY7C68013A + ADSP-2181, Приделать USB к IDMA
Aluminium
сообщение Jan 29 2007, 20:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 26-01-07
Из: Саратов
Пользователь №: 24 791



Раньше была плата: к IDMA ADSP-2181 через ISA был подключен компьютер, или, наоборот, к компьютеру по ISA был подключен через IDMA ADSP-2181. Во загнул... wub.gif Короче, теперь требуется повесить IDMA на USB.

Вроде бы CY7C68013A терпит по I/O 5,25 В. Руки чешутся подсоединить напрямую. Хотя я так никогда не делал. А может быть, есть 5В аналоги CYPRESS? Да, плата питаться будет от USB. Можно?

Потом, хотел бы все сделать на флагах (I/O), но тогда могут быть конфликты на шине вследствие ошибок в программе. Это технически неверно, сам знаю. Но последнее время все чаще так делаю. Что думаете, господа разработчики?

И последний вопрос, так USB не занимался до этого. Везде рекомендуют на D+ и D- , бусины, а можно поставить просто дроссели? И какие лучше? Спасибо. a14.gif

Сообщение отредактировал Aluminium - Jan 29 2007, 20:58
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aluminium
сообщение Jan 30 2007, 22:50
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 26-01-07
Из: Саратов
Пользователь №: 24 791



Задача вот какая.

Есть 16-разрядный мультиплексированный порт процессора. По нему можно в память процессора писать данные или грузить программу. Из него можно читать данные или код (последнее труднее, потому что код 24-разрядный).
Для чтения и записи есть четыре управляющих сигнала: 4 входных (#IS, IAL, #IRD, #IWR) и один выходной IACK, который хочу завести на RDY. Еще нужно системный сброс #RESET на процессор.


#IS - это выбор порта, как #CS у озушки, например. Его можно и всегда разрешенным держать, но я им с порта собираюсь управлять.

Собственно IAL, #IRD, #IWR, которые хочу завести на CTLx, должны сопровождаться #IS.

IAL - защелка адреса, то куда или откуда я хочу читать.

#IRD и #IWR - собственно сигналы чтения и записи этого порта.

Каждое чтение или запись инкрементирует указатель адреса.

Поскольку мой порт - это порт прямого доступа в память, читать память я могу на всем скоку. Для квитирования того, что данные из памяти переписались в буфер порта служит IACK. Пока сигнал не встал, держи #IRD с #IS. (При записи не актуально.) Появился - снимай.

Общая задача состоит в том, чтобы периодически писать по IAL адреса, а потом по #IRD и #IWR писать и читать данные. Иногда сбрасывать процессор.

Да, испугался я при словах "техническое задание". :-)



Про конфликты на шине. Меня еще n-лет назад учили, что аппаратура не должна позволять программе себя сжечь. Поэтому никогда раньше не делал, чтобы программист мог одновременно и чтение, и запись заделать. Поэтому всегда предпочитал управлять устройствами с шины, а не портами ввода-вывода. А сейчас не хочется разбираться и вспоминать, особенно когда почти все так и делают. Знаю, что современный КМОП так не сожжешь, так что вопрос философский, ищу себе оправдания.


Спасибо за помощь.
Go to the top of the page
 
+Quote Post
jur
сообщение Jan 31 2007, 10:57
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



Цитата(Aluminium @ Jan 30 2007, 21:50) *
Есть 16-разрядный мультиплексированный порт процессора. По нему можно в память процессора писать данные или грузить программу. Из него можно читать данные или код (последнее труднее, потому что код 24-разрядный).
...
Общая задача состоит в том, чтобы периодически писать по IAL адреса, а потом по #IRD и #IWR писать и читать данные. Иногда сбрасывать процессор.
Вот, теперь понятно. Почти такая же задача стоит и у меня. Я пришел вот к какому решению (правда у меня не процессор, а FPGA, но это в данном случае без разницы).

1. Есть режим записи/считывания служебной информации посредством порта управления/состояния (т.е. набор внутренних регистров). Один из этих регистров служит защелкой начального адреса для блока данных.

2. Есть режим записи/считывания блоков данных размером в ендпойнту (у меня величина блока данных - 512 байт с перспективой увеличения до 1024 байта, когда специалисты из Cypress'а дадут ответ, как это сделать. Пока они уже почти неделю чешут репу, задали парочку дурацких вопросов, короче, виляют как уж на сковородке в попытках уклониться от моих пожеланий :-)

3. Для разделения этих двух режимов я использую свободную ногу порта ввода/вывода микроконтроллера в CY7C68013A. Типа, "1" - пишутся/читаются управляющие данные, "0" - пишутся/читаются блоки данных.

4. Для канала управления используется режим записи/считывания одиночного слова (GPIF Waveforms: Single Word Write и Single Word Read), в котором старший байт - номер регистра, а младший байт - данные для записи в этот регистр. Для считывания регистра используется более хитрый метод из двух операций: сначала записывается номер регистра в специальный регистр номера, а затем считывается байт данных того регистра, номер которого мы только что записали.

5. Для канала блочной передачи данных используется режим записи/считывания посредством FIFO (GPIF Waveforms: FIFO Write и FIFO Read).

Таким образом представляется, что в твоем случае можно использовать вэйвформу Single Word Write для записи начального адреса, а вэйвформы FIFO Write, FIFO Read для последующего записи/считывания данных. Тогда можно развести сигналы так: IAL, #IRD и #IWR на выводы CTL0...2, а #IS включить постоянно или подать на свободный вывод порта ввода/вывода. В вэйвформе Single Word Write будут активизироваться сигналы IAL=1 и #IWR=0 для защелкивания адреса, а в вэйвформах FIFO Write и FIFO Read - IAL=0 и #IWR=0 или #IRD=0 для передачи данных.

Цитата(Aluminium @ Jan 30 2007, 21:50) *
Да, испугался я при словах "техническое задание". :-)
:-)

Цитата(Aluminium @ Jan 30 2007, 21:50) *
Про конфликты на шине. Меня еще n-лет назад учили, что аппаратура не должна позволять программе себя сжечь. Поэтому никогда раньше не делал, чтобы программист мог одновременно и чтение, и запись заделать. Поэтому всегда предпочитал управлять устройствами с шины, а не портами ввода-вывода. А сейчас не хочется разбираться и вспоминать, особенно когда почти все так и делают. Знаю, что современный КМОП так не сожжешь, так что вопрос философский, ищу себе оправдания.
Ерунда, не бери в голову. Во-первых, в подобной ситуации с нынешними микросхемами трудновато что-то сжечь (я еще ни разу не сталкивался, хотя ошибки неоднократно допускал). Во-вторых, как я понял, данные из твоего процессора выдаются только по сигналу #IRD, и хорошо, что этот сигнал инверсный (хорошо тем, что в неинициализированной системе он будет неактивным; нужно только не забыть поставить подтягивающий резистор на Vcc). Таким образом твоя задача упрощается до минимума: нужно просто не допускать одновременного появления обеих сигналов #IWR и #IRD.


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Aluminium   CY7C68013A + ADSP-2181   Jan 29 2007, 20:56
- - Aluminium   Подумал я немножко и понял, что не следует делать ...   Jan 30 2007, 20:15
- - jur   Цитата(Aluminium @ Jan 29 2007, 19:56) Ра...   Jan 30 2007, 21:27
- - Aluminium   Спасибо большое. Радует, что я был прав. Пока рису...   Jan 31 2007, 21:33
|- - jur   Цитата(Aluminium @ Jan 31 2007, 20:33) Сп...   Jan 31 2007, 22:46
- - Aluminium   Сделали две платы. Хорошо получилось. Но запрогра...   Dec 14 2007, 08:36
- - Aluminium   Неужели никто не может помочь?   Dec 19 2007, 14:31
|- - Aluminium   Все получилось, программист несколько раз напортач...   Apr 10 2008, 07:42
- - Aluminium   Вроде бы все сделали, но одну проблему решить не м...   Aug 12 2008, 00:11
|- - Konst_777   Цитата(Aluminium @ Aug 12 2008, 03:11) Вр...   Aug 12 2008, 18:13
- - Aluminium   Понятно, наверно, для тех, кто работал с микросхем...   Aug 13 2008, 11:48
|- - Konst_777   Цитата(Aluminium @ Aug 13 2008, 14:48) По...   Aug 13 2008, 16:39
- - Aluminium   Спасибо. Все заработало. Дело было именно в этом.   Aug 14 2008, 14:12


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

 


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


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