TS-Conf на ReVerSE-U16

Железо, связанное с TS-Conf

Postby dsp » Sat, 19.07.2014 12:23:25

Проблема в том, что у меня этот вывод используется для разрешения/запрещения записи при обращении Z80 к памяти. Так как шина данных 16 – разрядная, а Z80 обращается побайтно то по bsel_int(0) и bsel_int(1) идет выбор шины адреса A(0).
В свою очередь для четного адреса
sdr_dqml <= not bsel_int(0);
а для нечетного
sdr_dqml <= not bsel_int(1);
То есть если этот вывод заземлен, то надо подумать, как обойти эту ситуацию.
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby TS-Labs » Sat, 19.07.2014 12:43:08

MVV wrote:пришлось добавил цветные маркеры на бордюр для отслеживания работы загрузчика.

Может стоит использовать ТАР?
dsp wrote:если я подключаю эту ножку к модулю SDRAM - то работает, если заземляю то красный бордюр

Портит содержимое младшего байта при записи старшего.
dsp wrote:В свою очередь для четного адреса
sdr_dqml <= not bsel_int(0);
а для нечетного
sdr_dqml <= not bsel_int(1);

sdr_dqml <= a[0];
sdr_dqmh <= !a[0];
dsp wrote:То есть если этот вывод заземлен, то надо подумать, как обойти эту ситуацию.

Я не до конца понял проблему, но в общем случае:
- если рама 8 бит, то логично что маска = 0, всегда выбран байт, а разрешение записи/чтения берется из команд,
- если рама 16 бит, а эмуляция 8-битной шины делается половинками слова, тогда самое простое делать то, что я написал сверху.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sat, 19.07.2014 12:47:05

Прошу прощения, dsp - ты портируешь конфу откуда куда (пентева/с4/u8)? Я не понял )
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Sat, 19.07.2014 12:58:35

При чтения слова из SDRAM обойти просто - запись в буфер чтения только мл. или ст. части слова. А вот при записи, без маски (DQM) проблемно, т.к. автомат инкрементирует адрес в SDRAM в бурсте сам.
Тут два пути решения:
1) Отсоединить вывод 39 SDRAM_DQM от GND и кинуть перемычку на X9 вывод 7 GPIO (он не задействован).
2) Корректировать адрес записи и рубить BURST TERMINATE (тратится тот-же 1 такт)
Last edited by MVV on Sat, 19.07.2014 13:05:40, edited 1 time in total.
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby dsp » Sat, 19.07.2014 13:05:20

TS-Labs,
Я портирую твою TS-Conf для TWARM (которая была мною адаптирована к TWARM железу - SDRAM 16 bit)
на
U8 (ReVerSE) - 8bit.
Изначально у PenEVO шина SDRAM -16 бит. TWARM - 16 бит тоже, вроде все просто. Теперь - U8 (SDRAM 8bit)
Для 8BIT SDRAM я сделал по BURST сначала первый байт потом второй пишется. Длительность запси/чтения возросла на 1 CLK. Запись разрешена по ножке DQM.
U8 - вывод SDRAM DQM посажен на землю. ВОТ это я не подумал. Если не обяснил то спрашивай.
Last edited by dsp on Sat, 19.07.2014 13:18:05, edited 1 time in total.
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby dsp » Sat, 19.07.2014 13:11:07

MVV, в этом проблема для меня что DQM на земле. На чтение - все время читается словом и Z80 по младшему адресу выбирает - младший или старший байт.
Вот на запись - тут всегда якобы два байта пишется, но реально писать или нет - по DQM выбирается.
Наверное, можно и с подключенной к земле DQM обойти эту проблему. Режим менять или во время работы возможно удерживать адрес -все время выставляя команду записи. Коненчо как то можно, но самый простой выход - управлять по DQM ( тем более что уже проверили).
Last edited by dsp on Sat, 19.07.2014 13:22:33, edited 1 time in total.
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby TS-Labs » Sat, 19.07.2014 13:18:54

dsp wrote:Если не обяснил то спрашивай.

Объяснил, теперь понятно. )
Поддерживаю вариант 2 Влада - сделать 2 кейза:
1. Требуется запись 16 бит (ДМА например) - пишем бурстом.
2. Требуется запись 8 бит (ЦПУ) - пишем по требуемому адресу 1 байт, прерывааем бурст.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Sat, 19.07.2014 13:26:23

Попробую так:

---2014.07.17========8bit SDRAM ======= WR - SECOND BYTE A(0) = 1
constant SdrCmd_bt : std_logic_vector(2 downto 0) := "110"; -- burst terminate

when "11101" => -- s1D
if bsel_int(1) = '0' then
sdr_cmd <= SdrCmd_bt;
else
sdr_cmd <= SdrCmd_xx; -- No operation
end if;
-- sdr_dqml <= not bsel_int(1); --LO byte
sdr_dq(7 downto 0) <= data_in(15 downto 8);
state <= "10110"; -- s16

Только откорректирую адрес и такт подачи ВТ.
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby dsp » Sat, 19.07.2014 13:32:06

TS-Labs,
Согласен, чем железо корректировать, проще soft. Тем более, что уже сигнал curr_cpu - заведен в модуль SDRAM.
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby dsp » Sat, 19.07.2014 13:50:38

заработало c заземленным DQM!!!
файл sdram прикрепил
Attachments
sdram.rar
(2.38 KiB) Downloaded 323 times
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby dsp » Sat, 19.07.2014 13:54:23

MVV, спасибо за подсказку.
Если что не пойдет, то буду проверять конечно (сейчас уже ухожу).
SD на - 2GB, FAT16, первый файл ROM от TS-Lab
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby MVV » Sun, 20.07.2014 00:02:48

Тестовый ROM есть какой-нить? Видно что грузит с SD, но после только хаотичное атрибуты... Ткните плз. в ROM от TS-Lab, а то на SD закинул с эмуля zxevo.rom 512КБ. Может не тот?
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby dsp » Sun, 20.07.2014 02:49:08

MVV,
TEST128 - я им пользуюсь.
Я думаю что может не все мегафункции сконвертированы с IV на III Cyclone.
У меня нет III Cyclone, поэтому список только составлю что надо конвертировать.
Сейчас захожу с другой стороны, скачал твой проект и пытаюсь запустить. Начну по частям - загрузчик, видео от ReverSE(GPI<=1), TEST128.
Attachments
test128k.rar
(2.59 KiB) Downloaded 344 times
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby MVV » Sun, 20.07.2014 09:42:45

Скрепил два проекта
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby dsp » Sun, 20.07.2014 10:05:49

MVV, так тест памяти проходит?
Я начал упрощать для того, чтобы проверить SDRAM
Постарался выбросить все лишнее для тестирования памяти
(возможно и больше конечно исключить из проетка)
1 - loader.hex (MVV) – OK
2 – SD – подключен только ReVerSE (video тоже от ReverSE)
3.- zmem.v //Отключил КЭШ wire cache_hit_en = 1'b0;
4. - подключил Z80 напрямую к SDRAM (без арбитра)
ТЕСТ памяти идет

Если не заработает то
-заменю loader (без использования RAM)
-уберу весь лишний код до состояния CPU-SDRAM, (video использует память Cyclone)
Я так понимаю что тут надо вначале запустить SDRAM а дальше уже проще.
Attachments
ZX_TW_Simple.rar
(344.84 KiB) Downloaded 317 times
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby MVV » Sun, 20.07.2014 11:18:00

TS-Labs, проверь, может у тебя работает? А то не пойму где жук.
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby TS-Labs » Sun, 20.07.2014 11:45:53

MVV wrote:Ткните плз. в ROM от TS-Lab, а то на SD закинул с эмуля zxevo.rom 512КБ. Может не тот?

Тот.

На пентеве арбитр жестко связан с zmem.v, и оба прибиты гвоздями к двум вещам:
- циклу ДРАМ,
- диаграммам з80.
У т80 диаграммы принципиально отличаются от железного з80, поэтому с т80 пентевовские конфы работать не будут.
Связано это с тем, что т80 выставляет управляющие сигналы только на 1 такт и только в конце машцикла.
Требуется основательная переделка модулей zmem.v и арбитра.
Чтоб увидеть это наглядно, используйте квартусный ТАР (ну или смоделируйте на мудосиме/а-хдл).
Такие дела...
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 20.07.2014 11:50:24

Насколько я понимаю, на TWARM все заработало. Возможно, за счет того что сдрам выдает инфу очень быстро и все успевается без переделки. Сейчас добавили бурст и все плохо.
В любом случае, используйте ТАР для анализа проблемы.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 20.07.2014 12:01:37

Хотя вижу, что арбитр переделан...
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Sun, 20.07.2014 12:13:00

