PDA

Просмотр полной версии : Спектрум на DE1 (из темы про ReVerse)



Birden
13.04.2011, 10:24
Всем привет!
Помогите, пожалуйста, адаптировать под DE1 прошивку, предназначенную для u10. Интересует реализация Spectrum-а.
Начал было сам, подправил в квартусе тип кристалла, переконфигурировал ноги в pin plannere, но ругается fitter:

Error: Can't implement PLL "altpll0: pll|altpll:altpll_component|pll" as Cyclone II PLL type
Error: Can't implement clock multiplication and clock division parameter values for PLL "altpll0: pll|altpll:altpll_component|pll"
Error: Can't implement PLL because Division and Multiplication cannot be achieved

Дальше моих познаний не хватает :confused:

Ewgeny7
13.04.2011, 10:39
Тебе нужно создать свой PLL вместо имеющегося в проекте. Посмотри частоты, которые выдает PLL в этом проекте, и создай аналогичный для ЦЫклон_2 для своей DE1.

---------- Post added at 10:39 ---------- Previous post was at 10:31 ----------

Не забудь учесть реальную частоту кварца на входе ПЛИС. Я не знаю какой кварц у тебя стоит, но вероятно не 50Мгц как на U10.

Birden
13.04.2011, 10:41
Тебе нужно создать свой PLL вместо имеющегося в проекте. Посмотри частоты, которые выдает PLL в этом проекте, и создай аналогичный для ЦЫклон_2 для своей DE1.

Сначала была другая ошибка - открыл по ссылке файл altpll0.vhd и исправил там в конфигурации altpll параметр intended_device_family на "Cyclone II" (было "Cyclone III"). После этого стал ругаться fitter.
Что там еще нужно менять?

Ewgeny7
13.04.2011, 10:43
Полностью удали из проекта модуль altpll. И создай свой, новый.

Birden
13.04.2011, 10:43
Тебе нужно создать свой PLL вместо имеющегося в проекте. Посмотри частоты, которые выдает PLL в этом проекте, и создай аналогичный для ЦЫклон_2 для своей DE1.

---------- Post added at 10:39 ---------- Previous post was at 10:31 ----------

Не забудь учесть реальную частоту кварца на входе ПЛИС. Я не знаю какой кварц у тебя стоит, но вероятно не 50Мгц как на U10.

Судя по схеме DE1 стоит генератор 50МГц.

Ewgeny7
13.04.2011, 10:45
выходные частоты - 14Мгц и 1,75Мгц

ZEK
13.04.2011, 11:09
выходные частоты - 14Мгц и 1,75Мгц
1.75 PLL не сделает, ручками только делить

---------- Post added at 10:09 ---------- Previous post was at 10:08 ----------


но вероятно не 50Мгц
24,25,50Mhz

Ewgeny7
13.04.2011, 11:22
1.75 PLL не сделает, ручками только делить
Делает, делает... Я же сделал на Ux.

ZEK
13.04.2011, 11:24
Делает, делает... Я же сделал на Ux
не делает, в CycII PLL как бы древнее, меньше размах множителей/делителей, в CycIV вообще дробные множители/делители

Ewgeny7
13.04.2011, 11:28
в CycII PLL как бы древнее,
Возможно, со вторыми ссыклонами я дела не имел. На третьем всё поделилось - 50*7/200=1,75

Birden
13.04.2011, 13:00
Да, мегавизард ругается, если выбрать не Cyclone III, a II. Ругается именно на mult/div factor's.
Появились такие вопросы:
1. Как отключить AY в исходниках? Потом разберусь, как сделать 1.75МГц вручную.
2. Насколько критична частота с2 (который 56МГц)? Он, насколько я понимаю, для RAM?
3. В плате DE1 установлена SRAM 256k x 16 (т.е. нет линии A18) - достаточно ли будет переобъявить вектор адреса (вместо 18 downto 0 указать 17 downto 0)?

ZEK
13.04.2011, 13:23
56 и 14 хорошо формируются из 14мнz

Birden
13.04.2011, 13:35
56 и 14 хорошо формируются из 14мнz

У DE1 вроде как есть только 50МГц.
Вместо 14МГЦ получается 14.285714.
1.75 сделать вообще проблема - ниже 9.375 МГц сделать не дает.
56 - тоже никак, либо 50, либо 52.7, либо 60

caro
13.04.2011, 14:01
У DE1 вроде как есть только 50МГц.24, 27 и 50 МГц.

1.75 сделать вообще проблема - ниже 9.375 МГц сделать не дает.Не обязательно эту частоту получать с помощью PLL.

Ewgeny7
13.04.2011, 14:02
Насколько критична частота с2 (который 56МГц)?
Менять не желательно, это частота для сканера ТВ->VGA.


1.75 сделать вообще проблема - ниже 9.375 МГц сделать не дает.
А здесь можешь подать и 7, и 3.5. просто тональность несколько изменится :)

---------- Post added at 14:02 ---------- Previous post was at 14:02 ----------


Не обязательно эту частоту получать с помощью PLL.
Кзтате - да.

Birden
13.04.2011, 14:08
Тогда подскажите, как вручную создать эти частоты?

vlad
13.04.2011, 14:08
У DE1 вроде как есть только 50МГц.
Для CycloneII нужно заменить модуль PLL и подобрать кратную частоту 112.5MHz и 28MHz, потом делителем на VHDL, получить нужные частоты... Или задействовать еще генератор 27МГц, тогда проще оперировать с разными частотами.
Ну это, самое простое, дальше работа с выводом звука на WM8731 тоже сложности большой не представляет...

Birden
13.04.2011, 14:24
Для CycloneII нужно заменить модуль PLL и подобрать кратную частоту 112.5MHz и 28MHz, потом делителем на VHDL, получить нужные частоты... Или задействовать еще генератор 27МГц, тогда проще оперировать с разными частотами.
Ну это, самое простое, дальше работа с выводом звука на WM8731 тоже сложности большой не представляет...

Для меня пока что это совсем не просто :smile:

---------- Post added at 17:24 ---------- Previous post was at 17:17 ----------

Еще вопрос по конфигурированию: квартус ругается, что на ноге PIN_W20 висит сигнал SD_DAT. Вроде как он зарезервирован под сигнал LVDS91p/nCEO. Как ему сказать, что он неправ?

vlad
13.04.2011, 14:27
Еще вопрос по конфигурированию: квартус ругается, что на ноге PIN_W20 висит сигнал SD_DAT. Вроде как он зарезервирован под сигнал LVDS91p/nCEO. Как ему сказать, что он неправ?
Ну это скорее вопрос в другу тему - конфигурации для DE1...

Ewgeny7
13.04.2011, 14:30
Вроде так - Assign - Device - Pin option - Dual purpose pins. Там ставишь для пина nCEO значение "as I/O"

Birden
13.04.2011, 14:31
Задай в качестве входной частоты 27 МГц.
с0 = 27*14/27 = 14 МГц
c1 = 27*56/27 = 56 МГц


при этих числах в визарде получается 14.11 МГц и 51.75 МГц

Birden
13.04.2011, 14:44
Откомпилил, залил - на экране квадрат с мусором. Бордюр зеленый, а в центре мигающие знакоместа. Значит ли это, что с частотами что-то не то?

Ewgeny7
13.04.2011, 15:24
Нет, это как раз замечательно :)
Готовь SD с образом ПЗУ.

Birden
13.04.2011, 15:44
Нет, это как раз замечательно :)
Готовь SD с образом ПЗУ.

SD с образом из архива zxm_bios_fatall_0_23.rar ?
Запуск был со вставленной картой.
Похоже, проблемы в "районе" SD?

lisica
13.04.2011, 21:53
Birden, Поиграйся клоками в прошивке...
Типа: if (clk'event and clk = '1') then меняй на значение '0', или '1' по портам 1FFD, 7FFD, DFFD

Birden
14.04.2011, 05:23
Все-таки объясните, могут быть проблемы из-за того, что SRAM у DE1 c 18 битной адресацией, вместо 19?

---------- Post added at 08:23 ---------- Previous post was at 07:48 ----------


Birden, Поиграйся клоками в прошивке...
Типа: if (clk'event and clk = '1') then меняй на значение '0', или '1' по портам 1FFD, 7FFD, DFFD

А это для чего? В смысле что должно меняться?

Ewgeny7
14.04.2011, 08:10
Все-таки объясните, могут быть проблемы из-за того, что SRAM у DE1 c 18 битной адресацией, вместо 19?
Не "может", а "будет".


a<="111" & (not(dos) and not(p1ffd)) & (p7ffd(4) and not(p1ffd)) & a_buff(13 downto 0);

Как видно нетрезвым глазом, старший разряд адреса рулит содержимым образа ПЗУ в куске ОЗУ. Без этого куска комп не стартует.

---------- Post added at 08:10 ---------- Previous post was at 08:05 ----------

Тут два выхода - или заливать ПЗУ прямо во флешь на плате DE1 (там вроде как есть такая), или эмулировать старший разряд адреса ОЗУ используя "вторую половинку" из 16-битного массива шины данных ОЗУ. Подобную вещь делали при обратном переносе проекта из DE1 в u10 (Башкирия 2М), только там наоборот, шестнадцатибитное представление данных эмулировалось с помощью еще одного адресного разряда восьмибитной памяти.

Birden
14.04.2011, 08:50
a<="111" & (not(dos) and not(p1ffd)) & (p7ffd(4) and not(p1ffd)) & a_buff(13 downto 0);

Как видно нетрезвым глазом, старший разряд адреса рулит содержимым образа ПЗУ в куске ОЗУ. Без этого куска комп не стартует.


Да, это я уже увидел.


Тут два выхода - или заливать ПЗУ прямо во флешь на плате DE1 (там вроде как есть такая), или эмулировать старший разряд адреса ОЗУ используя "вторую половинку" из 16-битного массива шины данных ОЗУ. Подобную вещь делали при обратном переносе проекта из DE1 в u10 (Башкирия 2М), только там наоборот, шестнадцатибитное представление данных эмулировалось с помощью еще одного адресного разряда восьмибитной памяти.

Залить во flash на плате - не проблема, а вот подправить код... VHDL для меня пока что темный лес, я больше по MCU да по ARM-ам специализируюсь.

Ewgeny7
14.04.2011, 10:12
Мне нужно схему DE1, тогда смогу код изменить. Или "шаблон" проекта со входами-выходами. Сильно быстро не обещаю, у меня есть еще и текущий проект.
Может еще кто поможет? Камиль (caro) вроде как планировал перенос проекта на DE1.

caro
14.04.2011, 10:18
Камиль (caro) вроде как планировал перенос проекта на DE1.Времени пока нет :)

Birden
14.04.2011, 10:32
Мне нужно схему DE1, тогда смогу код изменить. Или "шаблон" проекта со входами-выходами. Сильно быстро не обещаю, у меня есть еще и текущий проект.


Схема DE1.

ZEK
14.04.2011, 10:34
Если у компа шустрая турба не забываем учесть что Flash на DE1 томромзная, точно не помню но чуть ли не 120нс

Ewgeny7
14.04.2011, 11:27
Если у компа шустрая турба не забываем учесть что Flash на DE1 томромзная, точно не помню но чуть ли не 120нс
на 7 Мгц будет работать. На моей самодельной борде стоит ПЗУ 90нс, проблем небыло.
А большую скорость делать смысла нет.


Схема DE1
Ага, спасибо.

Ewgeny7
14.04.2011, 13:45
вот конфигурация для DE1.
Вау... Ты где раскопал сей экспонат? :)

---------- Post added at 13:45 ---------- Previous post was at 13:44 ----------


такого рода конструкциями вы себе глюкодром создаете,
не мы, а кто-то ОН.

ZEK
14.04.2011, 13:46
Тоды ой, бес попутал

Ewgeny7
14.04.2011, 14:01
Не могу понять, как это связано с этой темой?
Переезжаем...

vlad
14.04.2011, 14:07
Переезжаем...
DOOM блин прям :) одна часть здесь другая в другой галактике... :)

Birden
14.04.2011, 14:57
Birden, вот конфигурация для DE1. На большее вряд-ли у кого будет мозгов :)

Ага, спасибо, эту я первым делом запустил :smile:
Не, буду ковырять дальше, надо же когда-то начинать (я про VHDL) :biggrin: