Модераторы: Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Процессор dp32, active-vhdl и команды dp32 
V
    Опции темы
rattick
Дата 24.11.2010, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.2.2007

Репутация: нет
Всего: нет



Здравствуйте.
Дано описание процессора dp32 (и его компонентов) на языке VHDL. Процессора выполняет последовательность команд:
Счетчик(РС)   Машинный код        Символическое кодирование
0                      0700_0000             r0←r0& ¬ r0
1                      1002_0000             r2←r0+0
2                      2102_0000             M[r0+disp32]←r2
3                      0000_0008             disp32=8
4                      1002_0201             r2←r2+1
5                      1101_020A             r1←r2-10
6                      5009_00FA             if (1=V&0|N&0|Z&1) then PC←PC+(-6)
7                      5000_00FA             if (0=V&0|N&0|Z&0) then PC←PC+(-6)
8                      0000_0000             r0←r0+r0

Эта последовательность задается в памяти
Memory:
Код

USE work.dp32_types.all,work.alu_32_types.all;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
entity memory is
    generic (Tpd    :Time:= unit_delay);
    port (    d_bus    :inout bus_bit_32 bus;
            a_bus    :in  bit_32;
            read    :in  std_logic;
            write    :in  std_logic;
            ready    :out std_logic);
end  memory;
ARCHITECTURE behaviour OF memory IS
begin
    process
        constant  low_address :integer :=0;
        constant high_address :integer :=65535;
        type memory_array is 
            array(integer range low_address to high_address)of bit_32;
        variable address : integer:=0;
        variable mem :memory_array:=
            (X"0700_0000",
             X"1002_0000",
             X"2102_0000",        
             X"0000_0008",
             X"1002_0201",
             X"1101_020A",
             X"5009_00FA",        
             X"5000_00FA",
             X"0000_0000",        
             others =>X"0000_0000");
    begin
        --
        -- put d_bus and reply into initial state
        --
        d_bus <=null after Tpd;
        ready <='0' after Tpd;
        --
        -- wait for a command
        --
        wait until (read='1')or(write='1');
        --
        -- dispatch read or write cycle
        --
        address := bits_to_int(a_bus);
        if address >=low_address and address <=high_address then
            -- address match for this memory
            if write ='1' then
                ready<='1' after Tpd;
                wait until write='0'; -- wait until end of write cycle
                mem(address):=d_bus'delayed(Tpd); -- sample data from Tpd ago
            else  -- read='1'
                d_bus <= mem(address) after Tpd;    -- fetch data
                ready <='1' after Tpd;
                wait until read='0'; -- hold for read cycle
            end if;
        end if;
    end process;        
end behaviour;                        





Задача: самому придумать какую-нибудь последовательность действий.
Подумал о такой:

0        r0←r0& ¬ r0
1        r2←r0 + 1
2        r0←r0 + 1
3        r2←r2 * r0
4        r0←r0 + 1
5        r2←r2 * r1
и т.д.
Вопрос вот в чем: а как переводить из символьной кодировки в машинную???
Дан такой пример:
Адрес в памяти          Код команды                  Расшифровка
0000_0001               1002_0000                      r2←r0+0

То есть мою последовательность команд надо перевести в адреса и записать в memory.vhd. В общем просьба помощь в переводе.
PM MAIL   Вверх
xvr
Дата 24.11.2010, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 1
Всего: 223



Описание системы команд этого dp32 в природе существует? Вот в нем и ищите.
Вот этот - http://www.cs.sfu.ca/CC/250/ggbaker/VHDL/cookbook/cb-7.pdf ?
Стр 2-3 - кодировка инструкций

PM MAIL   Вверх
rattick
Дата 24.11.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.2.2007

Репутация: нет
Всего: нет



Кодировка то есть и совпадает. Но как мне перевести (взято из вашей ссылки) r3 ¬ r1 + r2 (код X"00") в адрес ячейки памяти??? Пример в первом посте.
В архиве поведенческая модель процессора и АЛУ

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  dp32.zip 3,98 Kb
PM MAIL   Вверх
xvr
Дата 24.11.2010, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 1
Всего: 223



Цитата(rattick @  24.11.2010,  21:31 Найти цитируемый пост)
Но как мне перевести (взято из вашей ссылки) r3 ¬ r1 + r2 (код X"00") в адрес ячейки памяти???
Его надо переводить не в адрес, а в содержимое. И не только код операции, но и операнды. И принимать во внимание кодировку инструкции. 
Для r3 <- r1 + r2 кодировка описана в первой же картинке после таблицы кодов:
Цитата

<opcode:8 bit><r3:8 bit><r1:8 bit><r2: 8bit>
т.е. r3 <- r1 + r2 будет закодирована как X"0003_0102"

Ваша последовательность
Цитата

0        r0←r0& ¬ r0
1        r2←r0 + 1
2        r0←r0 + 1
3        r2←r2 * r0
4        r0←r0 + 1
5        r2←r2 * r1
будет
Код

X"0700_0000",
X"1002_0001",
X"1000_0001",
X"0202_0200",
X"1002_0001",
X"0202_0201"

(если нигде не ошибся)

PM MAIL   Вверх
rattick
Дата 25.11.2010, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.2.2007

Репутация: нет
Всего: нет



Огромное спасибо!!!! Дело двинулось!!!! Увы плюсовать не могу

Это сообщение отредактировал(а) rattick - 25.11.2010, 17:39
PM MAIL   Вверх
Aregon
Дата 2.9.2011, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 2.9.2011

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разное (электроника) | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.