Важная информация

User Tag List

Страница 8 из 17 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 165

Тема: Новый Орион. Давайте обсудим!

  1. #71

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от pvlad Посмотреть сообщение
    Думаю в Альтере это можно сделать следующим образом (уже эта идея высказывалась на форуме): аппаратный счетчик перебирает адреса и читается из Альтеры (не знаю конкретно откуда!) и записывается байты в ОЗУ. Далее аппаратный ресет.
    Не надо никаких счётчиков, ПЗУ загрузчика учитывается при проектировании маппера памяти и включается только после сброса по нулевым адресам, а выключается при доступе к определённому порту, одновременно происходит повторный "программный" сброс. При этом можно сделать как в Векторе, чтение из ПЗУ, а запись в ОЗУ, находящимся под этим ПЗУ.

    Цитата Сообщение от БК-0010 Посмотреть сообщение
    это типо 512 макроячеек, или как-то менее расточительно можно?
    Это svofski может сказать.

  2. #72

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я делал это в самом начале проектирования Ориона. имею ввиду некоторое количество байт прямо в альтере. Это делается просто, но отжирает реально примерно байт на ячейку. Вначале я вообще хотел Монитор в альтеру запихнуть, но всего три тысячи ячеек в ПЛИС охладили мой пыл. В общемто, ячеек 200 могу дать вам на растерзание. Уложитесь?
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  3. #73

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    В общемто, ячеек 200 могу дать вам на растерзание. Уложитесь?
    Наврядли
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  4. #74

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #75

    Регистрация
    18.09.2009
    Адрес
    г.Ногинск, МО
    Сообщений
    246
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    ... ячеек 200 могу дать вам на растерзание. Уложитесь?
    Я думаю, можно проанализировать написанное и попробовать оптимизировать. Далее. Выкинуть все лишнее, что относится чисто к Ориону. Зачем внутри Альтеры эмулировать что-то для чтения РОМ-диска, порты IDE и т.д. Мы же договаривались, что все орионовское выносим на дополнительную плату. Там можно в оригинале поставить всякие ВВ55, а можно все сделать на отдельной, второй Альтере. Думаю, на Альтере даже дешевле будет, чем на россыпухе. Более того, можно по серьезному заняться отдельно периферией. Ячеек будет навалом на всякие эксперименты. А здесь мы оставляем сам контроллер, делаем порты, как я писал выше и остальное, что задумывалось для контроллера. При этом поместится загрузчик и останутся ячейки на исправление просчетов и ошибок.
    Что еще важно. Если весь Орион мудрить на одной Альтере, то "совершенствованию" и возне не будет конца. Я с Орион-ПРО на этом погорел, но это отдельный разговор. Должны быть какие-то законченные, промежуточные этапы, опираясь на которые можно двигаться дальше.
    В крайнем случае, когда проект подойдет к финалу (будем надеяться!) вот в таком варианте, как я предлагаю, можно подобрать "большую" Альтеру и все туда запихнуть, если без этого "орионовци" не смогут жить!
    Если ты чего-то не знаешь, то это не значит, что этого не может быть.

  6. #76

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Наврядли
    Можно даже не гадать. А взять готовые исходники чтения/записи 24С16 на Скорпионе.
    Я пытаюсь найти их у себя, но нуно потрясти spensor'a и savelij.
    Если склероз мне не изменяет, то там даже меньше 200 байт...
    Там выполняется переброска из 24С16 в ОЗУ и обратно.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  7. #76
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #77

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    Можно даже не гадать. А взять готовые исходники чтения/записи 24С16 на Скорпионе.
    Я пытаюсь найти их у себя, но нуно потрясти spensor'a и savelij.
    Если склероз мне не изменяет, то там даже меньше 200 байт...
    Там выполняется переброска из 24С16 в ОЗУ и обратно.
    Вот что нужно для чтения с SD/MMC. На взгляд, тут поболее 200 байт будет:
    Код:
    sd_select:
    	call sd_fini
    
    	or SD_CS            ; select, still idle data
    	out (RTC), a
    	ret                 ; af b trashed
    
    sd_fini:
    	ld b, 17            ; clock low high low high ... low, 8 pulses
    sd_wiggle:
    	ld a, SD_DOUT       ; unselected, idle data
    L1:
    	out (RTC), a
    	xor SD_CLK
    	djnz L1
    	ret                 ; af b trashed
    
    sd_put:                 ; byte from a
    	ld c, a
    	ld b, 8
    L3:
    	ld a, SD_CS >> 1    ; 7 msbits
    	rl c
    	rla                 ; SD_DOUT is RTC.0
    	out (RTC), a        ; clock is low
    	or SD_CLK
    	out (RTC), a        ; rising clock edge
    	djnz L3
    	and ~SD_CLK
    	out (RTC), a        ; leave with clock low
    	ret                 ; af bc trashed
    
    sd_get:                 ; byte to a
    	ld b, 8
    L2:
    	in a, (RTC)
    	rla                 ; SD_DIN is RTC.7
    	rl c
    	ld a, SD_CS | SD_DOUT | SD_CLK
    	out (RTC), a
    	and ~SD_CLK
    	out (RTC), a
    	djnz L2
    
    	ld a, c
    	ret                 ; af bc trashed
    
    ; command in a, includes fixed msbits
    ; arg32 in dehl
    ; z return, if R1 (in a) is 0
    
    sd_command_no_arg:
    	ld hl, 0
    
    sd_command_word_arg:  ; fits in HL
    	ld de, 0
    
    sd_command:           ; command in a, dword arg in dehl
    
    	call sd_put       ; command includes fixed 01 startbits
    
    	ld a, d           ; arg
    	call sd_put
    	ld a, e
    	call sd_put
    	ld a, h
    	call sd_put
    	ld a, l
    	call sd_put
    
    	ld a, 095h        ; crc7 only valid for initial CMD0
    	call sd_put       ; DOUT ends up idle because of the stopbit
    
    	ld hl, 20000      ; XXX timeout XTAL dependent
    L4:
    	call sd_get       ; R1 response, when msbit is clear
    	or a              ; zero and sign valid
    	ret p             ; R1 in a. z if ok
    
    	dec hl
    	bit 7, h          ; until HL wraps negative
    	jr z, L4
    	ret               ; 0x80 | ? in a, nz
    
    ; command response R1
    ; 0x00 ok
    ; or bitfield
    ; 0x01 idle state
    ; 0x02 erase reset
    ; 0x04 illegal command
    ; 0x08 command crc error
    ; 0x10 erase sequence error
    ; 0x20 address error
    ; 0x40 parameter error
    ; 0x80 timeout (other bits meaningless)
    ;
    ; packet token
    ; 0xFF none yet
    ; 0xFE ok
    ; or bitfield
    ; 0x01 error
    ; 0x02 controller error
    ; 0x04 media ecc failed
    ; 0x08 out of range
    ; 0x10 card is locked
    
    sd_wait_token:
    	ld hl, 20000      ; XXX timeout XTAL dependent
    L5:
    	call sd_get       ; token is first non-FF
    	cp 0FFh
    	ret nz            ; token in a
    
    	dec hl
    	bit 7, h          ; until HL wraps negative
    	jr z, L5
    	ret               ; FF in a
    
    sd_wait_busy:
    	ld hl, 20000      ; XXX timeout XTAL dependent
    L6:
    	call sd_get       ; 8 clocks. data output activates after 1 clock
    	inc a             ; FF is not busy
    	ret z             ; z, ok. a=0
    
    	dec hl            ; else busy or something
    	bit 7, h          ; until HL wraps negative
    	jr z, L6
    	ret               ; nz, timeout
    
    CMD0   equ 040h |  0 ; resets the card
    CMD9   equ 040h |  9 ; read CSD
    CMD10  equ 040h | 10 ; read CID
    CMD16  equ 040h | 16 ; set R/W block
    CMD17  equ 040h | 17 ; read block
    CMD24  equ 040h | 24 ; write block
    CMD55  equ 040h | 55 ; next command is ACMDxx
    ACMD41 equ 040h | 41 ; send host capacity support, init card
    
    ; byte offset in dehl
    ; z return if ok
    
    sd_read_block:
    	ld a, CMD17           ; READ_SINGLE_BLOCK
    	call sd_command       ; dehl byteaddress
    	ret nz                ; not "ok"
    
    	call sd_wait_token    ; packet start or FF if timed out
    	cp 0FEh
    	ret nz                ;  or error
    
    	ld hl, (rwaddr)
    	ld e, 128             ; loop counter
    L9:
    	call sd_get           ; data
    	ld (hl), a
    	inc hl
    	dec e
    	jr nz, L9             ; do the sector
    
    	call sd_get           ; crc16
    	ld h, a
    	call sd_get           ;  in HL
    	ld l, a               ; crcs are not used
    
    	xor a                 ; zero, no carry
    	ret
    
    sd_setup:
    	call sd_select
    	call sd_wait_busy     ; nz if timed out, z a=0 if ok
    	ret nz
    
    	; A is 0 from sd_wait_busy.
    	; byte address to dehl from TRACK, SECTOR
    	; when spt 256 and sector 128
    
    	ld hl, (sectorx)  ; sector to h, zero to l
    	ld de, (track)    ; adehl (TRACK << 16) | (SECTOR << 8) | 0
    
    	IF 0
    
    	srl d
    	rr e
    	rr h
    	rr l               ; dehl sector * 128
    	xor a              ; z, ok. cannot overflow
    
    	ELSE
    
    	; XXX XXX XXX XXX easy way out
    
    	add hl, hl
    	rl e
    	rl d               ; dehl sector * 512
    	adc a, a           ; z, if ok
    
    	ENDIF
    
    	ret
    
    sd_read:
    	call sd_setup
    	call z, sd_read_block
    
    sd_done:
    	push af
    	call sd_fini
    	call rtc_unselect       ; /CS high, clock and dout low
    	pop af
    	jp nz, rw_fail
    
    	xor a
    	ret
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  9. #78

    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    На взгляд, тут поболее 200 байт будет
    насамделе вы по-моему зря упёрлись в эти 200 байт.. Всё можно сделать по другому:
    1) из конфПЗУ грузится временная конфигурация с загрузочным ПЗУ хоть на все 3к ячеек
    2) Z80 стартует с загрузочным ПЗУ и грузит с флеши в ОЗУ системное ПЗУ компа
    3) в конфПЗУ загружается с флеши новая конфигурация уже реального компа
    4) производится рестарт FPGA с загрузкой окончательной конфигурации при уже загруженном в ОЗУ системном ПЗУ
    5) Z80 стартует с системным ПЗУ и загружает с флеши в конфПЗУ опять временную конфигурацию
    6) подготовка закончена - комп начинает работать
    Последний раз редактировалось Black_Cat; 11.10.2009 в 22:07.

  10. #79

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    БК-0010, Z80 также содержится в прошивке конфПЗУ и сжирает более 2000 ячеек.
    Грузить в конфПЗУ с флеши - яким таким макаром? А как насчет ограниченного всё-таки числа записей в конфПЗУ?
    В общем, вот исходы работы с 24С16 в Скорпионе. Размеров не пугайтесь, там реально нужен небольшой кусок.
    Для справки - NVRAM - это и есть 24С16, работа с ней идет через системный порт FFBA. Бит D4 - SDA OUT, D5 - WP, D6 - SCL OUT и SDA IN.
    Вложения Вложения
    • Тип файла: rar NVRAM.rar (4.8 Кб, Просмотров: 148)
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  11. #80

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати, 24С16 я уже прикошачил на плату Ориона...
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

Страница 8 из 17 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. давайте меняццо
    от sv в разделе Барахолка (архив)
    Ответов: 25
    Последнее: 23.01.2009, 21:04
  2. Новая софтина: GSV V1.7DS. Обсудим?
    от CityAceE в разделе Софт
    Ответов: 15
    Последнее: 23.01.2007, 03:53
  3. А давайте поздравим Rst7 с ДР !
    от Orionsoft в разделе Поздравления
    Ответов: 11
    Последнее: 09.12.2006, 20:09
  4. Описание системы команд - давайте централизуем ;)
    от Alex/AT в разделе Программирование
    Ответов: 42
    Последнее: 09.07.2005, 22:34

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •