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

User Tag List

Страница 4 из 12 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 119

Тема: Корвет на ПЛИС ?

  1. #31
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ILoveSpeccy Посмотреть сообщение
    Может существует возможность как нибудь быстро диагностировать проблему?
    Если пишешь на верилоге, то можно запустить в Icarus Verilog и сравнить с эмулятором. Тестовый модуль верхнего уровня пишется за 15 минут. Вот такой, например:
    Код:
    module test;
    
    reg[7:0] mem[0:127];
    
    wire[15:0] addrbus;
    wire[7:0] cpu_i = mem[addrbus];
    wire[7:0] cpu_o;
    wire cpu_ce = 1'b1;
    wire cpu_sync;
    wire cpu_rd;
    wire cpu_wr_n;
    
    reg reset;
    reg clk;
    
    k580wm80a cpu(.clk(clk), .ce(cpu_ce), .reset(reset),
    	.idata(cpu_i), .addr(addrbus), .sync(cpu_sync),
    	.rd(cpu_rd), .wr_n(cpu_wr_n), .odata(cpu_o));
    
    always #5 clk = ~clk;
    
    always @(posedge clk) if(~cpu_wr_n) mem[addrbus] <= cpu_o;
    
    initial begin
      $readmemh("k580test.hex", mem);
      $dumpfile("k580test.vcd");
      $dumpvars(2, test);
      reset = 1; clk = 0;
      #100
      reset = 0;
      #3000
      $finish;
    end
    
    endmodule
    Это я в своё время процессор тестировал, но в тест можно и других устройств напихать. Спецы с marsohod.org таким образом даже linux для ARM до промпта запускали.

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

  3. #32
    Master Аватар для ILoveSpeccy
    Регистрация
    20.03.2007
    Адрес
    Germany
    Сообщений
    867
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я на VHDL пишу, а отлаживаю в Active HDL.
    В том то и дело, что в симуляторе прерывания работают как надо.

    И прерывания обрабатываются несколько раз, только потом зависание.

    Сейчас переписал top под Ваши корки ВМ80 и ВН59 из башкирии 2м.
    Проблема один-в-один как с моими корками.
    SpeccyLand - тут рождается клон!

    Новый проект: Аркадный автомат своими руками

  4. #33
    Master Аватар для ILoveSpeccy
    Регистрация
    20.03.2007
    Адрес
    Germany
    Сообщений
    867
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я думаю мне от этого никуда не уйти, но без элементарных знаний ассемблера i8080 мне будет очень сложно довести проект до завершения. Поэтому я решил написать простое тестовое ПЗУ для корвета. Так как я абсолютно не знаю ассемблера i8080, то начинать буду действительно с нуля.
    * Какой ассемблер использовать?
    * Какую литературу мне посоветуете.
    * очень был бы благодарен за простые примеры вывода текста на экран, инициализации контроллера прерываний и их обработки с последующим выводом на экран...
    Последний раз редактировалось ILoveSpeccy; 20.05.2013 в 22:43.
    SpeccyLand - тут рождается клон!

    Новый проект: Аркадный автомат своими руками

  5. #34
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я пишу (грномко сказано) для 8080 в мнемонике Z80
    только не используя комманды специфичные для z80

    есть исходник ОПТС 1 ранних версий,
    могу расшарить, могу еще базы для IDA с разными ромами (там можно переключать i8080,z80)

    а какие примеры, код на чистом железе работать должен ?

  6. #35
    Master Аватар для ILoveSpeccy
    Регистрация
    20.03.2007
    Адрес
    Germany
    Сообщений
    867
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    я пишу (грномко сказано) для 8080 в мнемонике Z80
    только не используя комманды специфичные для z80

    есть исходник ОПТС 1 ранних версий,
    могу расшарить, могу еще базы для IDA с разными ромами (там можно переключать i8080,z80)

    а какие примеры, код на чистом железе работать должен ?
    Сергей, какими инструментами Вы пользуетесь. Я скачал книгу по ассемблеру 8080 инашел немного кода в инете. Но как мне сделать bin файл? Есть ли какой нибудь кросс-ассемблер для винды?
    Пробовать буду в эмуляторе (подгружать бинарник вместо ПЗУ) и на FPGA.

    ---------- Post added at 21:03 ---------- Previous post was at 21:02 ----------

    исходники ОПТС думаю тоже пригодятся.
    SpeccyLand - тут рождается клон!

    Новый проект: Аркадный автомат своими руками

  7. #36
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ILoveSpeccy Посмотреть сообщение
    ОПТС2.0. При разрешении прерывания процом 3 раза генерируется INTA, процом читаются байты 0xCD, 0xF0, 0xF7. Текущий адрес сохраняется в стёке и прыгаем по адресу.
    а что в памяти по адресe f7f0?
    должно быть c3 76 00 (jmp 0076)

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

    и еще вопрос, а работает ли CP/M после загрузки ?
    и ОПТС1 должен работать, там клавиатура работает не по прерываниям, они запрещены

    вот код обработчика из ОПТС2 в мнемонике i8080

    Код:
    RAM:0076 C3 94 0F                 jmp     Int_Periodical
    
    RAM:0F94          Int_Periodical:                         ; CODE XREF: RAM:0076j
    RAM:0F94 F5                       push    psw
    RAM:0F95 3A 6E F7                 lda     LutFlag
    RAM:0F98 B7                       ora     a
    RAM:0F99 C4 AF 0F                 cnz     UpdateLUT
    RAM:0F9C FB                       ei
    RAM:0F9D 3A 19 F7                 lda     SYMNBUF
    RAM:0FA0 B7                       ora     a
    RAM:0FA1 C4 7C 00                 cnz     INT_routine
    RAM:0FA4 F1                       pop     psw
    RAM:0FA5
    RAM:0FA5          _EOI:                                   ; CODE XREF: RAM:loc_70j
    RAM:0FA5 F3                       di
    RAM:0FA6 F5                       push    psw
    RAM:0FA7 3E 20                    mvi     a, 20h ; ' '
    RAM:0FA9 32 28 FB                 sta     PIC_RUS
    RAM:0FAC F1                       pop     psw
    RAM:0FAD FB                       ei
    RAM:0FAE C9                       ret
    а вот он-же в z80
    Код:
    RAM:007C          INT_routine:                            ; CODE XREF: RAM:0FA1p
    RAM:0076 C3 94 0F                 jp     Int_Periodical
    
    RAM:0F94          Int_Periodical:                         ; CODE XREF: RAM:0076j
    RAM:0F94 F5                       push    af
    RAM:0F95 3A 6E F7                 ld      a, (LutFlag)
    RAM:0F98 B7                       or      a
    RAM:0F99 C4 AF 0F                 call    nz, UpdateLUT
    RAM:0F9C FB                       ei
    RAM:0F9D 3A 19 F7                 ld      a, (SYMNBUF)
    RAM:0FA0 B7                       or      a
    RAM:0FA1 C4 7C 00                 call    nz, INT_routine
    RAM:0FA4 F1                       pop     af
    RAM:0FA5
    RAM:0FA5          _EOI:                                   ; CODE XREF: RAM:0070j
    RAM:0FA5 F3                       di
    RAM:0FA6 F5                       push    af
    RAM:0FA7 3E 20                    ld      a, 20h ; ' '
    RAM:0FA9 32 28 FB                 ld      (PIC_RUS), a
    RAM:0FAC F1                       pop     af
    RAM:0FAD FB                       ei
    RAM:0FAE C9                       ret


    ---------- Post added at 22:22 ---------- Previous post was at 22:16 ----------

    Цитата Сообщение от ILoveSpeccy Посмотреть сообщение
    Сергей, какими инструментами Вы пользуетесь. Я скачал книгу по ассемблеру 8080 инашел немного кода в инете. Но как мне сделать bin файл? Есть ли какой нибудь кросс-ассемблер для винды?
    Пробовать буду в эмуляторе (подгружать бинарник вместо ПЗУ) и на FPGA.

    ---------- Post added at 21:03 ---------- Previous post was at 21:02 ----------

    исходники ОПТС думаю тоже пригодятся.
    чуть позже выложу

    например http://home.comcast.net/~tasm/index.htm
    доки можно посмотреть на сайте Вектора
    http://vector06c.narod.ru/
    и их архиве софта http://asdasd.rpg.fi/~svo/scalar/categories/41/
    Последний раз редактировалось esl; 21.05.2013 в 14:16.

  8. #37
    Master Аватар для ILoveSpeccy
    Регистрация
    20.03.2007
    Адрес
    Germany
    Сообщений
    867
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ОПТС1 работает прекрасно. Могу рисовать на бейсике и т.д.
    Ассемблер попробую.

    Ща я сделаю трассировку прерываний в Вашем эмуляторе и посмотрю куды прыгаем при прерываниях...
    SpeccyLand - тут рождается клон!

    Новый проект: Аркадный автомат своими руками

  9. #38
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    собственно идея в том что может не отрабатывает запись в RAM
    у корвета любая запись в место куда нельзя писать приводит к записи в память по соответствующему адресу
    например при записи в подключенный ROM пишем в рам
    при записи в подключенные порты клавиатуры пишем в рам под ним

    но это версия ....

  10. #39
    Master Аватар для ILoveSpeccy
    Регистрация
    20.03.2007
    Адрес
    Germany
    Сообщений
    867
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В файле pic.c в обработчике прерываний int DoPIC (void)
    добавил перед return строку printf("\nDoPIC CALL Addr: %04X", (picHIGH<<8) | Low);

    Результат с ОПТС2 ниже
    Код:
    Driver: Allegmix Lautsprecher (Realtek High Definition Audio)
    DoPIC CALL Addr: F7F0
    DoPIC CALL Addr: F7F0
    DoPIC CALL Addr: F7F0
    DoPIC CALL Addr: F7F0
    DoPIC CALL Addr: F7F0
    DoPIC CALL Addr: F7F0
    DoPIC CALL Addr: F7F0
    DoPIC CALL Addr: F7F0
    DoPIC CALL Addr: F7F0
    DoPIC CALL Addr: F7F0
    DoPIC CALL Addr: F7F0
    И в FPGA тоже самое.
    Мож я чегото путаю?

    ---------- Post added at 22:08 ---------- Previous post was at 22:06 ----------

    Цитата Сообщение от esl Посмотреть сообщение
    собственно идея в том что может не отрабатывает запись в RAM
    у корвета любая запись в место куда нельзя писать приводит к записи в память по соответствующему адресу
    например при записи в подключенный ROM пишем в рам
    при записи в подключенные порты клавиатуры пишем в рам под ним

    но это версия ....
    я так и делаю
    вот кусок кода:
    Код:
                            elsif CPU_WR = '0' then -- write
                               case MAPPER_DO is
                                  when M_RAM | M_ROM0 | M_ROM1 | M_ROM2 | M_KEYBOARD =>
                                     STATE <= SRAMWRITE;
    SpeccyLand - тут рождается клон!

    Новый проект: Аркадный автомат своими руками

  11. #40
    Master
    Регистрация
    21.08.2006
    Адрес
    Ижевск
    Сообщений
    910
    Спасибо Благодарностей отдано 
    20
    Спасибо Благодарностей получено 
    272
    Поблагодарили
    149 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ILoveSpeccy Посмотреть сообщение
    какими инструментами Вы пользуетесь. Я скачал книгу по ассемблеру 8080 инашел немного кода в инете. Но как мне сделать bin файл? Есть ли какой нибудь кросс-ассемблер для винды?
    http://john.ccac.rwth-aachen.de:8000/as/

    make.bat
    Код:
    set PROJNAME=my_prog
    set ASMDIR=c:\prog\asw
    %ASMDIR%\bin\asw.exe -cpu 8080 -L %PROJNAME%.asm
    if exist %PROJNAME%.p %ASMDIR%\bin\p2bin.exe %PROJNAME%.p %PROJNAME%.bin -r $-$ -k

Страница 4 из 12 ПерваяПервая 12345678 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. ПЛИС и всё что с ними связано
    от Sayman в разделе Для начинающих
    Ответов: 1900
    Последнее: 04.11.2023, 09:55
  2. SMUC на дискретах и ПЛИС
    от spensor в разделе Scorpion
    Ответов: 844
    Последнее: 15.05.2023, 12:31
  3. ЮТ-88: Реализация на ПЛИС (DE1)
    от Santechnik в разделе ЮТ-88
    Ответов: 61
    Последнее: 13.05.2022, 08:22
  4. Вопрос по ПЛИС
    от Zloy в разделе Несортированное железо
    Ответов: 23
    Последнее: 17.10.2015, 17:12

Ваши права

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