| Автор |
Съобщение |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
 STR710 EMI - обърках се...
|
| Сря Авг 16, 2006 4:44 pm |
|
 |
|
Balkana
Ранг: Популярен
Регистриран на: Чет Дек 01, 2005 10:42 pm Мнения: 301
|
Значи положението е следното:
двата WE са необходими за да може шината да различава байтови операции по младшия и старшия байт при запис, защото запис на половинката дума трябва да не съсипва другата половина. При четене строба е един, а процесора сам игнорира частта която не го интересува.
Паметта която искаш да свържеш не става да се върже директно без логика - тя има отделни enable за всяка своя половина, които сработват като разрешение и при четене и при запис.
За да свържеш паметта коректно се налага да се направи логика с неизползвания адрес А0, и всичките останали сигнали за управление на паметта: WE0, WE1 и RD, от които да изработиш LB и UB. Ако не гониш бързодействие от РАМ-а който привързваш, най-лесно е както казваш да се включи 8-битов РАМ, и чип-селекта, който го избира, да се конфигурира в 8-битов режим. В този случай, минаваш без никаква междинна логика. Недостатъка е че при 32-битова операция с паметта (най-честия случай, понеже сметалцето е 32-битово) шината ще прави 4 последователни цикъла, с прилежащите им waitstates; при 16 битова операция - съответно 2 последователни цикъла.
16-битова памет на 2 х 8 може да работи по следния начин:
например долната спомената от тебе памет - 2-те 8-битови половинки на се връзват заедно към младшата част на шината на процесора:
при което шината отново трябва да вържеш: А1 на процесора, А0 на паметта, и т.н.
Адреса А0 с права логика отива на LB, и с инверсна логика - на UB
всички останали сигнали се връзват нормално. Т.е. при това връзване отива 1 инвертор
|
| Сря Авг 16, 2006 8:42 pm |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
Абе знаех си аз че не е проста работа...
Да видим дали съм разбрал.
Идеята е да се ползва памет с 16 битова шина за да бъде по-бърз трансфера. Обаче трябва да се направи така, че да е възможно маскирането на младшия и старшия байт, защото има и побайтови операции??
Гледах схемата на развойната платка. Там проблема е решен просто - ползвали са две 8 битови памети, всяка свързана към собствен /WE. Обаче освен че заема повече място, е и по-скъпо.
На други платки наистина съм виждал 16 битова памет + допълнителна логика...
Няма ли някъде по-подробно описание на тоя блок (поне времедиаграми на различните случаи - тези в мануала на STR710 май не изчерпват въпроса) или трябва да се чете в дебелите книжки за АРМ? Мисля че схванах "сюжета" ама все пак...
|
| Чет Авг 17, 2006 10:23 am |
|
 |
|
Balkana
Ранг: Популярен
Регистриран на: Чет Дек 01, 2005 10:42 pm Мнения: 301
|
Точно тъй, така е - 16-битова за производителност. Разделните WE са точно заради това - защото софтуера може да иска и има пълното право да модифицира само 1 байт от 16-битовата полудума.
По подробно описание мисля няма да намериш. Поне аз не чувствам нужда от повече информация от текста и няколкото времедиаграми в user manual-а.
Ако трябва, обаждай да помагам още. Тъй или иначе и аз съм взел 16-битова бърза памет, и се каня да я вържа към туй чудо, и мисля да поставя между паметта и процесора едно CPLD - например XC9536XL - струва около 1$ и не оскъпява кой-знае колко. Би могъл да използваш и SMD едногейтови елементи за логиката, тъй като тя е проста. Все пак, ако гониш производителност, добре е да се върже на 16-те бита; тъй или иначе шината работи с поне +1 допълнителен цикъл чакане при четене (user manual-a на страница 25).
|
| Чет Авг 17, 2006 8:39 pm |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
Точно същото си мислех и аз. Дори съм го сложил на схемата вече. Ще прекарам управляващите сигнали през него, а съм сигурен че ще се използва цялото - има какво да се сложи вътре... Ако объркам нещо - лесно се променя - не е като нова ревизия на платка...
Производителност се гони, още повече че ще ползвам не толкова бърза памет - 55 или 70ns, тъй че 16 бит са задължителни в моя случай...
Ок, действам, пък като възникнат въпроси пак ще питам
10х
|
| Пет Авг 18, 2006 9:47 am |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
Пиша тук, за да не отварям нова тема.
В схемата на JTAG-a има следната простотия (на картинката). Изобщо на виждам смисъла й....
Последна промяна velio на Чет Авг 24, 2006 4:10 pm, променена общо 2 пъти
|
| Сря Авг 23, 2006 12:39 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Може да си го реализираш както си искаш,важното е когато ти слезе ресета в 0 да ти слезе в 0 и /JRST.
Но имай пред вид че R92 i C79 ти дават закъснеие. тоест JRST ще се активира по късно. а при деактивирането ще слязат в 0 почти едновременно защото транзистора разрежда C79 веданага. В вериагата намаш токоограничаващ резистор.
|
| Сря Авг 23, 2006 12:55 pm |
|
 |
|
Balkana
Ранг: Популярен
Регистриран на: Чет Дек 01, 2005 10:42 pm Мнения: 301
|
И аз се чудех върху таз верига; в края на краищата я повторих така както е дадена, предполагам че е зор за синхронизация на TRST и RST. с транзистори SMD не заема място. Моя съвет е да си я поставиш както я дават, иначе може да загубиш дебъгването.
|
| Сря Авг 23, 2006 7:15 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Споко,не е капризно. На моята платка за експеримента махах T1 и на мястото на колектора му връзвах един диод към ресета. Съвсем нормално се дебъгваше.
Най удачно решение за случая мисля че е един P-N-P транзистор емитера на който да е където сега е колектора на Т2/JRST/,базата директно на RESET а колектора на маса. C79 за този случай трабва да го направиш 15 или 22 nF.
3 резистора и един транзистор по малко от оригиналното решение.
|
| Сря Авг 23, 2006 8:00 pm |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
Аве гледам тука пише, че /CS0 е 16bit access only. Това значи ли че не може да се пише побайтово (/we0 /we1 и 16 бит памет) или просто че може да се връзва само 16 бит памети?
|
| Чет Авг 24, 2006 12:33 pm |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
В продължение на темата за JTAG-a, на едно друго място (STR71x Hardware Development - Getting Started.pdf) се чете следното.
Кое е вярното???
Последна промяна velio на Чет Авг 24, 2006 4:11 pm, променена общо 1 път
|
| Чет Авг 24, 2006 1:31 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Кое те притеснява тук
|
| Чет Авг 24, 2006 1:43 pm |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
Всъщност ми се струва че това второто е по вярно.
При първото винаги има връзка между двата ресета. При второто - само като се тури джъмпера.
|
| Чет Авг 24, 2006 4:09 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Да втората е по удачна.
Кога ще ти се наложи да го махаш тоя джъмпер? Аз поне не видях причина да го слагам и на моята платка тази верига си е постоянно включена.
|
| Чет Авг 24, 2006 4:20 pm |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
Идея си нямам. Тука имаме три платки и на трите джъмпера не е сложен (т.е. има го но само на едното краче).
Много се дразня на такива решения - дето уж имат смисъл, но само при всяко трето пълнолуние, и то ако се пада в петък... 
|
| Чет Авг 24, 2006 4:33 pm |
|
|