Чуть приврал, не 3064, а 7064. Сделал на двух ибо они 44пина, и я не выбирал эти микросхемы. Что было из того и сделал.
Ну небыло у меня этой экзотики, которая стоит в контроллере, тем более что это привело бы к увеличению габаритов платы. Да и нужно было убедиться, что Максу не плохеет. Ставил на прогон.. На трое суток пока я ушел в запой, дрюкал FDD. Чтение/запись. Я не заметил какого-либо повышения температуры.
Ок выложу. Только есть одно но! Схемы нет. Не люблю я рисовать схемы для проектов которые нужно разводить вручную. Проект сделан на AHDL, т.к. VHDL ещё надо подучить, а на AHDL я уже с закрытыми глазами кодю. Проект выложу когда отвиснет почтовый сервак, или когда приду домой.
Скрытый текст
Код:subdesign DD1 ( clk:input; -- 16MHz --FDD FIP:input; FM0:output; FM1:output; FDS0:OUTPUT; FDS1:OUTPUT; FDIR:OUTPUT; FSTEP:OUTPUT; FWDAT:OUTPUT; FWGATE:OUTPUT; FTR00:INPUT; FWPROT:INPUT; FRDDAT:INPUT; FCHANGE:INPUT; --VG93 WRPROT:OUTPUT; IP:OUTPUT; TR00:OUTPUT; WFDE:INPUT; RDY:OUTPUT; WDAT:INPUT; WGATE:INPUT; TR43:INPUT; HOLDM:INPUT; RAWREAD:OUTPUT; RCLK:OUTPUT; STEP:INPUT; DIR:INPUT; ER:INPUT; LT:INPUT; VCLK:OUTPUT; --DRIVE SELECT; DRIVEBIT:INPUT; ) variable CDIV:DFF; EN8:NODE; -- ENABLE SIGNAL 8MHz VGC[7..0]:DFFE; --WRITE WSR[3..0]:DFFE; --READ RR[3..0]:DFF; RA:DFF; RB:dff; --HIGH DENSITY HD:NODE; tcnt[9..0]:dff; sw:node; begin HD=vcc; IP=FIP; TR00=FTR00; WRPROT=FWPROT; FWGATE=!WGATE; FSTEP=!STEP; FDIR=!DIR; FM0=!HOLDM # drivebit; FM1=!HOLDM # !drivebit; FDS0=drivebit; FDS1=drivebit; RDY=HOLDM; --ДЕЛИТЕЛЬ ЧАСТОТЫ CDIV.CLK=CLK; CDIV.D=!CDIV.Q; EN8=DFF(CDIV.Q # HD,CLK,VCC,VCC); VGC[].CLK=CLK; VGC[].ENA=EN8; VGC[].D=VGC[].Q+1; VCLK=VGC2.Q; --КАНАЛ ЗАПИСИ WSR[].CLK=VGC0.Q; IF WDAT THEN WSR[3..0].D=(GND,ER & TR43,!((ER & TR43) # (LT & TR43)),LT & TR43); ELSE WSR[3..0].D=(WSR2.Q,WSR1.Q,WSR0.Q,GND); END IF; FWDAT=!WSR3.Q; --КАНАЛ ЧТЕНИЯ RA.CLK=FRDDAT; RB.CLK=!VGC0.Q; RA.D=VCC; RB.D=RA.Q; RA.CLRN=!RB.Q; RAWREAD=!RB.Q; RR[].CLK=VGC0.Q; IF RB.Q THEN RR[].D=(RR3.Q,VCC,GND,VCC);ELSE RR[].D=RR[].Q+1;END IF; RCLK=RR3.Q; end;[свернуть]
На плате есть ошибки:не подтянуты INTRQ и DRQ и возможно что-то ещё. Посмотрел код, и понял, что я почему-то убрал ФАПЧ(по схеме с РТшкой). Почему я так сделал? хз. мож потому, что для 3.5" не больно то оно и надо. Давно это было... Думаю нада будет переделать... еси чё отпишусь...
Последний раз редактировалось MegaMyth; 09.12.2010 в 10:29.
а если учесть подтяжку 330ом, то поплохеет точно. что там с допустимой нагрузкой на ногу и на корпус у макса? еще один флоп мб и вытянет. а вот второй и дальше.... хз-хз... наверное проще перестраховаться и поставить буфера... ведь цена вопроса полбакса. не больше.
---------- Post added at 09:11 ---------- Previous post was at 09:05 ----------
так ведь АГ3 (если я правильно помню) там всего-то работает на кнопку и генерацию NMI. есть подозрение, что можно сделать что-то типа wait for 10ms.
посмотрел схему. точно. так и есть на магик работает. описать цифрой и оставить только один пин для подключения кнопки.
---------- Post added at 09:27 ---------- Previous post was at 09:11 ----------
5.1 дает задержку для подавления дребезга, а 5.2 задает собственно длительность сигнала NMI. уточнить, какая длительность должна быть, и сформировать в максе.
y <= x1 and x2 after 200 ns -- задержка на 200 нс. (2)
подразумевается инерционная задержка, т.е. y примет после 200 нс новое значение x1 and x2 только, если x1 and x2 оставалось равным 1 в течение этих 200 нс.Оператор ожидания:
wait on список сигналов until условие for значение времени;
В этом операторе перечисляются сигналы, задерживаемые до указанного времени или до выполнения условия. Возможны сокращенные формы:
wait on список сигналов; wait until условие; wait for значение времени;
т.е. подразумеватся задержка до изменения какого-либо сигнала из списка, до выполнения условия или до исчерпания времени соответственно.
Один АГ3 убирает дребезг, второй делает типа задержку на время когда проц перейдет на обработчик NMI. То есть на логике делается антидребезг + счетчик двух M1 после выставления сигнала NMI. На антидребезг может места не хватить. В общем надо какой то медленный сигнал, скажем IORQ
ну дребезг и разборки с ним стоит рассматривать уже в конце. по оставшимся свободным ресурсам... как вариант, если есть свободный инвертор, просто повесить на кнопку кондер... хоть это и не очень решение...
где там счетчик двух /М1? там тупо подобранная задержка. а вот по уму лучше действительно длительность подсчетом /М1 сделать, благо он заховодится в макс...
Вопрос, вам так нужен тот магик сейчас? одно дело если потом на магик повесить вход в дебагер или что-то типа того, а исходная функция тырдоса MAGIK имхо уже не актуальна и разбор полета по ней тоже предлагаю отнести на последний этап.
ну дык и я о том.
Тогда разбор полета про буфер с ОК
Я уже точно не помню, надо посмотреть, но буфер там уперся только ради 5.25 дисководов, там этот сигнал двунаправленный и рулится соответственно по понятиям ОК, то есть о нагрузке вроде никакой речи не идет
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)