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)

Ewgeny7 14th October 2010 11:20

Quote:

Originally Posted by 13joe (Post 322837)
Прошивать ПЛИС вообще без микросхемы напрямую проводками вроде бы называется ByteBlaster II,

ByteBlasterII делается также на "ключах", как и MV.
Просто "проволочного" бластера нет. Вероятно, прямое подключение всё же прокатит, просто страшновато рисковать альтеркой.

Quote:

Originally Posted by 13joe (Post 322837)
программатор ByteBlaster II программой не обнаруживался, хотя проводки были не длиннее 15 сантиметров.

"Обнаруживается" не сам бластер, а перемычка между контактами LPT-порта. Для MV это ноги 7 и 10, для ВВII - другие.
Схему ВВII я вроде выкладывал в этой теме.

---------- Post added at 10:20 ---------- Previous post was at 10:19 ----------

Quote:

Originally Posted by axel_sunrise (Post 322825)
и второе - через СОМ порт можно прошивать Альтеру?

Через USB можно. Самодельный USBblaster уже лежит в интернетах.

aniSKY 14th October 2010 11:55

да, была мысля использовать готовое с других машин, но данная очень уж жирно будет для моей платы. там есть все - клава, мышь, ком-порт, СД-карта, часики. Мне на данном этапе нужно пока всего лишь только КОМ-порт(для РС) и программа которая прошьет ПЛИСину, АВРка меньше понадобится :)
как вариант подошла бы АВРка Мега88 из AEON'a, но там используется Ксилиникс, явно мой циклон она не прошьет.

aniSKY 14th October 2010 12:13

1 Attachment(s)
Quote:

Originally Posted by Ewgeny7 (Post 322849)
Через USB можно. Самодельный USBblaster уже лежит в интернетах.

может кто повторял данный проект? http://www.speccyland.net/index.php?...1&Itemid=3#p62
на какой PIC можно заменить? подойдет ли PIC18F25J10-I/SO вместо PIC18F25J10-X/SO?
Но есть еще вариант, более компактный, тоже на пик (PIC18F45J10-I/PT), все что у нас нашел так тока PIC18F452-I/PT, PIC18F4520-I/PT, PIC18F4525-I/PT, PIC18F4550-I/PT, PIC18F458-I/PT - чем можно заменить PIC18F45J10-I/PT ?.

Дмитрий 14th October 2010 12:16

Quote:

Originally Posted by aniSKY (Post 322854)
Мне на данном этапе нужно пока всего лишь только КОМ-порт(для РС) и программа которая прошьет ПЛИСину, АВРка меньше понадобится
как вариант подошла бы АВРка Мега88

Так в чем проблема-то? сырки есть на пентэво, из схемы и даташита на фпга можно понять как подключить МК к фпга для конфигурации... не обязательно подключать именно атмега128, можно хоть тиньку2313+cпи-флеш - принцип один и тот же. А именно такой проект, который бы на 100% тебя удовлетворял по требованиям, не думаю что ты найдешь...

aniSKY 14th October 2010 12:22

к сожалению я не программист :), в сырках буду полгода разбираться, и не факт что разберусь...

Ewgeny7 14th October 2010 13:51

Quote:

Originally Posted by Ewgeny7 (Post 322849)
Самодельный USBblaster уже лежит в интернетах.

http://njnmnp.narod.ru/usbblaster/usbblaster.html
Варианты с АТМега8 или мелкой ПЛИС. Курите на здоровье :)

vlad 14th October 2010 15:25

Вот еще вариант: http://www.microchip.su/showpost.php...22&postcount=9

Дмитрий 14th October 2010 16:06

vlad, там региться надо, если есть возможность - файлики запостите тут, плиз.

aniSKY 14th October 2010 16:15

Quote:

Originally Posted by vlad (Post 322881)

я про него выше спрашивал.:rolleyes:
PIC18F45J10-I/PT на что можно заменить из выше написанных ?:confused:

---------- Post added at 14:15 ---------- Previous post was at 14:13 ----------

Quote:

Originally Posted by Дмитрий (Post 322884)
vlad, там региться надо, если есть возможность - файлики запостите тут, плиз.

USB Blaster(PIC).rar в #643 посте

axel_sunrise 17th October 2010 11:47

допускается ли применение всяких PCI - LPT адаптеров вместо родного встроенного в материнку?

---------- Post added at 17:47 ---------- Previous post was at 17:41 ----------

[QUOTE=aniSKY;322885]
PIC18F45J10-I/PT

Бл...Дорогой как самолёт :sleep:














aniSKY 18th October 2010 16:00

3 Attachment(s)
:confused: помогите разобраться что не так.
пытаюсь написать на ВХДЛ ту часть, которая выводит графику на экран - что то ну ни как не поддается, в схемном вводе все нормально было, показывало как надо, а вот на ВХДЛе все ни как не получается:v2_conf2:
вот кусок проекта:
Code:

process(CLK25,TI,vcnt,hcnt)
begin
PIXa<="0"&"000"&vcnt(8 downto 7)&vcnt(3 downto 1)&vcnt(6 downto 4)&hcnt(7 downto 3);
ATRa<="0"&"000"&"110"&vcnt(8 downto 4)&hcnt(7 downto 3);
if (CLK25'event and CLK25='1') then
    if TI='0' then --CLK25/2
        if hcnt(2 downto 0)=0 then
            VA<=PIXa;
            PIXd<=VD;
        end if;
        if hcnt(2 downto 0)=3 then
            VA<=ATRa;
            ATRd<=VD;
        end if;
    else
            VA<=(others=>'Z');
            if (hscr and vscr)='1' then
                PIXd(7 downto 1)<=PIXd(6 downto 0);
                PIXd(0)<='0';
                if PIXd(7)='0' then
                    B<=ATRd(0);
                    R<=ATRd(1);
                    G<=ATRd(2);
                    Y<=ATRd(6);
                else
                    B<=ATRd(3);
                    R<=ATRd(4);
                    G<=ATRd(5);
                    Y<=ATRd(6);
                end if;
            else
                if (hvoe or vvoe)='1'then
                    R<='0';
                    G<='0';
                    B<='0';
                    Y<='0';
                    else
                    R<='1';
                    G<='0';
                    B<='1';
                    Y<='0';
                end if;
            end if;
    end if;
end if;
end process;

что не так? на экране цветной бред напоминающий нужную картинку(pic01.jpg).
если убрать загрузку атрибутов и выводить только пикселы - все четко, чб картинка отличная (pic02.jpg). а стоит только вернуть загрузку атрибутов обратно и выводить только пикселы - получается что выводятся атрибуты вместо пикселов, хотя данные загружаю в разные регистры(pic03.jpg).:v2_conf2:

b2m 18th October 2010 16:33

Адрес нужно как минимум на один клок раньше задавать. А так у тебя адреса атрибутов и пикселей получаются перепутаны. Для наглядности, поменяй местами строчки:
PIXd<=VD;
VA<=PIXa;
Ничего не изменится.

aniSKY 18th October 2010 17:12

поменял-все по прежнему.
вроде они должны выполнять параллельно?
а может у кого есть примеры других разработок спека на ВХДЛе? пытался подсмотреть в исходниках SPECCY2007 - сложно разобраться для новичка, много сигналов и регистров без коментов что за они.

Ewgeny7 18th October 2010 17:23

Quote:

Originally Posted by aniSKY (Post 323836)
вроде они должны выполнять параллельно?

Для самого ОЗУ сигналы не должны быть "параллельно".
Сначала ставится адрес на шину, спустя клок/полклока считываются данные. У тебя же это не сделано. И в результате в "цветной регистр" считываются данные пикселей, а не аттрибутов.

---------- Post added at 16:23 ---------- Previous post was at 16:21 ----------

посмотри реализацию в u10_speccy, к примеру.

Sandro 18th October 2010 18:26

Quote:

Originally Posted by aniSKY (Post 323823)
:confused: помогите разобраться что не так.

Попробуем :) Во-первых, начнём со стиля написания кода.
1) Зачем в процессе смешаны асинхронные присвоения в PIXa и ATRa с синхронными присвоениями по CLK25? Если хотелось их тоже обрабатывать синхронно, то надо было их засунуть под if (CLK25'event ..., ну а если они действительно асинхронные, то лучше их убрать из-под процесса.
Понятность кода увеличится, кроме того уменьшится вероятность случайно сделать latch во время правок кода. Ну и наконец некоторые синтезаторы потупее такой код не переваривают.
2) Я надеюсь, VA -- это вывод FPGA, а не какой-то её провод? Внутри FPGA проводов с Z-состоянием нету. И если это вывод, то лучше вынести Z-присвоение на верхний уровень проекта. Облегчает дальнейшую правку кода.
Плюс Квартус не всегда распознаёт "похороненные" Z-присвоения, я на эти грабли уже натыкался.

Теперь по функционированию:

1) b2m совершенно правильно сказал про работу с памятью. В этом коде ставится адрес и сразу читаются данные, так нельзя. Надо хотя бы один такт подождать, пока память не отработает.
2) В этом коде пиксель читается сразу же, а атрибут -- в середине знакоместа. То есть атрибуты будут показываться на 4 пикселя правее, чем надо. Так и задумано? ;)

b2m 18th October 2010 18:49

Quote:

Originally Posted by aniSKY (Post 323836)
поменял - все по прежнему.
вроде они должны выполнять параллельно?

Я тебе про это и написал. Глядя на твой код, можно догадаться про ход твоих мыслей. Так вот, поменяв местами строчки, представь, как оно бы работало, согласно ходу твоих мыслей.

Quote:

Originally Posted by Sandro (Post 323864)
атрибуты будут показываться на 4 пикселя правее, чем надо. Так и задумано? ;)

:v2_lol:

Ewgeny7 18th October 2010 18:53

Quote:

Originally Posted by Sandro (Post 323864)
То есть атрибуты будут показываться на 4 пикселя правее, чем надо. Так и задумано?

Так и делается. Содержимое регистров цвета и "яркости" выводится с запаздыванием на одно знакоместо.

b2m 18th October 2010 19:13

Quote:

Originally Posted by Ewgeny7 (Post 323878)
Так и делается. Содержимое регистров цвета и "яркости" выводится с запаздыванием на одно знакоместо.

Но не в вышеприведённом коде. Данные, считанные посреди знакоместа, надо бы где-то буферизировать, и уже потом копировать в выходные регистры, одновременно с данными, считанными на границе знакомест.

aniSKY 18th October 2010 20:37

спасибо всем за коменты и замечания, приму к сведению, теперь данную часть буду переписывать заново, а то исправлять все придется :)

aniSKY 21st October 2010 03:51

Правильно ли я все понял: https://docs.google.com/fileview?id=...thkey=CPq3w6sK

b2m 21st October 2010 11:57

Я бы объеденил пункты 5 и 6 в один процесс. Потому что и сдвиг, и запись в выходные регистры нужно делать либо по фронту, либо по спаду. Иначе будет нестыковка на полпикселя.

aniSKY 21st October 2010 14:20

тогда получиться, что на 8-ом такте будет происходить одновременно сдвиг и загрузка данных в регистре, на что квартус жалуется сильно. да и последний пиксель будет всегда из следующего знакоместа вроде.

b2m 21st October 2010 14:49

Я думал, сам догадаешься :)
Самый первый пиксел образуется не после сдвига, а после записи в выходной регистр (крайний пискел которого ты используешь как видео-выход), о остальные 7 - в результате сдвига.

aniSKY 21st October 2010 18:25

ок, попробуемс :) (наверно прийдется сдвигающий регистр организовать по иному, через "CASE IS ..." привязанным к томуже клоку, что и загрузка во вторые регистры)

Ewgeny7 21st October 2010 18:46

Quote:

Originally Posted by aniSKY (Post 324438)
прийдется сдвигающий регистр организовать по иному, через "CASE IS ..."

В моих проектах сделано так:
Quote:

process(hcnt,vidb) --Video data shift registers--
begin
case hcnt(2 downto 0) is
when "000"=>vid<=vidb(7);
when "001"=>vid<=vidb(6);
when "010"=>vid<=vidb(5);
when "011"=>vid<=vidb(4);
when "100"=>vid<=vidb(3);
when "101"=>vid<=vidb(2);
when "110"=>vid<=vidb(1);
when "111"=>vid<=vidb(0);
end case;
end process;


---------- Post added at 17:46 ---------- Previous post was at 17:44 ----------

На самом деле это не шифт-регистр, а самый обычный мультиплексор на 8 входов-1выход.

b2m 21st October 2010 18:57

Quote:

Originally Posted by Ewgeny7 (Post 324442)
В моих проектах сделано так:

Неплохо. Наверное, самое оптимальное решение.

Хотя, неизвестно, что лучше: семь мультиплексоров 2-в-1 (в случае со сдвиговым регистром) или один 8-в-1 (как у тебя). Мультиплексор 2-в-1 будет в той же LE, что и бит регистра, а вот 8-в-1 после регистра - это дополнительные LE.

Ewgeny7 21st October 2010 19:05

Quote:

Originally Posted by b2m (Post 324447)
Хотя, неизвестно, что лучше:

Лучше то, что работает. И самому автору понятно от и до. :v2_dizzy_write:

aniSKY 21st October 2010 19:49

Quote:

Originally Posted by Ewgeny7 (Post 324442)
В моих проектах сделано так:


---------- Post added at 17:46 ---------- Previous post was at 17:44 ----------

На самом деле это не шифт-регистр, а самый обычный мультиплексор на 8 входов-1выход.

да да, я это и имел ввиду (увидел в прошивке u10-speccy когда изучал что куды).
в данном случае привязка к клоку необязятельна, или лучше привязать?

Ewgeny7 21st October 2010 19:51

Quote:

Originally Posted by aniSKY (Post 324461)
в данном случае привязка к клоку необязятельна, или лучше привязать?

Ну... необязательна. Клок лучше применить когда будешь окончательные сигналы на монитор выводить.

aniSKY 22nd October 2010 00:27

2 Attachment(s)
ну наконец то добился толку от своего нагромождения кода :D
что имею: четкий спековский экран, все точки и атрибуты там где им и положено; бордер пока выставляю в ручную.
:mad: больше времени прострадал из-за собственной криворукости
PIXa<="0"&"000"&vcnt(8 downto 7)&vcnt(3 downto 1)&vcnt(6 downto 4)&hcnt(7 downto 3);
ATRa<="0"&"000"&"110"&vcnt(8 downto 4)&hcnt(7 downto 3);

привязял к клоку - от этого и шел косяк, стоило убрать привязку - ка все бульк и в порядке :eek:
то что получилось в прицепе (мот кто глянет если не лень будет, подскажет что где подправить чтоб правильно и грамотно было :v2_blush:)
ЗЫ: может у кого есть картинка тестового экрана (:v2_dizzy_photo: или :v2_dizzy_photo:) для спека (или вся прошика этого теста) на которой изображены круги полоски градации? помню пролетала прошивка данного теста на форуме, да вот теперь все никак найти ее не могу.

IanPo 22nd October 2010 11:10

Quote:

Originally Posted by aniSKY (Post 324522)
помню пролетала прошивка данного теста на форуме, да вот теперь все никак найти ее не могу.

Помнится, какую-то тестовую прошивку zst выкладывал: http://zx.pk.ru/showthread.php?t=10548
http://zx.pk.ru/showthread.php?t=10548&page=77

zst 22nd October 2010 12:26

Quote:

Originally Posted by aniSKY (Post 324522)
ЗЫ: может у кого есть картинка тестового экрана (:v2_dizzy_photo: или :v2_dizzy_photo:) для спека (или вся прошика этого теста) на которой изображены круги полоски градации? помню пролетала прошивка данного теста на форуме, да вот теперь все никак найти ее не могу.

Программа для тестирования мониторов: http://zx.pk.ru/showthread.php?t=11194
Прошивка для ПЛИС с градациями яркости: http://zx.pk.ru/showpost.php?p=212360&postcount=113

mbojenov 23rd October 2010 01:22

товарищи и господа! а есть ли информация по РТ1/РТ2 ?

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

Mick 23rd October 2010 10:13

Quote:

Originally Posted by mbojenov (Post 324782)
товарищи и господа! а есть ли информация по РТ1/РТ2 ?

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

Была книга вроде про отечественные ПЛМ. Там вроде и описывался принцип программирования этих микрух. Лично я такую книгу не видел, кроме картинки обложки в инете. Еще вроде как программатор от ATM позволял их шить, но это надо проверять.

mbojenov 23rd October 2010 11:57

Mick, у меня имеется "Стерх", который их шьет. Проблема в том, что не знаю на каком языке писать прошивки, как и в каком софте. Может быть вспомните название книжицы?

Sandro 24th October 2010 22:55

1 Attachment(s)
Quote:

Originally Posted by aniSKY (Post 324522)
ну наконец то добился толку от своего нагромождения кода :D

"Нагромождение" -- это очень удачное слово. Честно говорю, эта задача решается проще ;)
Просто, как я понимаю, ты раньше работал исключительно со схемным вводом, а VHDL только начал учить? Код уж больно характерно выглядит.

Quote:

Originally Posted by aniSKY (Post 324522)
привязял к клоку - от этого и шел косяк, стоило убрать привязку - ка все бульк и в порядке :eek:

Хм. Вообще говоря, если ты что-то исправил, и оно почему-то заработало, это не значит, что ты исправил ошибку. С вероятностью не менее 50% ты просто её замаскировал, и она вылезет когда-нибудь потом. Симуляцией пользуешься хоть?

Quote:

Originally Posted by aniSKY (Post 324522)
то что получилось в прицепе (мот кто глянет если не лень будет, подскажет что где подправить чтоб правильно и грамотно было :v2_blush:)

Приступим. Для начала, тебе следовало бы посмотреть в отчёт квартуса. Он там синим по белому пишет вот такое:

Quote:

Warning: Can't achieve minimum setup and hold requirement CLK25 along 32 path(s). See Report window for details.
То есть, попадание в желаемые времянки квартусу не удалось (а если не задавать максимальную тактовую частоту, то квартус выдаёт красным предупреждение про clock/data skew, что более правильно, как мы увидим позже; почему он его не выдаёт при заданной частоте -- хз, это косяк).

На такое сообщение надо реагировать, как бык на красную тряпку: работоспособность схемы не гарантируется !!! То есть надо бросать все, и разбираться, почему.
Разбираемся: лезем в Report Window и открываем в нём вкладку Timing Analyzer. Сразу видим, что там выделены красным строки Summary и Clock Hold:' CLK25'. Ну, общая сводка на то и общая, что в ней деталей нету, поэтому открываем вторую, про CLK25. Видим список цепей, красным выделены те, по которым есть нарушение времянок. У меня они начинаются с hcnt[2]->PIXd0[1], что уже само по себе подозрительно (ладно, когда сигналы данных попадают в нарушения по Clock Setup, это просто схема тормозная получилась, но Clock Hold? :v2_dizzy_fear: Это явный признак гонки сигналов :v2_scare:).

Что же, тыкаем правой кнопкой мыши в первую строку, и выбираем Locate->Locate in RTL viewer. Видим то, что в аттаче, и ужасаемся.
Со счётчика hcnt сигналы идут одновременно на тактовый вход триггеров PIXd0, и на вход разрешения записи, через логику! При этом получается, что прибывают они в недопустимом порядке, сначала клок напрямую, а потом сигнал разрешения записи через логику. Таким образом, разрешение записи прибывает на один период hclk[0] позже, чем подразумевалось в VHDL коде, и схема работает только потому, что там есть очень большой запас по времени защёлкивания VD в PIXd0, да и само разрешение записи висит целый период hclk[0]. Стоит уплотнить временную диаграмму доступа в память, и полезут ошибки, странные и непонятные.

О лечении. На самом деле, проще и лучше всего отказаться от использования множественных клоков. FPGA и их компиляторы разработаны для того, чтобы запихивать в них преимущественно синхронную логику. Если планируется делать логику асинхронную (а наличие более одного клока -- это уже асинхронная логика), то с гонками и метастабильностью придётся бороться вручную. Тебе это надо?
Кроме того, в твоей FPGA всего 8 линий для тактовых сигналов, из которых твой код уже использует 5. Как только при расширении проекта потребуется девятый клок, то он пойдёт не по специальной выделенной цепи с выровненным временем доставки, а по обычным проводам (точнее, по ним пойдёт клок с наименьшим количеством триггеров). Что опять же приведёт к гонкам сигналов и глюкам.

Не, в такой простой схеме лучше сделать один клок.

PS: Если ты действительно переходишь со схематика, то Tools->Netlist Viewers->RTL Viewer тебе очень поможет. Сразу видно, какую схему квартус соорудил из твоего кода.
PPS: Прошу не обижаться на тон ;) Просто это действительно базовые вещи при работе с полностью синхронными схемами. А FPGA -- именно такие.

aniSKY 26th October 2010 03:14

Quote:

Originally Posted by Sandro (Post 325254)
PS: Если ты действительно переходишь со схематика, то Tools->Netlist Viewers->RTL Viewer тебе очень поможет. Сразу видно, какую схему квартус соорудил из твоего кода.
PPS: Прошу не обижаться на тон ;) Просто это действительно базовые вещи при работе с полностью синхронными схемами. А FPGA -- именно такие.

:v2_thumb: такая критика только на пользу идет, все четко описано (ляпы начинающего VHDL-кодера), побольше таких людей на форумах, которые не отказываются в помощи начинающим - смотришь и умельцев больше будет:v2_cool:. В книгах конечно все описано, но все не охватишь сразу, возникают попутные вопросы, которые у книги не спросишь, а тут все четко и на конкретный вопрос с конкретным примером. огромное спасибо тебе за это, теперь обязательно буду на это обращать внимание!!!!:)
P.S. исправил, как описано выше - коварный "Warning" больше не светится.:smile: ...... рученки уже зачесались писать дальше:v2_dizzy_write:!

axel_sunrise 28th October 2010 13:18

2 Attachment(s)
Нашёл простую схему программатора USB ALTERA

Ewgeny7 28th October 2010 13:37

Спасибо. Я ее видел, НО ТАМ ПИК!!! Ужос. Было бы АВР...

ZEK 28th October 2010 14:42

Quote:

Originally Posted by axel_sunrise (Post 326251)
Нашёл простую схему программатора USB ALTERA

Прикольно, можно попробовать засунуть в PicKit


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

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