User Tag List

Показано с 1 по 10 из 404

Тема: Изучение с "нуля" VHDL и ПЛИС Xilinx

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    19.06.2014
    Адрес
    г. Харьков, Украина
    Сообщений
    731
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот, странны команды обмена с памятью

    команд 6
    b[15:11] = 5'b10010 // select var, выставляет для чтения адрес переменной в стеке
    b[15:11] = 5'b10011 // select [base + index*mul + offs], выставляет адрес для чтения из памяти
    эти 2 команды игнорируют прерывания
    b[15:11] = 5'b10000 // ld чтение с шины данных

    b[15:11] = 5'b10100 // st var, сохраняет регистр в переменную в стеке
    b[15:11] = 5'b10101 // st [base+offs], сохраняет регистр в памяти
    b[15:11] = 5'b10111 // st [base+index], сохраняет регистр в памяти

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

    форматы команд:
    команда select var
    b[10:9] - mode, определяет доп действия, 00-если следующая команда ALU, то данные с шины будут левым аргументом алу, 01-если следующая команда ALU, то данные с шины будут правым аргументом, 10-11 на поведение АЛУ не влияет, 10-декремент регистра dst, 11-инкремент регистра dst
    b[8:6] - dst регистр, который инкрементируется/декрементируется если заданно параметром mode
    b[5:0] - номер переменной в стеке

    команда select [base + index*mul + offset]
    b[10:9] - mul 00-x0, 01-x1, 10-x2, 11-x4, то есть mul=00 регистр index не используется (на 0 умножил)
    b[8:6] - base
    b[5:3] - offset
    b[2:0] - index

    команда ld, читает данные с шины в регистр, применима после команд select и const с чтением константы из памяти
    b[10:9] - sz, размер читаемого аргумента
    b[8:6] - dst, регистр для записи результата
    b[5:3] - aluop - команды алу, пока придумал следующие
    000-nop
    001-знаковое расширение

    команда st var
    b[10:9] - size
    b[8:6] - src, сохраняемый регистр
    b[5:0] - номер переменной

    команда st [base + offset]
    b[10:9] - size
    b[8:6] - base
    b[5:3] - offset
    b[2:0] - right - записываемый регистр

    команда st [base + index], аналогично предыдущей, только b[5:3] номер регистра index


    Ухххх, все, у проца есть весь базовый набор, добавить только разных системных управляющих и готово

    ---------- Post added at 01:25 ---------- Previous post was at 01:08 ----------

    void memcpy(void* dst, void* src, uint16_t cnt)
    {
    while (cnt--) *dst++ = *src++;
    }

    как бы выглядела на псевдоасме псевдопроца

    proc: memcpy (dword dst, dword src, word cnt)
    size: 32
    stack: 4 // dst+src+cnt+tmp

    byte tmp;

    m1: if.16 (cnt ==0) m2 // 16bit aluop "=="; jr m2
    sub cnt,1
    select [src]
    add src,1
    ld.8 tmp
    st.8 [dst]
    add dst,1
    fres // flag=0
    jrn m1
    m2:
    ret

    много инструкций конечно, не pdp11
    но тут стек до 8 переменных, особо не видно преимуществ от команд, может их вообще нет
    надо с флагом придумать политику, что бы были безусловные преходы

    Viktor2312 теперь дело за тобой
    Последний раз редактировалось s_kosorev; 28.05.2015 в 01:44.

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

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

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

Похожие темы

  1. Ответов: 172
    Последнее: 28.11.2017, 13:28
  2. Микроконтроллеры STM32, "с нуля".
    от Viktor2312 в разделе Для начинающих
    Ответов: 279
    Последнее: 07.11.2016, 19:45
  3. Техническая литература: Языки описания аппаратуры "AHDL, VHDL и Verilog"
    от Viktor2312 в разделе Техническая литература
    Ответов: 1
    Последнее: 14.09.2014, 22:29
  4. Ответов: 71
    Последнее: 31.07.2014, 19:42

Ваши права

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