Решил пока не лезть с паяльником в U8 чтобы проверить DQM. Собрал ReVerSE-U9, там нужный DQM подключен к FPGA. Сейчас переназначу выводы и проверю контроллер SDRAM с DQM. Если заработает, то буду искать причину с анализатором. И когда закончу со звуком на HDMI, буду думать о переносе на U16, тут уже возможностей развернуться проекту больше.
По поводу лачей и асинхронной модели ts-conf, нужно в корне менять архитектуру, все заточено вокруг проца и памяти. Надо перенести все на WISHBONE Bus.
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby TS-Labs » Sun, 20.07.2014 12:18:19

MVV wrote:По поводу лачей и асинхронной модели ts-conf

Латчи, которые есть в этом ХДЛ, там вполне законны и by design. Что на них матерится синтезатор, так это просто переписать их на системверилог в виде always_latch.
MVV wrote:все заточено вокруг проца и памяти.

В основном, памяти. Да, заточено. :gy:
MVV wrote:Надо перенести все на WISHBONE Bus.

Воистену. И тогда уже думать про умные кеши и прочее.

Все мне намекает, что я таки был прав про полную переделку, а не портирование в лоб. :eating:
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Sun, 20.07.2014 12:28:16

TS-Labs wrote:Все мне намекает, что я таки был прав про полную переделку, а не портирование в лоб.

Чтоб что-то переделать, нужно в начале хоть перенести готовое чтобы было от чего и на базе чего делать.
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby dsp » Sun, 20.07.2014 13:15:05

Решил немного подытожить, чтобы и самому разобраться )))).
TWARM проект (сделан для Cyclone IV):
Мегафункции (которые под вопросом - надо менять при портировании на Cyclone III, или нет. Во сяком случае, у меня запускался проект если оставить назначение Cyclone III от MVV для Cyclone IV):
CORE (ReVerSE) ===================================
altpll0.vhd – PLL
altram1 – VIDEO - ReVerSE (VIDEO 16kB)
altram2 – VIDEO - ReVerSE (VIDEO 8 kB)
RAM_256B – UART FIFO (2 буфера)
ROM_1K.vhd – память начального загрузчика
CMOS.vhd – память часов

core_TSLab =======================================
cache_addr.v - КЭШ
cache_data.v - КЭШ
video_cram.v - все остальное для видео
video_sfile.v -
video_tmbuf.v -
video_tsline0.v -
video_tsline1.v -
video_vmem.v –
//================================================
TWARM vs ReVerSE U8
Входная частота 50 MHZ – одинаковая
Память SDRAM, SRAM – разная
Назначение пинов – разное
TWARM.vhd – немного разный

Предпосленяя модификация MVV (20.07.2014 -речь шла о том что квадратики только видны разноцветные) я ее обратно портировал:
Что сделал
altpll0.vhd – (заменил на Cуclone IV - вроде не обязательно)
TWARM_Z80.qsf - заменил полностью
TWARM.vhd – добавил:
F_NCE : out std_logic;
SDRAM_CS_N : out std_logic;
SDRAM_DQMH : out std_logic;
SDRAM_DQML : out std_logic
//---------------------------------------------------------------
F_NCE <= '1'; --FLASH Memory DISABLE
SDRAM_CS_N <= ‘0’;
SDRAM_DQMH <= '1'; -- DQ[15:8] -DISABLE
SDRAM_DQML <= '0';
SRAM модуль удалил так как не важно это сейчас
//==========================
GPI <= '1'; VIDEO ReVerSE
GPI <= '0'; VIDEO TS-Conf
В любом случае TEST128 проходит
Последнее что сделаю – выброшу все лишнее, чтобы проверить CPU-SDRAM
TEST128 сделаю из памяти Cyclone (частота 3.5 7 14 MHz)
Возможно, приобрету Cyclone III из любопытства.
Согласен с MVV - с нуля начинать тяжело
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby TS-Labs » Sun, 20.07.2014 13:46:58

С нуля или нет - непринципиально. Главное, что вы делаете. Я немного занят под завязку, и к сожалению пока не участвую. Извините, если вставляю свои 5 копеек )
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby dsp » Sun, 20.07.2014 16:20:46

Oбмен информацией всегда полезен - пусть даже 5 копеек )))).
Если даже этот BURST тут не пойдет то все равно пригодится этот опыт.
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

PreviousNext

Return to Hardware

Who is online

Users browsing this forum: No registered users and 1 guest

cron

x