Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Unsorted (http://zx-pk.ru/forumdisplay.php?f=13)
-   -   ПЛИС и всё что с ними связано (http://zx-pk.ru/showthread.php?t=9342)

zst 12th March 2010 17:35

Quote:

Originally Posted by IanPo (Post 264376)
Я номиналы рассчитывал, чтобы 0.7 в было на 75 Ом.

75 Ом * (5 В/(150+75) Ом) = 1,67 В
Quote:

Попробую поменять, но фишка, имхо, не в этом.
Я делал яркость oI_VGA <= "000" постоянно и менял на "ZZZ" тоже постоянно - яркость картинки такая же. Вот что меня смущает сильно. А ставлю "111" - опа, яркость пошла. Исходники скопировал твои, из первой версии. Пробовал OPNDRN и map задавать, все компилируется, а результата нет.
Чтобы сделать Z не надо делать OPNDRN и map. Cм. проект SPECCY2007 - там работает и ПЛИС пятивольтовая.

IanPo 12th March 2010 17:52

Два состояния 0 и Z задаются, чтобы компилятор собрал схему с открытым стоком.
Для этого же делался OPNDRN и т.д.
Фишка в том, что он, похоже, не работает.

zst 12th March 2010 18:09

Quote:

Originally Posted by IanPo (Post 264388)
Два состояния 0 и Z задаются, чтобы компилятор собрал схему с открытым стоком.
Для этого же делался OPNDRN и т.д.
Фишка в том, что он, похоже, не работает.

Можно проверить:
После компиляции в окне Compilation Report -> Fitter -> Resource Section -> Output Pins запрятана таблица.
Там в столбце Open Drain для выходов с открытым стоком должно появиться yes.

IanPo 12th March 2010 18:20

Quote:

Originally Posted by zst (Post 264381)
75 Ом * (5 В/(150+75) Ом) = 1,67 В

Там 270 на RGB, а 150 вниз тянет, если яркость 0. Но все равно, надо перепаять на бОльшие.

IanPo 12th March 2010 21:35

zst, заработало, спасибо :) Open-drain есть в отчете.
330 и 470 поставил. Хотя не очень сильно яркость отличается, но это мелочи.
Осталось разобраться с двоением некоторых вертикальных линий.

zst 12th March 2010 22:28

Quote:

Originally Posted by IanPo (Post 264442)
zst, заработало, спасибо :) Open-drain есть в отчете.
330 и 470 поставил. Хотя не очень сильно яркость отличается, но это мелочи.
Осталось разобраться с двоением некоторых вертикальных линий.

ПЛИС тактируется от отдельного генератора ?

IanPo 12th March 2010 23:59

1 Attachment(s)
Quote:

Originally Posted by zst (Post 264461)
ПЛИС тактируется от отдельного генератора ?

Нет, от 14 Мгц на Фениксе. Сигнал F на ZX-BUS. Инверсия его не влияет. Надо бы выложить схему, сигналы и vhdl, потому что у меня ОЗУ 70нс (хотя я пробовал делать как у тебя, с 15 нс ОЗУ и таким же сигналами, но двоение было все равно). Нужно ли сигналы RGBI с Феникса подтягивать ( у меня 4-проводный шлейф 20 см) к +5в?

Пока что выкладываю сигналы и проект Квартуса.
Схемы как таковой нет, есть плата SprintLayout.
Еще фотки девайса завтра выложу и экрана.

IanPo 13th March 2010 12:53

3 Attachment(s)
Вид меню
Вид экрана после выполнения программы
Плата Sprint Layout

10 for i=0 to 2047
20 poke i+16384,85
30 next i
40 for i=2048 to 4095
50 poke i+16384,170
60 next i

zst 13th March 2010 13:55

Quote:

Originally Posted by IanPo (Post 264581)
Вид меню
Вид экрана после выполнения программы
Плата Sprint Layout

10 for i=0 to 2047
20 poke i+16384,85
30 next i
40 for i=2048 to 4095
50 poke i+16384,170
60 next i

А на CRT мониторе как выглядит ?

IanPo 13th March 2010 15:25

Quote:

Originally Posted by zst (Post 264598)
А на CRT мониторе как выглядит ?

У меня нет CRT-монитора. Однако, если менять в настройках монитора Pixelclock и PixelPhase, то раздваиваются уже другие строки. Подтягивание 1кОм RGBI к 0 или 5в ничего не меняет. Я склоняюсь к мысли, что дело в выходе, но не исключаю и глюков на входе, при защелкивании в регистр.

