OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů

OldCompu nen nikdy dost!

Právě je 04.12.2021, 03:37

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 35 ]  Přejít na stránku Předchozí  1, 2, 3
Autor Zpráva
 Předmět příspěvku: Re: Quick disk - MFM zaznam
PříspěvekNapsal: 05.04.2018, 17:26 
Offline
Kecálek

Registrován: 28.10.2016, 21:03
Příspěvky: 120
Has thanked: 13 times
Been thanked: 50 times
A jo, to vlastne simuluje protokol SIO obvodu, takze to nejde pripojit jako samotna mechanika. Tak to nic.

Na druhou stranu, mozna by se to nove zarizeni dalo udelat tak, ze by mělo dva zpusoby pripojeni. Jeden jako mechanika, pro MZ-1500. A druhy jako rozsirujici karta, pro MZ-800. Oboji nad stejnym formatem dat, jen by to navenek komunikovalo přes ruzna rozhrani, podle toho, ke kteremu by se to pripojilo.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Quick disk - MFM zaznam
PříspěvekNapsal: 05.04.2018, 18:38 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2366
Has thanked: 114 times
Been thanked: 294 times
Diky za prispevky jsou zajimave.

Udelal jsem si maly prehled abych orientacne vedel kolik instrukci zvladne Arduino na jednu zmenu signalu.

AVR 16MHz

QD
name time ns cycles
min 9000 62,5 144
short 10000 62,5 160
long 15000 62,5 240
very long 20000 62,5 320
max 22000 62,5 352

FDD HD
name time ns cycles
min 1800 62,5 28,8
short 2000 62,5 32
long 6000 62,5 96
very long 8000 62,5 128
max 8800 62,5 140,8

Takze pro QD je to jeste relativne v pohode ale pro FDD HD neni mnoho instrukci. Pro FDD HD je to jen 16 instrukci, pro QD je to 80 instrukci. Pro QD je normovana zmena signalu kazdych 4923 ns. To je idealni cas kdy by se mel (ale nemusel) menit signal aby nebyl zadny jitter a vse bylo bezproblemove. Tuto frekvenci trivialne na Arduinu neudelame ale muzeme hezky udelat 62,5*80=5000 ns. Takze pri teto frekvenci vysilani se bude jevit mechanika jen o trosku pomalejsi ale stale je to v norme. Samozrejme jeste lepsi by bylo pouzit 62,5*78=4875 ns. To by byla mechanika zase o trosku rychlejsi. Dnes ale neni jeste potreba presne urcit rychlost zmen. Spise je potreba si rici ze raw kopie co by logicky musela byt v PC a prenasela by se pres rs232 asi rychlosti 1 Mbps. A mela by mit vzorky pripravene v rozestupu 4923 ns. Za jednu sekundu se provede az 203125 zmen signalu (6500000/4/8). Takze na cca 6 sekundovy provoz je potreba 152343 bajtu dat.

Smer do Sharpa by mohl byt udelan tak, ze kazdych 80(78) taktu by casovac provedl preruseni. Ten by vzal jeden bit z bufferu a dal by ho na vystupni port. Nemuze se prilis zdrzovat v preruseni. Hlavni program by prubezne pomoci nejakeho protokolu dostaval data z pc. Celkem by to bylo tech 153 KB. Pak by se to zacalo posilat znovu. Stale a cyklicky, dokud by se nezastavil motor, ci by se nestala jina udalost. Na jeden "informacni bit co vidi Sharp" se posilaji dva bity z bufferu. Surove data maji presne 2x vetsi velikost nez kapacita media.

