| Автор |
Съобщение |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 UART/FIFO controllers
Някой ще ме светне ли какво ще рече това? Вече половин час се пуля и нямам еднозначен отговор на въпроса. UART естествено е ясно ама това FIFO .....
|
| Пон Май 02, 2005 4:29 pm |
|
 |
|
Lupus
Ранг: Форумен бог
Регистриран на: Сря Дек 01, 2004 12:44 am Мнения: 2811 Местоположение: София
|
|
| Пон Май 02, 2005 4:37 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Аз точно с това FT2232C се боря в момента да го проумея. Ама аз ли съм тъп или ми се губи нещо дето трябва да го знам пък съм го пропуснал,а може и даташита да не е добре написан ама не проумявам точно за какво става дума.
Това FIFO някава буферна памет ли трябва да се явява в която се релизират опашки за изпращаните и приеманите данни?
|
| Пон Май 02, 2005 5:15 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Да, FIFO е точно опашка. Например UART 16C550 има 16 байта буфер за предаване и 16 за приемане. Как работи напр. приемната част: При пристигане на байт обикновено CPU изпълнява прекъсване и обработва байта. Ако се забави с време, по-голямо от времето между два байта, следващият приет байт препокрива стария. При четене от регистъра за приет байт се чете новият байт, а старият е загубен. При наличие на FIFO дори забавянето на процесора с повече от няколко байта, информацията не се губи. При четене от адреса на регистъра FIFO подава първия приет байт, след това втория и т.н., докато се изпразни. След това се чете винаги само последния приет байт (докато дойдат нови). Това е в общи линии идеята за FIFO - да имаш по-редки прекъсвания и да допъскаш по-голяма латентност на ISR. Затова UART с FIFO обикновено се сетва да прекъсва при 10-14 байта запълване, а не при 1 или 16. При 1 ще те прекъсва много често, при 16 едно евентуално забавяне ще е фатално.
Дано съм те "оправил" 
|
| Пон Май 02, 2005 6:44 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Мерси,изясни ми се картинката  .
Като гледах нарисуваната блок схема на FT2232C съм забил в грешна посока,там буферите са външни за UART/FIFO контролера и аз се зачудих кво става,и обяснеието им малко мъгляво .... ама сега като знам за кво става дума всичко ми се вижда ОК.
|
| Пон Май 02, 2005 7:18 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Готино обяснение на FIFO е "ами обратното на LILO-last in last out" BateAz "опашка" в случая има същото значение като буфер, нали? И втори въпрос каво става когато въпросната опашка се препълни, всичките 16 байта заминават или те се запазват, а всеки нов байт се губи?
|
| Пон Май 02, 2005 7:40 pm |
|
 |
|
Lupus
Ранг: Форумен бог
Регистриран на: Сря Дек 01, 2004 12:44 am Мнения: 2811 Местоположение: София
|
Е то FIFO не е ли еднозначно на LILO?
Може би имаш в предвид FILO - "First In, last out"?
|
| Пон Май 02, 2005 8:02 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
За хората с чувство за хумор обеснявам:
FIFO - first in - first out. Нещата излизат в реда, в който са влезли. Напр. нормално функционираща храносмилателна система.
LIFO - last in - first out. Нещата излизат в ред, обратен на този, под който са влезли. Напр. претъпкан автобус - първи слизат тези, които последно са се качили. Друг пример - храносмилателна система след МНОГО тежко препиване.
|
| Пон Май 02, 2005 8:12 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Мерси, моя грешка. Мислех си нещо за едни мрежови устройства, но твоята корекция ми повдига нов въпрос в добавка към първия: Има ли разлика м/у FIFO и LILO при приоритетите кой баитове да се изгубят при препълнена опашка. Да не би при един от методите да се запазват първопристигналите байтове, а всички нови да се губят, а при другия да е обратното?
|
| Пон Май 02, 2005 8:14 pm |
|
 |
|
0x00
Ранг: Минаващ
Регистриран на: Пет Мар 18, 2005 4:14 pm Мнения: 67 Местоположение: Русе.BG/Oldenburg.DE
|
LILO е bootmanager за x86
Няма значение каква е опашката, ще се изгубят тези байтове, които са "последни" и в двата случая. Разликата е, че при FIFO опашката ги "вземаш" от там в права, а при FILO - в обратна последователност.
|
| Пон Май 02, 2005 11:49 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
ставаше въпрос за разликата м/у FIFO и LILO, ако има такава. А иначе LILO-то е Linux Loader, но ако си "спортист" може и само бози да си бутваш с него 
|
| Вто Май 03, 2005 12:31 am |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
...
Последна промяна ¶ на Съб Яну 28, 2012 10:46 am, променена общо 1 път
|
| Вто Май 03, 2005 12:52 am |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
не не имах в предвид друго. Понеже 0х00 писа, че е за х86, исках да наблегна, че е писан за Линукс, но няма никакъв проблем ако ти се спортува  да го ползваш на машина с две бози (без линукс) Иначе и аз съм 4-та година с него и съм го ползвал с различни конфигурации.
|
| Вто Май 03, 2005 1:01 am |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
...
Последна промяна ¶ на Съб Яну 28, 2012 10:46 am, променена общо 1 път
|
| Вто Май 03, 2005 1:06 am |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
И аз не се изразих както трябва, но щом настояваш... няма да спорим за глупости сега  жалко само, че не пия бира, но нищо не ни пречи да го обсъдим някой път кой с бира кой с чай Поздрави на всички и аз съвсем забравих Христос Воскресе, пожелавам ви всичко най-добро на всички във форума 
|
| Вто Май 03, 2005 1:17 am |
|
|