IanPo 14th March 2010 15:28

2 Attachment(s)
Провел небольшое исследование с помощью осциллографа:
на экран с черным бордюром вывел в видеопамять 170 по всем адресам, в атрибуты - 7. Получились вертикальные линии через одну.
Осциллограммы снял сначала с цифрового R выхода Феникса, потом на R выходе VGA-разъема.
Вроде нормально выводит.
Получается, у меня не монитор, а отстой нелепый BENQ FP231W :v2_conf2:

IanPo 25th March 2010 22:36

Возник такой вопрос:
предположим, карточка на Cyclone II VCCIO=3.3 втыкается в шину Nemo-BUS.
Какие нужны резисторы для сопряжения сигналов и не накроется ли карта,
пока в нее еще не загрузилась конфигурация (не включены защитные диоды)?

IanPo 27th March 2010 22:12

Нашел некоторое решение:
SN74LVC4245 - 8 бит передатчик между 3.3 и 5 в
SN74ALVC164245 - 16 бит

fan 27th March 2010 23:31

http://zx.pk.ru/showthread.php?p=73074#post73074
(clamp diode должен быть врублен на входных пинах)

DE1 с атарёй - http://www.brianpostma.com/others.html
DE2 с амигой - http://www.a1k.org/forum/showthread.php?t=20223

tnt23 28th March 2010 22:45

Еще вариант - IDTQS3245. Двусторонние ключи с задержкой 0.25нс.

ALEXEY.GORDEEV 21st April 2010 07:20

У мну вопрос.
Есть 3.3v CPLD EPM3064ALC44-10N. 5v-толерантная.

Написал простейший код, который берет частоту с одной ноги, делит её, и результаты деления выводит на несколько других ног (тоесть какбы обычный счетчик). Скомпилил, прошил, потыкался осциллографом - получил то, что надо, но разумеется в напряжении 3.3v.

5v мелкая логика работает с такими сигналами (серия 1533 в частности), а Z80 от 3.3v сигнала затактовать не получается. Я понял что нужен подтягивающий к 5v резистор. Собственно каков должен быть его номинал?

(опытным путем от 3.3v клока удалось запустить Z80, сделав подтяжку 300Ом к 5v, но не случится ли чего с CPLD-шкой? А то мне кажется что сопротивление 300Ом совсем мелкое, хотя с более большими номиналами сигнал Z80-ым не воспринимается... Или придется таки ставить какой-либо буфер?)

Ewgeny7 21st April 2010 10:09

Quote:

Originally Posted by ALEXEY.GORDEEV (Post 277284)
Или придется таки ставить какой-либо буфер?

Угу.
Зетник от пятивольтовой логики не всегда запускается без резистора.
А трехвольтовку как бы в самом деле не спалить такой нагрузкой...

Alex_NEMO 21st April 2010 10:17

Quote:

Originally Posted by ALEXEY.GORDEEV (Post 277284)
У мну вопрос.
Есть 3.3v CPLD EPM3064ALC44-10N. 5v-толерантная.

Написал простейший код, который берет частоту с одной ноги, делит её, и результаты деления выводит на несколько других ног (тоесть какбы обычный счетчик). Скомпилил, прошил, потыкался осциллографом - получил то, что надо, но разумеется в напряжении 3.3v.

5v мелкая логика работает с такими сигналами (серия 1533 в частности), а Z80 от 3.3v сигнала затактовать не получается. Я понял что нужен подтягивающий к 5v резистор. Собственно каков должен быть его номинал?

(опытным путем от 3.3v клока удалось запустить Z80, сделав подтяжку 300Ом к 5v, но не случится ли чего с CPLD-шкой? А то мне кажется что сопротивление 300Ом совсем мелкое, хотя с более большими номиналами сигнал Z80-ым не воспринимается... Или придется таки ставить какой-либо буфер?)

ALEXEY.GORDEEV, ewgeny7, да и Дмитрий. вроде, неоднократно писали, что EPM3ххх не смотря на заявленные производителем 3,3 вольта напр. питания прекрасно живут на 5в. В таком случае, буфера не нужны ни по входам, ни по выходам! Да и в целом, все на много упрощается.
По крайней мере, ewgeny7 мне говорил, что и в СМУКи и в ПрофПЗУ он неоднократно ставил EPM3032 вместо EPM7032 без каких-либо изменений в схеми и даже без понижения напр. питания на EPM3032!

UncleDim 21st April 2010 10:28

Quote:

Originally Posted by ALEXEY.GORDEEV (Post 277284)
Или придется таки ставить какой-либо буфер?)

А open drain заюзать? наверняка можно будет резистор увеличить ом до 500 при этом (10mA - нагрузка вполне допустимая).
позволю себе процитировать даташит.

Open-drain output pins on MAX 3000A devices (with a pull-up resistor to
the 5.0-V supply) can drive 5.0-V CMOS input pins that require a high VIH.
When the open-drain pin is active, it will drive low. When the pin is
inactive, the resistor will pull up the trace to 5.0 V, thereby meeting CMOS
requirements. The open-drain pin will only drive low or tri-state; it will
never drive high. The rise time is dependent on the value of the pull-up
resistor and load impedance. The IOL current specification should be
considered when selecting a pull-up resistor

Ewgeny7 21st April 2010 11:22

Quote:

Originally Posted by UncleDim (Post 277303)
А open drain заюзать? наверняка можно будет резистор увеличить ом до 500 при этом (10mA - нагрузка вполне допустимая).

Логично.
Можно также настойчиво порекомендовать использовать именно КМОС-процессоры, у них вход тактовый не настолько жёсткий, как у обычных.
На выход клока из ПЛИС забабахать примерно такой код:

clk_out <= '0' when clk_in='0' else 'Z';

и соответственно на выходе поставить резистор-подтяжку на 510 ом.
Про серию МАХ3000 еще раз напомню, согласно информации из даташитов (подтвержденной дилером альтеры) рабочее напряжение этой серии до 4.8 вольт гарантированное. Поэтому 5.0 применить вполне логично и допустимо.

Alex_NEMO 21st April 2010 11:26

Quote:

Originally Posted by ewgeny7 (Post 277307)
Про серию МАХ3000 еще раз напомню, согласно информации из даташитов (подтвержденной дилером альтеры) рабочее напряжение этой серии до 4.8 вольт гарантированное. Поэтому 5.0 применить вполне логично и допустимо.

А для "перестраховки", для особо дотошных и опасающихся, включить последовательно диод по питанию EPM3xxx. Как раз 4,4-4,6 вольт питания получим!
:)

bigral 23rd April 2010 15:21

Quote:

Originally Posted by Alex_NEMO (Post 277308)
А для "перестраховки", для особо дотошных и опасающихся, включить последовательно диод по питанию EPM3xxx. Как раз 4,4-4,6 вольт питания получим!
:)