Opacny smer by se mohl delat tak, ze pri kazde sestupne hrane na portu 1, kde by bylo cteni ze Sharpa by se provedlo preruseni. To by precetlo citac, dejme tomu treba Timer1 a z rozdilu hodnot by vypocital jak dlouhy signal prisel. Tuto hodnotu by zkonvertoval do 2bitoveho cisla a poslal smerem do pc. V pc by se to spravne desifrovalo podle protokolu MFM a spravna data by se zapsala do bufferu na spravne misto. Misto kam se to ma zapsat se da vypocitat tak, ze presne zname pozici cteni kde bylo nastaveno WRGA=1. Maximalne se bude zapisovat o bit dale ale to presne dela i realny QD.

Zatim uvazuji o Arduinu ale kdyz uvidim ze je to na hrane, tak bych asi presel na STM32F4, jako ma treba unikarta. Tam by bylo vse kompaktnejsi.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Quick disk - MFM zaznam
PříspěvekNapsal: 24.10.2021, 11:19 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2366
Has thanked: 114 times
Been thanked: 294 times
Tak jsem se o vikendu podival na hw zapojeni QD. Nakreslil jsem si jak teoreticky vypadaji signaly okolo Z80 SIO. Take jsem si rozkreslil koder. Dekoder MFM je asi nejslozitejsi vec na celem projektu. Zde na spravne pochopeni je potreba se podivat i na sw obsluhu. Vypada slozite ale je to trivialne vymyslene. Cele to funguje na principu, ze kdyz prijde impuls z QD, tak se nastavi citac na preddefinovanou hodnotu. Impuls spravne muze prijit jen ve dvouch casovych slotech. Nevadi kdyz prijde trosku jindy, jen se automaticky synchronizuje okno (window). Hlavni finta je v tom, ze se po urcitou dobu vysila break signal a na konci je synchronizacni znacka. To je klicova myslenka. Dekoder neni nijak "inteligentni" a nemuze sam opravit nelogicky stav, proto musi byt (MUST BE) zajisteno, ze na zatacku pri prvnim impulsu je vysilana log0.

strucny popis:
Impuls co jde do mechaniky ma sirku 615 ns a ma log0.
Stejny ale jen logicky obraceny jde i z mechaniky. Ten ma take sirku 615 ns ale ma log1.
Nasledne je synchronizovan do casove domeny MFM dekoderu.
Dekoder MFM reaguje na nabeznou hranu signalu z QD mechanicky.
Vstupni signal je nasledne zkracen na impuls s log0 s delkou 308 ns.
Tento signal nastavuje vnitrni citac na 0110b. Tim dela synchronizaci impulsu a window pro cteni dat.
Hlavni citac pouze cita, neustale dokolecka. Kazdy impuls z mechaniky ho jen synchronizuje a pri idealnim stavu ho ani neovlivnuje. Vystup tohoto citace ma frekvenci 101kHz a jsou to obnovene hodiny pro SIO. Zde je nutne vzit v uvahu ze do SIO je vyveden negovany MSB z citace.
Nasleduje klicova vec a to, ze prvni impuls z mechaniky vynuluje MSB bit citace a tak je presne definovany time slot pro log0. Nasledujici impulsy budou dekodovany podle tohoto time slotu.
Zbytek uz je trivialni. Kdyz prijde impuls v prvni casti okna, tak je to log0, take kdyz zadny impuls neprijde, tak se nastavuje automaticky log0. Impuls v druhe casti okna nastavuje log1, jinak se tomu rika D-impuls. Prvnimu se rika T-impuls.

Ted nic nebrani udelat treba v FPGA nahradu QD.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Quick disk - MFM zaznam
PříspěvekNapsal: 17.11.2021, 13:21 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2366
Has thanked: 114 times
Been thanked: 294 times
Tak nejaka prace se udelala na Bytefestu. Hodne jsem pokrocil na TM. Uz ctu data ze Sharpa kdyz se dela formatovani a data maji tvar co ocekavam. Zatim vse co jsem teoreticky popsal je videt i na realnem hw. Ted premyslim jak velky udelam "nosic". Zatim to vypada ze maximalni doba pro praci QD je 8 sekund, realne je to asi 7, zmensit se to da vzdy. Ulozeni dat v FPGA chci udelat tak aby se to dalo pripadne nasledne pouzit pro MFM zaznam co se pouziva na FDD. Proto pro jeden datovy bit budu pouzivat dva pracovni bity. U QD se nepouziva jako u FDD umyslne "poskozeni" MFM zaznamu pro generovani synchronizacnich znacek. Zde je synchronni zaznam a synchronizace se dela pres dvojbajt 1616h. Na zacatku cteni dat je zaruceno ze se cte log0.

Zatim to vypada ze kapacitu QD nosice rozdelim na "chunks". To se uspesne pouziva napr. pri prenosu videa na Internetu. Jeden chunk bude mit kapacitu 128 bajtu. Bude popisovat 64 bajtu dat na nosici QD. Techto chunku bude cca 1400.

Takto vypadaji data co generuje realne MZ800 a posila na QD pri formatovani. Prvni radka jsou same jednicky, protoze neni jeste zapnuty zapis do nosice. Nasledne jsou videt ty tri mozne kombinace rozesupu mezi impulsy.

Kód:
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
10011111111111111111111111111111111111111111111111111111111111111111
100111111111111111111111111111111111111111111111111
100111111111111111111111111111111111111111111111111
10011111111111111111111111111111111111111111111111111111111111111111111111111111111111
10011111111111111111111111111111111111111111111111111111111111111111
100111111111111111111111111111111111111111111111111
100111111111111111111111111111111111111111111111111
10011111111111111111111111111111111111111111111111111111111111111111111111111111111111
10011111111111111111111111111111111111111111111111111111111111111111
100111111111111111111111111111111111111111111111111
100111111111111111111111111111111111111111111111111
10011111111111111111111111111111111111111111111111111111111111111111111111111111111111
10011111111111111111111111111111111111111111111111111111111111111111
100111111111111111111111111111111111111111111111111
100111111111111111111111111111111111111111111111111


Je to jen ukazka, pozdeji ukazu vetsi vzorek dat. Aktualni vzorkovaci rychlost je 3,520 MHz (v realnem radici je to 3,25 MHz). Cele se to bude jeste upravovat.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Quick disk - MFM zaznam
PříspěvekNapsal: 24.11.2021, 22:03 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2366
Has thanked: 114 times
Been thanked: 294 times
Tak jsem pokrocil. Nejdrive jsem udelal program ktery mi ukazal formatovaci data 0101_0101 a 1010_1010. To jsou data ktera vyplni cely QD medium pri formatovani.

Pak jsem smazal vse co nebylo nutne a zajistil jsem aby byl program komplene bez warningu. To byla velka vyzva ale podarilo se!

Nasledne musim k fpga pripojit pamet co ma alespon cca 150KB. Obecne to neni problem ale take to neni uplne trivilani. Zjistil jsem ze nekdy okolo roku 2006 se to resilo. Alespon z teto doby jsou informace o pripadnych problemech se sram pripojene k fpga. To bylo velice zajimave cteni. Sehnal jsem tri knihy od jednoho autora. Postupem casu se menil obsah knizek. V prvni nejstarsi knize byl FSM tak jak ho ocekavaji lide co pouzivaji stare pocitace. Pekne postupne se meni signaly. Nasledujici kniha uz ma zjednoduseny FSM, sram uz se da ovladat trivialneji a rychleji. To jsem videl i u jinych modernich projektu. Posledni kniha uz neobsahuje zadny FSM pro sram. Nasledne jsem videl jeste jednu knihu co letos vysla a ta uz ma info o novych SPI pametech. Ty si predstavuji pouzivat, mluvil jsem o nich tak tri TM zpatky.

Take jsem se zajimal jak efektivne a hlavne bezpecne delat FSM. To je zajimave tema. Kazda univerzita to dela trosku jinak.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 35 ]  Přejít na stránku Předchozí  1, 2, 3

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz