Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Unsorted (http://zx-pk.ru/forumdisplay.php?f=13)
-   -   -=Reverse=- Конфигурации. (http://zx-pk.ru/showthread.php?t=13875)

vlad 9th March 2011 22:32

1 Attachment(s)
Quote:

Originally Posted by Ewgeny7 (Post 364766)
Но защелки и в самом деле могут работать непредсказуемо, сталкивался с этим.

Вот, не совсем как хотелось (отличия с первым примером явно видны). Получили мастер-помощник :) а, хотели к примеру просто защелку по (nCS = '0') AND (nIORIN = '0') с синхронным триггером...

Code:

LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_unsigned.ALL;
--**********************************************************************************************
-- Input/Output Declarations
--**********************************************************************************************
ENTITY ReadSync IS
        PORT (
                RESET                        : IN        std_logic;
                CLK                        : IN        std_logic;
                nIORIN                : IN        std_logic;
                nCS                        : IN        std_logic;
                ReadEnable        : OUT        std_logic
        );
END ReadSync;
--**********************************************************************************************
-- Architecture Body
--**********************************************************************************************
ARCHITECTURE rtl OF ReadSync IS
        SIGNAL SampledRead        : std_logic;
        SIGNAL SyncRead1                : std_logic;
        SIGNAL SyncRead2                : std_logic;
BEGIN
        --
        -- ReadSampleProc:       
        --
        ReadSampleProc: PROCESS ( nCS, nIORIN, CLK, RESET, SampledRead )
                VARIABLE next_SampledRead : std_logic;
        BEGIN
                IF ( RESET = '1' ) THEN
                        next_SampledRead := '1';
                ELSIF ( (nCS = '0') AND (nIORIN = '0') ) THEN
                        next_SampledRead := '0';
                ELSE
                        next_SampledRead := '1';
                END IF;
                IF ( RESET = '1' ) THEN
                        SampledRead <= '1';
                ELSIF ( CLK'EVENT AND (CLK = '1') ) THEN
                        SampledRead <= next_SampledRead;
                END IF;
        END PROCESS ReadSampleProc;

        --
        -- ReadSyncProc:        The mode register synchronizer. Synchronizes
        --                                                changes in mode register data to the internal
        --                                                timing domain i.e. the falling edge of CLK.
        --
        ReadSyncProc : PROCESS ( CLK, RESET, SampledRead, SyncRead1, SyncRead2 )
                VARIABLE next_SyncRead1        : std_logic;       
                VARIABLE next_SyncRead2        : std_logic;

        BEGIN
                next_SyncRead1  := SampledRead;       
                next_SyncRead2  := SyncRead1;

                IF        ( (SyncRead1 = '1') AND (SyncRead2 = '0') ) THEN
                        ReadEnable <= '1';
                ELSE
                        ReadEnable <= '0';
                END IF;

                IF ( RESET = '1' ) THEN        -- Asynchronous clear
                        SyncRead1        <= '1';
                        SyncRead2        <= '1';
            ELSIF ( CLK'EVENT AND (CLK = '0') ) THEN
                        SyncRead1        <= next_SyncRead1;
                        SyncRead2        <= next_SyncRead2;
                END IF;

        END PROCESS ReadSyncProc;

END rtl;


vlad 9th March 2011 22:40

Но это уже скорее для другого раздела :)

Ewgeny7 10th March 2011 14:02

2 Attachment(s)
Всё, мануал по проектированию простого спектрума на ПЛИС закончил.
Держите :)

Также прилагаю сами файлы проекта к ентой книжке.

vlad 10th March 2011 15:22

Отличная работа Ewgeny7.
Первый полный мануал по проектированию простого Speccy 48К на VHDL / Verelog (клавиатурный модуль).
bak файлы в проекте оставлены для истории... :)

Ewgeny7 10th March 2011 16:01

Quote:

Originally Posted by vlad (Post 365008)
bak файлы в проекте оставлены для истории...

Ээээ... ну да... надо подчистить :) Я проект ухнул на форум целиком, прямо от Квартуса оторвал. Только DB удалил для уменьшения размера.

---------- Post added at 15:01 ---------- Previous post was at 14:53 ----------

Quote:

Originally Posted by vlad (Post 365008)
на VHDL / Verelog

Шпильку принял :)
Но я не стал добавлять твой модуль, поскольку он, зараза, все равно подглюкивает.
Причем я вроде выяснил, что проблема в низкоуровневом, мышка через раз инициируется после включения, нужно сброс давить. Камиль в своих контроллерах делал задержку после подачи питания, чтобы контроллеры клавы и мышки успевали проснуться.

Geban 10th March 2011 17:08

Добавлю свои 5 копеек :) Спасибо автору за мануал.Очень познавательно. Прояснил для себя очень много непонятных моментов. Столкнулся с проблемой такого рода, монитор TFT Acer 19' Wide .. отказывается хавать 50Гц кадровую синхронизацию!!!.. минимум подавай ему 60 Гц. Долго бился с этим делом.. в конце концов по совету Жени поднял тактовую до 17 Мгц... изображение есть но теперь не запускается проц, но это уже отдельная история скорее связанная с переносом проекта на платформу Xilinx и его среду разработке ISE. Может быть кто подскажет как решить проблему с кадровой синхрой ? Покупать новый монитор не пойду :)

Ewgeny7 10th March 2011 17:30

бордюры по вертикали урежь :)
Нормальное решение - настоящий скандаблер, с полем памяти на весь фрейм. На нем можно задавать любую частоту видеовывода при сохранении "внутренней" 50Гц. Но это будет по сути еще один видеогенератор, что не входит в рамки мануала.

---------- Post added at 16:28 ---------- Previous post was at 16:26 ----------

Quote:

Originally Posted by Geban (Post 365038)
поднял тактовую до 17 Мгц... изображение есть но теперь не запускается проц

Это на проц не должно влиять вообще. В этом проекте проц прекрасно работает и на 7Мгц, так что твои 4Мгц ему совсем до лампочки. Скорее, оптимизатор что-то не то вытворяет...

---------- Post added at 16:30 ---------- Previous post was at 16:28 ----------

Попробуй отдельно процик синтезировать, и в симуляторе посмотреть что там на его лапках творится.

vlad 10th March 2011 17:43

Quote:

Originally Posted by Ewgeny7 (Post 365043)
Нормальное решение - настоящий скандаблер, с полем памяти на весь фрейм. На нем можно задавать любую частоту видеовывода при сохранении "внутренней" 50Гц. Но это будет по сути еще один видеогенератор, что не входит в рамки мануала.

Уже было хотел делать такое (50Гц на ЭЛТ не сильно приятно смотрится), но обзавелся ЖК монитором, на нем все нормально... А в общем, если у Geban есть желание и время повозиться над скандаблером работающем на оптимальной частоте мона, то можно попробовать сделать... только память под вопросом.

Geban 10th March 2011 18:58

Мне бы проц запустить сначала. Там ещё ISE ругался на модуль клавиатуры, я его заремил пока. потом разберусь.

Вчера попробовал просто проц сделать... дал тактовую, wait & nmi & busrq & rst = vcc
М1 на выходной пин... получил сипульсы 700КГц при тактовой около 4 МГц. Если я правильно понимаю то проц на каждые 4 такта выдает 1 импульс с М1... тогда получается все работает? или нет? А вот проц + ула выпендриваются

ZEK 10th March 2011 19:18

В ISE с Verilog был такой задрот что она не переваривает wire и reg которые объявляются позже чем юзаются, квактусу пофик


All times are GMT +4. The time now is 16:30.

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