Так что на каждом p-n переходе мы теряем 0.5...0.6V? Так же можно напряжение и до штатных 3.3V уменьшить? (помнится была фотка тут с самопальной платой и cyclone1 с таким преобразователем http://zx.pk.ru/showpost.php?p=187594&postcount=142).
Когда-то в ПЦ-шной плате вылетела микруха-генератор для питания slot1 процессора так один умелец пофиксил диодами эту проблему без этой микрухи.

НО ГЛАВНЫЙ ВОПРОС = чем это чревато? Чем схема на диодах плоха?

---------- Post added at 13:21 ---------- Previous post was at 13:01 ----------

Quote:

Originally Posted by ewgeny7 (Post 277300)
Угу.
Зетник от пятивольтовой логики не всегда запускается без резистора.
А трехвольтовку как бы в самом деле не спалить такой нагрузкой...

Смотрел даташиты в инете много всяких 3.3v -> 5v буферов бывает но какой из них самый такой "ходовой" на наших просторах? Надо чтоб легко был доступен и желательно в DIP. Кто какие микрухи ставил?

psb 23rd April 2010 16:17

Quote:

Originally Posted by bigral (Post 277856)
чем это чревато? Чем схема на диодах плоха?

1. в зависимости от тока диоды будут греться, иногда оочень сильно.
2. напряжение будет плавать в зависимости от тока через диод.

где-то это допустимо, где-то нет.

IanPo 23rd April 2010 17:15

bigral, в России есть такие вот переходники 3.3<=>5: http://zx.pk.ru/showpost.php?p=269933&postcount=453
Я без особых проблем купил и первые, и вторые.
В DIP я их не видел, может быть, такие есть.
Эти микрухи KOE использовал в последнем Пентагоне.

IanPo 24th April 2010 14:27

Возвращаясь к вопросу о программировании КонфПЗУ через JTAG:
1. Резистор 1 кОм на TCK (контакт 1) действительно идет на землю, а не на VCC?
2. Контакт 6 на JTAG - нужно ли его подсоединять для USB-Blastera (в даташите туманно написано)?

Нашел ответы:
1. Да, идет на землю.
2. Для JTAG контакт 6 свободный.

ALEXEY.GORDEEV 24th April 2010 15:38

Что я делаю неправильно?
У меня в исходнике CPLD-шки (VHDL) есть строчки, с помощью которых она выделяет сигналы выборки для AY-3-8912:

AYBC1 <= (nM1 nand A14) nor (A15 nand (A1 nor nIORQ));
AYBDIR <= nWR nor (A15 nand (A1 nor nIORQ));

AYBC1, AYBDIR - непосредственно выходные ноги (назначенные юзером), все использованные сигналы - непосредственно входные ноги (тоже назначенные юзером). Квартус ни на что не ругается при компиляции этого исходника, но при этом этот код и не работает - на соотв. выводах CPLD постоянно висит лог. 0. В чем проблема?

Входные сигналы 100% присутствуют. Наблюдал на осциллографе пачки импульсов /IORQ, при попытках проиграть что-то через этот самый AY. Остальные сигналы тоже просматриваются, в том числе /M1, A15, A14, A1. A15 и A14 на CPLD точно приходят, иначе вся система не работала бы, так как эта же самая CPLD выделяет сигналы для выборки памяти, тактовые и прочее прочее =)

P.S. CPLD - 100% живая, нормально шьется, проходит проверку...
P.P.S. Пытался пробовать разные комбинации (всмысле схемы подключения AY), не прокатывает.

---------- Post added at 18:38 ---------- Previous post was at 17:57 ----------

Сигналы появились, но на выходах каналов AY-ка по прежнему тишина...
Если на эти выходы никаких аналоговых схем (смеситель, усилитель) не навешано, то реально ли что-нибудь на них увидеть осциллографом?

Black_Cat 24th April 2010 23:08

Quote:

Originally Posted by ALEXEY.GORDEEV (Post 278091)
Если на эти выходы никаких аналоговых схем (смеситель, усилитель) не навешано, то реально ли что-нибудь на них увидеть осциллографом?

там выходы с ОК

balu_dark 25th April 2010 01:23

BC2 подвесил в высокий(вроде) уровень?

ALEXEY.GORDEEV 27th April 2010 20:31

Да, подвесил BC2 на +5v. Исходная схема была взята из OBERON #3, до этого успешно повторялась мною при подключении этого же самого AY к ленину, в мелкой логике.

Кстати, а стандартный плеер из Vortex Tracker-а должен ли работать при 8к RAM (#4000-#5FF7) при условии что он вместе с мелодией в них влазит? Или ему нужен некий более большой диапазон памяти, для чего-нибудь ещё?

Спрашиваю потому, что есть подозрение что из-за мизерной оперативки как раз играть отказывается :)

P.S. В качестве RAM заюзан Timekeeper, тоесть какбы обычный SRAM 8k, но в последних 8 адресах идут календарь с часиками, так что памяти на самом деле 8184 байт :)

balu_dark 27th April 2010 23:04

А обычных срамин нет? 32К 8 бит?

ALEXEY.GORDEEV 28th April 2010 16:07

Обычные есть - но я тут разрывался перед выбором - поставить 32...64k SRAM, либо 8k, но при этом с часами, и добавить остальную память потом... :)
Просто сейчас переделывать макет поздно - чтобы вынуть оттуда SRAM придется разбирать полмакетки :)

Keeper 11th May 2010 22:59

Как в VHDL описать Open Drain выход? Ниже два варианта кода который я пробовал, оба раза Квартус 7.2 ставит TRIstate :confused: Auto Open-Drain Pins = On

Code:

