Отговори на тема  [ 68 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща
Търся простичък примерен проект за ISA контролер 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
MYXATA написа:
Реконструктор,
какво по-просто от иса-шината...:)
1.компаратор -> за адресите - поне 12 бита(може и с по-малко но за ДОС)
2.входно-изходни буфери-> поне 8бита(със 16 повече ядове полза никва)
3.системен такт - > идва от ПЦ-то(ха сега де като че ли беше 8мегахерца )
4.+12;+5 волта->идва от пц-то
5.IRQ-та-> мисля, че бяха 4.....

вече с 1 ЦПЛД си го правиш и си пееш...

софтварето ...най-лесно ми беше с borlandС


Относно тактуването, няма ли си някакъв latch? Ако тактуването е отделно, как се синхронизира с mcu-то?


Вто Апр 17, 2007 11:56 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
Реконструктор написа:
danov написа:
Ако искаш имам ISA платки с DSP-та на тях - ADSP-21xx. Някъде имам и схемите, и някакъв софтуер.
Даже трябва да имам MPEG2 audio encoding/decoding за тях.
Едната е даже с 2 процесора, които си приказват през dual port SRAM.


Мерси, но това ми е прекалено сложно. :)


както ти е мисал @мухата - от ISA-та по-просто няма :) :
- трябва ти адресен дешифратор (адр. шина) и сигнала за I/O адрес (за ... чипселект)
- сигнал R/W
- буфер за данновата (8-бит примерно)
- ако ти трябвa irq го вързваш на съответния пин на ISA-та (IRQ 2...15)
и ъъъ... май-това беше :)
.. преди 10-12г правихме една ISA карта с 2 COM порта (16ц450/16ц550) ... обаче е останало само CDO-то ... схемата я е Фанала липсата (сигутно е архивирана на хартиен носител :) )

софтуерно ... е възможно най-просто:
инсталираш си обработчика на прекъсване (директно в таблицата ... сегмент:отместване)
обработчика на прекъсването трябва да изчисти флага за прекъсване в irq контролера

примерче :):

void InstallIRQHandler (void)
{
asm CLI

asm SUB AX,AX
asm MOV ES,AX

/* обработчик на  IRQ */
asm MOV BX, CS:[BaseIRQ] /* номера на IRQ */
asm CMP BX, 8
asm JB E_34
asm ADD BX, 0x70-8 /* IRQ8-15 -> 70h-77h */
asm JMP E_35
E_34:
asm ADD BX, 8 /* IRQ0-7 -> 8-F */
E_35:
asm SHL BX,1
asm SHL BX,1
asm MOV WORD PTR ES:[BX+0],offset InterruptHandler
asm MOV WORD PTR ES:[BX+2],CS
...
}

interrupt InterruptHandler (void)
{

asm STI

// изчистване на флага за прекъсване
asm MOV DX, CS:[IRQcntrl] /* CS:[IRQcntrl] -> адреса на IRQ контролера: за IRQ0-IRQ7 е 0x21, за IRQ8-IRQ15 е 0xA1 */
asm DEC DX
asm MOV AL, 20h
asm CMP DL, AL
asm JE E_13
asm OUT DX, AL
E_13:
asm OUT 20h,AL
...
/* четене/писане в регистрите на ISA картата :) */
...
}

:)


Вто Апр 17, 2007 12:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
Реконструктор..
лесна е работата само кажи нещо конктретно...:)
или просто за себе си искаш да изясниш за исата нещата...
ако гледаш по - от SW страната:
нищо освен пишеш на адрес конфигурационни данни, данни за обмен и т.н
и при IRQ(IRQ-та) четеш данни от съответния адрес привързан към IRQ-то :!:
начи имаше фатки и за ДМА. но едвали ти трябва точно това...

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Вто Апр 17, 2007 12:48 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
Реконструктор написа:
...
Относно тактуването, няма ли си някакъв latch? Ако тактуването е отделно, как се синхронизира с mcu-то?


