Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Unsorted (http://zx-pk.ru/forumdisplay.php?f=13)
-   -   Читабельный ФАПЧ (http://zx-pk.ru/showthread.php?t=16617)

lisica 16th September 2011 10:33

1 Attachment(s)
Quote:

Originally Posted by balu_dark (Post 415866)
клок есть всегда,

WFDE, когда в 1 то блокирует его.

Quote:

Originally Posted by balu_dark (Post 415866)
Видно что часть импульсов проходит не в нужное время - когда клок в еденице.

Так и должно быть

У меня RCLK на грамульку меньше (как в описаниях - 125мс). Может из за этого и не работает? Попробую увеличить его.

PS А самое лучшее проверять осцилом, записав на трек все 11111111, после все 000000000, потом 10101010. Есть утилитка такая что это умеет, у меня она обзывается ustir1.0, Я её немного переделал на ustir1.1, а то надоело за головкой гоняться по диску из за ошибок.

PPS
Quote:

Originally Posted by ZEK (Post 415891)
там главное что бы rawr был как можно ближе к середине

В диаграмме описано, что ближе к концу.:confused:

ZEK 16th September 2011 11:24

Quote:

Originally Posted by lisica (Post 415892)
В диаграмме описано, что ближе к концу.

это пример, на этой диаграмме нарисовано 2 ситуации

В даташите на wd1793 написано что rclk должен отступать от rawr минимум на 40нс
если думать логически и отодвинуть максимально фронты rawr от rclk то получается что rawr должен находиться в середине rclk, думаем дальше - нам надо устойчивый фапч то есть что бы он мог реагировать на как можно большее отклонение rawr от положенного места, для этого rawr опять же надо поставить в середину что бы было как можно больше запаса для фазовых бросков как вперед так и назад.

lisica 16th September 2011 17:34

блин, застопорился на времени rawr, никак не могу его чюточки увеличить...

balu_dark 16th September 2011 19:10

так покажи свой код - попытаемся сравнить его с последним от ZEK. бо он тоже воевал с этим.

lisica 16th September 2011 19:44

Quote:

Originally Posted by balu_dark (Post 415998)
так покажи свой код - попытаемся сравнить его с последним от ZEK.

Попробуй сравнить vhdl и verilog...
Я, например, в ZEKовом коде ничё не понял...
Code:

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.numeric_std.ALL; 
entity fapch is                   
port(
f28                        : in std_logic;
rdat                : in std_logic;
wf_de                : in std_logic;


del1:        buffer std_logic_vector(2 downto 0);

rclk                : buffer std_logic;
rawr                : buffer std_logic



);
end fapch;

architecture fapch_arch of fapch is
signal rd1:                std_logic;
signal rd2:                std_logic;
signal fa:                std_logic_vector(4 downto 0);
signal del:                std_logic_vector(1 downto 0);
signal f8:                std_logic;
signal ff:                std_logic;
--signal del1:        std_logic_vector(2 downto 0);


begin

ff <= f28 xor fa(0);
f8 <= del(1);

process(ff)
begin
if (ff'event and ff='0') then
        del <= del + 1;
end if;
end process;

process(f8,rdat,rd1)
begin
if (f8'event and f8='0') then
        if rdat = '0' then
        rd1 <= '1';
        else
        rd1 <= '0';
        end if;
end if;
end process;

process(f8,rd1,rd2)
begin
if (f8'event and f8='0') then
        if rd1 = '1' then
        rd2 <= '0';
        else
        rd2 <= '1';
        end if;
end if;
end process;





rawr <= '0' when wf_de = '0' and (rd1 = '1' and rd2 = '1') else '1';

process(f8,rawr)
begin
if (f8'event and f8='0') then
                if rawr = '0' then
                if fa(3 downto 0) < 3 then
                fa(3 downto 0) <= fa(3 downto 0) + 4;
                elsif fa(3 downto 0) < 5 then
                fa(3 downto 0) <= fa(3 downto 0) + 3;
                elsif fa(3 downto 0) < 7 then
                fa(3 downto 0) <= fa(3 downto 0) + 2;
                elsif fa(3 downto 0) = 7 then
                fa(3 downto 0) <= fa(3 downto 0) + 1;
                elsif fa(3 downto 0) > 12 then
                fa(3 downto 0) <= fa(3 downto 0) - 3;
                elsif fa(3 downto 0) > 9 then
                fa(3 downto 0) <= fa(3 downto 0) - 2;
                elsif fa(3 downto 0) > 8 then
                fa(3 downto 0) <= fa(3 downto 0) - 1;
                end if;
                else
                fa <= fa +1;
        end if;
end if;
end process;

process(rclk)
begin
if wf_de = '0' then
                rclk <= not fa(4);
else rclk <= '1';
end if;
end process;

end fapch_arch;

Вот, смотрите, жирным собсно формирование 125 мс как на схеме...

balu_dark 16th September 2011 21:12

Ага - ок. распечатаю и сравню попозже - счас пока загружен работой.
Частота клока в этой машине как и у эвы - 28 Мгц?

lisica 16th September 2011 22:42

Quote:

Originally Posted by balu_dark (Post 416022)
Частота клока в этой машине как и у эвы - 28 Мгц?

Ага, вход 28мц

ZEK 16th September 2011 23:22

Сравнил последний свой фапч и твой
ну из того что бросается в глаза, у меня чуть шустрее выравнивает фазы, и при резких броска у тебя прилипает rawr к rclk, у меня делает отступ (по даташиту он обязателен).

Ну и длительность rawr

lisica 17th September 2011 00:40

Quote:

Originally Posted by ZEK (Post 416058)
у меня чуть шустрее выравнивает фазы,

Ну, это поправимо.

Quote:

Originally Posted by ZEK (Post 416058)
при резких броска у тебя прилипает rawr к rclk, у меня делает отступ

А здесь как? Запоминать RDAT и выставлять его позже?
А вдруг это предыдущий опоздал, или следующий слишком рано прошёл в какую сторону двигать?
Или вы хотите окончательно нечитаемые дискеты чтоб заработали?

Лучше подскажите как импульс RAWR увеличить...

ZEK 17th September 2011 01:01

Quote:

Originally Posted by lisica (Post 416076)
Лучше подскажите как импульс RAWR увеличить...

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


All times are GMT +4. The time now is 18:08.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.