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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> ATA контроллер & ПЛИС
DmitryR
сообщение Sep 24 2009, 09:45
Сообщение #16


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Kuzmi4 @ Sep 24 2009, 12:18) *
Код
assign    ch1_dd_pad_i    = ch1_dd_pad;
assign    ch1_dd_pad     = (ch1_dd_padoe_o)? ch1_dd_pad_o : 16'bz;

Откуда мусор на ch1_dd_pad_i когда ch1_dd_padoe_o == 1 ?? smile3046.gif

Я конечно не гуру верилога и может быть скажу глупость, но написал бы
Код
assign ch1_dd_pad=(ch1_dd_padoe_o==1'b1) ? ch1_dd_pad_o : 16'bzzzz_zzzz_zzzz_zzzz;
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 24 2009, 10:00
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 DmitryR - так а разницы никакой нет - по 2001 стандарту он должен был расширить влево моё третье состояние до 16 разрядов. Для успокоения совести всё же пересобрал и залил - поведение идентичное предыдущему..
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Sep 24 2009, 12:11
Сообщение #18


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Смотрите тогда схематику, что после синтеза получилось, там явно что-то упростилось или иным образом раскосячилось.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 24 2009, 12:41
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Смотрю осцилом на лапах, и чипскопом сигналы - что осцил что чипскоп говорят одно и то же - времянка на запись и чтение согласно спецификации - вот это меня и ставит в тупик, на матери винт проверял - в биосе видится, значит IDENTIFY DEVICE проходит всё таки...
Самое подозрительное - это мусор на лапах данных при записи (хотя отчётливо видно из assign-ов, что на них должны быть стабильные данные).

Счас немного модифицировал дизайн для проверки (опустился на самый низ - примитивы прост опроверить)
Код
assign    ch1_dd_pad_o     = 16'hAAAA;
assign    ch1_dd_pad_i    = ch1_dd_pad;    
assign    ch1_dd_pad     = (ch1_dd_padoe_o)? ch1_dd_pad_o : 16'bz;

assign    LED1_n        = ch1_dd_pad_i[0];
assign    LED2_n        = ch1_dd_pad_i[1];
assign    LED3_n        = ch1_dd_pad_i[2];

ch1_dd_padoe_o - беру с кнопки на ПП.
Проверил в технолоджи-мапе как он конструирует это всё (работаю с Xilinx) - через IOBUF - как и должен. На вход IO этому IOBUF заводится шина dd_pad, сигналы на которую выводятся с pad_o через OBUFT. То есть вообсче не к чему придраться вроде бы со стороны плиски (всё как заказывал).

В немодифицированном дизайне конструкция чесная, через IOBUF - как и должна быть, но откуда тогда берётся мусор на линии данных когда я пишу в шину, получается ата-девайс начинает гадить, но с какого это....
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Sep 24 2009, 14:17
Сообщение #20


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Kuzmi4 @ Sep 24 2009, 16:41) *
Смотрю осцилом на лапах, и чипскопом сигналы - что осцил что чипскоп говорят одно и то же - времянка на запись и чтение согласно спецификации

Да как же согласно спецификации, когда при ch1_dd_padoe_o=1 на выходе идет мусор?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 24 2009, 14:23
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 DmitryR - я имел ввиду управляющие сигналы, а данные - их моного - потому их лучше смотреть через чипскоп.. А при ch1_dd_padoe_o=1 на ch1_dd_pad_i мусор может быть только в одном случае - если винт при ch1_diown_pad_o=0(запись параметров в винт) не перестаёт выдавать данные на шину (сам провод проверил - сигнал доходит до шлейфа), что само по себе странно 07.gif

Пытаюсь сделать софтварный ресет - проходит как когда
Прикрепленное изображение

Объяснение этому видими что иногда контроллер винта захватывает корректные данные, иногда нет..Осталось только определить зачем винт на шину выдаёт данные в момент ch1_diown_pad_o=0 (по стандарту в это время ата девайс слушать должен, а не выдавать)..
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 26 2009, 08:31
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



На будущее, может кому будет полезно - радиоэлектроника- наука про контакты, и с проектированием переходников уровней нужно внимательным быть laughing.gif.
Кстати , может кто посоветует грамотные переходники уровней с 2.5В на 5В, так чтоб 2направленные были (а то один тут уже выбрали maniac.gif ) ?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Sep 26 2009, 13:49
Сообщение #23


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Kuzmi4 @ Sep 26 2009, 12:31) *
Кстати , может кто посоветует грамотные переходники уровней с 2.5В на 5В, так чтоб 2направленные были (а то один тут уже выбрали maniac.gif ) ?
С 3.3 могу сказать - QS3861. Он в одну сторону будет понижать 5 вольт и обрезать овершуты, а обратно пропускать как есть, благо пятивольтовый вход нормально воспринимает сигналы драйвера 3.3 вольта.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 28 2009, 03:15
Сообщение #24


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Kuzmi4 @ Sep 26 2009, 03:31) *
На будущее, может кому будет полезно - радиоэлектроника- наука про контакты, и с проектированием переходников уровней нужно внимательным быть laughing.gif.
Кстати , может кто посоветует грамотные переходники уровней с 2.5В на 5В, так чтоб 2направленные были (а то один тут уже выбрали maniac.gif ) ?


мне нравятся вот эти Dual Supply Translators

http://focus.ti.com/paramsearch/docs/param...AliasId=1100707

использовал SN74ALVC164245

http://focus.ti.com/docs/prod/folders/prin...alvc164245.html

доставал через чип дип


--------------------
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 28 2009, 08:16
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 des00 - с использованием DIR жизнь становится проще laughing.gif (были заложены эти )
Go to the top of the page
 
+Quote Post
baken
сообщение Sep 28 2009, 08:42
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 27-01-09
Из: г.Жирновск
Пользователь №: 44 025



Цитата(des00 @ Sep 28 2009, 07:15) *
мне нравятся вот эти Dual Supply Translators
использовал SN74ALVC164245

А у меня так ничего и не вышло. Делал самопальный usb-hdd переходник для ATA винта, без UDMA. Удалось даже прочитать его каталог, и файлы киношек с винта вытащить. Но работало нестабильно. Использовал как раз похожие двухуровневые переходники от Ti. И хотя по диаграмме все было верно, никаких там всплесков, но похоже есть еще какие то подводные дела. В результате винт заткнулся причем надолго. Такое впечатление что у было где то наложение выходов друг на дружку во время переключения трансляторов SN74, и в итоге выходные буферы винта перегревались и переставали работать. Где это происходило, в каком месте так и не смог выловить. Общая конструкция была такая. Плата usb, разъем IDE40, шлейф 10см, разъем IDE40, плата трансляторов уровней, разъем IDE40 и шлейф 20см, собственно к винту. Возможно вот эта куча разъемов на пути сигналов сыграла свою роль.
Может у автора такая же штука, сигналы двигаются от чипа к винту очень по разному.


--------------------
Еж - птица гордая. Не пнешь - не полетит.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Sep 28 2009, 12:08
Сообщение #27


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



А я думаю, что у вы оба споткнулись на похожей заковырке - недосмотрели одно место, где надо прочитать информацию из винта и пишите ему навстречу.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 28 2009, 12:42
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Вопрос с буфером решился интересно - отгрызли шлейф по максимуму и удалось стабильно читать, хотя на осциле как всё таки есть кака - стремновато, 100% гарантии что всегда будет приходить/уходить нет изза неё..
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 19 2009, 09:56
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



И снова здравствуте.

Опять натолкнулся на некоторые трудности. Очень специфический момемент, литературу перерыл, по инету полазил - что-то не нашёл ответа.
Собственно проблема такого плана - есть модуль с машинкой - чтение/запись (объём - 1 сектор).
Читать могу сколько угодно - всё завершается без ошибок. А вот с записью есть некая заковыка - использовал для проверки такую последовательность действий - читаю в блоковую память плиски сектор (512Б), модифицирую, записываю обратно в тот же сектор, читаю - сравниваю. Значит всё шло хорошо до момента 2-го чтения - когда нужно вычитать из сектора то, что модифицировал на предыдущих этапах. Возвращается DRDY == 1 - то есть девайс готов и BSY==0,DRQ==0 - то есть в девайсе произошла ошибка, такое происходит всегда после обрабатывания запроса записи (чтений штук 10 вставлял даже, а между ними запись, или записи 5 штук - именно после первой же записи на следующей любой транзакции получаю BSY==0,DRQ==0).
И что самое интересное - если провести софтварный сброс - и начать заново вышеописанную последовательность действий - всё повторятся по кругу (всмысле ошибка на следующей транзакции после запииси сектора). Чтение же после софтварного ресета показывает немодифицированный блок - что тоже странно , потому как первая процедура записи возвращает статусовый регистр с нормальным завершением.

Код машинки приложил Прикрепленный файл  ide_rw_1sector00.txt ( 9.6 килобайт ) Кол-во скачиваний: 222

Писал её по атапи-7 и сравнивал с найденными в инете исходниками для МК - вроде одно и тоже, но отчего то не работает .

Пио0-тайминги делает другой процесс - для него управляющий сигнал - strobe_in/out, сигнал в главную машину что операция закончена - pio_cyc_ok
Прикрепленный файл  pio_timing_module.txt ( 2 килобайт ) Кол-во скачиваний: 176

...
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 20 2009, 06:29
Сообщение #30


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Во-первых, по описанию я не вижу, чтобы (BSY==0 & DRQ==0) сигнализировало об ошибке.

Затем, вы CRC как считаете? Я тут решил-таки сделать SATA и напоролся, что стандартный Xilinx CRC32 блок считает его как-то неправильно, WebCase на эту тему висит уже 12 дней.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:12
Рейтинг@Mail.ru


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