погледни идеята на паралелния порт - това е обмен м/у PC и MCU (принтера!) и ... си е ISA карта (на практика)
има 2-3 адреса (буфери) дето се използват: данни, статус (строб...) и с малко подобрения ще имаш двупосочен обмен на данни :)


Вто Апр 17, 2007 1:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Добре, значи в най-простия случай, имаме следната схема:

Код:
R/W бит --------> |
адрес    --------> | mcu
данни   <------->  |


Значи когато имаме нещо такова:

Код:
mov dx, AAh
out  225h, dx


кво се случва с тоците:

в "адрес" отива 225h, в "данни" отива AAh и RW бита става 0

Ако имаме обратната операция:

Код:
in 225h, dx


в "адрес" отива 225h, RW бита става 1, mcu-то слага данните в шината "данни"

до тук вярно ли е?


Вто Апр 17, 2007 1:47 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
Реконструктор написа:
...до тук вярно ли е?


не !

когато искащ примерно да четеш с
in 225h, dx
MPU-то няма да смогне да изведе данните на данновата шина - затова ти трябват буфери - идеята на паралелния порт:
mov DX, 0x378
out DX, al (пращаш данните в регистъра - те се извеждат на някой порт на MCU-to)
даваш сигнал на MPU-то че има данни - и то си ги чете (може да му генерира прекъсване!)

обратното с също валидно:
MPU-то пише в регистър (примерно статус регистъра на принтера е за четене от PC-то) - който PC-то може да чете на определен адрес и му генерира прекъсване - за да си вземе данните

... или нещо подобно :)


Вто Апр 17, 2007 2:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
бих казал :

-------< адрес >------------------
.........._ _ _ _ _
клок_| |_| |_| |_| |_| |_
......___ ____________
R/W |__|

Data----<D0-7>------------



но в интерфейсния модул се записват данните и контролна логика ти дава прекъсване на мцу-то на модула! ти си го обработваш и като имаш данни за иса-шината
ги записваш в изходния лач, и подаваш IRQ на иса-шината към ПЦ-то. оттам като четеш от адрес отваряш tristate буфера и изчиташ данни от изходния лач.



//**Write a Byte to Interface module '**/

void Write_to_IntMod(unsigned aa)
{
volatile unsigned int *addr;
addr = (unsigned int *) BASE_ADDR;
*addr = aa; // 1st bus cycle /
}
//*********************************************************************/
//**Read a Byte from Interface Module**/
unsigned Read_from_IntMod(void)
{
volatile unsigned int *from_addr;
from_addr = (unsigned int *) BASE_ADDR;
return *from_addr;

}

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Вто Апр 17, 2007 2:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
ps66 написа:
не !

когато искащ примерно да четеш с
in 225h, dx
MPU-то няма да смогне да изведе данните на данновата шина - затова ти трябват буфери - идеята на паралелния порт:
mov DX, 0x378
out DX, al (пращаш данните в регистъра - те се извеждат на някой порт на MCU-to)
даваш сигнал на MPU-то че има данни - и то си ги чете (може да му генерира прекъсване!)

обратното с също валидно:
MPU-то пише в регистър (примерно статус регистъра на принтера е за четене от PC-то) - който PC-то може да чете на определен адрес и му генерира прекъсване - за да си вземе данните

... или нещо подобно :)


Ами мен тоците ме интересуват, синхронизацията ще я измисля някак си. :)


Вто Апр 17, 2007 3:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
Реконструктор,
ама ти какво разбираш по "тоци"?
аз явно не включвам...

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Вто Апр 17, 2007 4:05 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение 
1. "Търся простичък примерен проект за ISA контролер"
Заглавието малко обърква, поне мен. Аз това го чета как да си направя хост ISA контролер.