...
port(
MOSI    : out std_logic;
...
signal MOSI_INT    : std_logic; --Для варианта 2
...
--Вариант 1
MOSI <= '0' when SHIFT_REG(7) = '0' and SPI_OUT_EN_SYNC = '1' else 'Z';
--Вариант 2
MOSI_INT <= '0' when SHIFT_REG(7) = '0' and SPI_OUT_EN_SYNC = '1' else '1';
MOSI <= '0' when MOSI_INT = '0' else 'Z';
...


tnt23 11th May 2010 23:10

Quote:

Originally Posted by Keeper (Post 282947)
Как в VHDL описать Open Drain выход? Ниже два варианта кода который я пробовал, оба раза Квартус 7.2 ставит TRIstate :confused: Auto Open-Drain Pins = On

Code:

...
port(
MOSI    : out std_logic;
...
signal MOSI_INT    : std_logic; --Для варианта 2
...
--Вариант 1
MOSI <= '0' when SHIFT_REG(7) = '0' and SPI_OUT_EN_SYNC = '1' else 'Z';
--Вариант 2
MOSI_INT <= '0' when SHIFT_REG(7) = '0' and SPI_OUT_EN_SYNC = '1' else '1';
MOSI <= '0' when MOSI_INT = '0' else 'Z';
...


Попробуй примитив OPNDRN (.in (MOSI_INT), .out (MOSI)).

Keeper 11th May 2010 23:21

Quote:

Originally Posted by tnt23 (Post 282950)
Попробуй примитив OPNDRN (.in (MOSI_INT), .out (MOSI)).

OPNDRN (.in (MOSI_INT), .out (MOSI)); ругается на синтаксис.
OPENDRN((MOSI_INT), (MOSI)); В таком виде пишет used but not declared. В какой библиотеке его искать?

tnt23 11th May 2010 23:35

Code:

LIBRARY altera;

USE altera.altera_primitives_components.all;

http://quartushelp.altera.com/9.1/me...ile_opndrn.htm

ZEK 11th May 2010 23:39

Я как бы не в этой теме ссылку давал уже

http://www.altera.com/support/kdb/so...s=Open%20Drain

Есть еще 3 метод, через спецательные комментарии, но где и как оно работает в VHDL это надо искать

Keeper 11th May 2010 23:49

Cчастие :)

LIBRARY altera;
USE altera.altera_primitives_components.all;
...
ul: OPNDRN PORT MAP ( a_in => MOSI_INT, a_out => MOSI);
...

tnt23 12th May 2010 00:00

Может, и мне кто подскажет :) как правильней на Verilog HDL описать двунаправленную шину так, чтобы на выход она работала тоже как open drain?

Keeper 12th May 2010 00:14

1 Attachment(s)
Quote:

Originally Posted by tnt23 (Post 282963)
Может, и мне кто подскажет

Это VHDL, но смысл думаю будет понятен...

Code:

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
LIBRARY altera;
USE altera.altera_primitives_components.all;

entity top is
port(
--BIDIR
D      : inout std_logic_vector(7 downto 0) := "ZZZZZZZZ"; --Data Bus
--INPUTS
nRD                : in std_logic; --CPU signals
nWR                : in std_logic
);
end;

architecture rtl of top is

signal DATA_REG: std_logic_vector(7 downto 0) := "00000000";
signal DB: std_logic_vector(7 downto 0);

begin

                process(nWR)
                begin
                        if nWR'event and nWR = '0' then
                                DATA_REG <= D;
                        end if;
                end process;
               
                DB <= DATA_REG when nRD = '0' else "11111111";
                ul1: OPNDRN PORT MAP ( a_in => DB(0), a_out => D(0));
                ul2: OPNDRN PORT MAP ( a_in => DB(1), a_out => D(1));
                ul3: OPNDRN PORT MAP ( a_in => DB(2), a_out => D(2));
                ul4: OPNDRN PORT MAP ( a_in => DB(3), a_out => D(3));
                ul5: OPNDRN PORT MAP ( a_in => DB(4), a_out => D(4));
                ul6: OPNDRN PORT MAP ( a_in => DB(5), a_out => D(5));
                ul7: OPNDRN PORT MAP ( a_in => DB(6), a_out => D(6));
                ul8: OPNDRN PORT MAP ( a_in => DB(7), a_out => D(7));
               
end rtl;


ZEK 12th May 2010 00:23

Тож в циклоне проверил, банальное

Quote:

module TEST(
input wire DI,
output wire DQ,
inout wire DB,
input wire DIR
);

OPNDRN u1(DIR ? DI : 1'b1, DB);
assign DQ = DB;

endmodule
делает все правильно


All times are GMT +4. The time now is 06:42.

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