2."После, като компенсация се насочих към паралелния порт - в EPP режим е още по-лесно. Обаче и той тръгна да изчезва. Все пак е по-перспективен от ISA-та. "
USB е по бързо от ISA и по-переспективно, въпреки че чувам че ще го заменят с безжично USB.

3. "инсталираш си обработчика на прекъсване (директно в таблицата ... сегмент:отместване)
обработчика на прекъсването трябва да изчисти флага за прекъсване в irq контролера "
Навремето като си играх с параления порт имаше една уловка. А. Трябва в контролния регистър на параления порт да му окажеш че му разрешаваш прекъсванията. Б. След това програмираш контролера на прекъсванията че това прекъсване е активно. В. Забраняваш прекъсванията. Г. Вършиш си работата (разбирай нещо максимално бързо и елементарно примерно сетване на флаг, в този момент нямаш много време за моткане само няколко микросекунди). Д. Казваш на контролера на прекъсванията че си готов. Е. разрешаваш прекъсванията.
За реда на на Д и Е не съм убеден беше едва ли не в друг живот.

4. "out 225h, dx
in 225h, dx"
Това са неверни инструкции някое дете може да copy-paste от тука и ще се опари. Ще го откажете от малко

5. "Ами мен тоците ме интересуват, синхронизацията ще я измисля някак си. "
Това на български иска да каже(според мен) каква команда трябва да подам за да получа на адресната шина състояние ХХХХХХХХХХХ и на шината за данни състояние УУУУУУУ

6. И един въпрос от мене. По какво се разбира че на адресната шина е зададен адрес на порт, а не адрес в паметта?


Вто Апр 17, 2007 4:34 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
ике,
по. т.6 има едно нещо дето е memory map....

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Вто Апр 17, 2007 4:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение 
@MYXATA
Може ли малко по подробно.
Мемори маповете съм ги ползвал за windows за да "вкарам" някой голям фаил в паметта и да работя с него все едно се намира в рама. Но в конкретния конттекст не ми се връзва.
Значи една ISA платка може да има следните ресурси Port, Memmory, IRQ, DMA някой има ли практически опит в всичко това или само сме го гледали по шибаните филми за вампири?


Вто Апр 17, 2007 4:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
@ike,смисъла е като си правиш сам системата.Примерно-имаш проц и искаш да му навържеш периферия,рам... Прави се блок за адресна селекция (най често с 74LS138).Съставя се таблица,която на практика ти е мемори-мап (показва ти кое устройство на кой адрес е и разположението на паметта) и чрез нея знаеш кое къде се намира.Обръщението се прави през дешифратора.Най често рама си го слагаш в началото,за да можеш да ползваш директна адресация.А мемори мапа на виндоуса го полваш на готово,някой вече е направил платката и следваш неговия замисъл


Вто Апр 17, 2007 5:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение 
Разглеждам заетите ресурси на компютъра на който седя в момента.
Портове от 00000 до 0000F са заети от DMA контролера, това означава ли че клетките от паметта
от адрес 00000 до 0000F не мога да ги ползвам?

Каква е разликата м/у

MOV al, 12
MOV 0378h, al


MOV ax, 0378h
OUT ax, 12


Вто Апр 17, 2007 5:48 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
ike написа:
Разглеждам заетите ресурси на компютъра на който седя в момента.
Портове от 00000 до 0000F са заети от DMA контролера, това означава ли че клетките от паметта
от адрес 00000 до 0000F не мога да ги ползвам?

Каква е разликата м/у

MOV al, 12
MOV 0378h, al


MOV ax, 0378h
OUT ax, 12


голяма :D

при OUT - процесора генерира сигнал че на адресната шина има I/O адрес (адрес на порт)
при MOV - адреса е в рама !
не мЪ питай как е името на сигнала - изведен е на един пин на ISA шината - и естественно ще се използва от дешифратора на адресите на ISA картите ...


Вто Апр 17, 2007 6:15 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 68 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни