User Tag List

Страница 33 из 41 ПерваяПервая ... 293031323334353637 ... ПоследняяПоследняя
Показано с 321 по 330 из 404

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

  1. #321

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

Название:	pe32_d.jpg 
Просмотров:	265 
Размер:	21.6 Кб 
ID:	52306  

  2. #322

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Стандартный конвейер процессора имеет регистры после мультиплексоров регистрового файла,
    т.е. на входах АЛУ. В состав АЛУ входит выходной мультиплексор, оканчивающийся своим
    регистром. Тут мы видим 3 такта конвейера: декодирование команды, собственно операция АЛУ
    и запись в регистровый файл.
    У меня немного по другому. На стадии декодирования мы вычисляем операции АЛУ,
    заканчивающиеся регистрами на каждую операцию, а затем на шаге записи в регистровый файл
    мультиплексируем результаты каждой операции. На самом деле количество регистров можно
    сократить, например, объединив несколько быстрых логических операций, суммирование и
    вычитание имеют свои регистры.
    Сигналы bypassRA и bypassRB нужны, если RD предыдущей команды совпал с RA или RB текущей,
    т.е. когда результат предыдущей команды еще не попал в регистровый файл.

    Типичный заголовок алу может быть следующим:

    library IEEE;
    use IEEE.std_logic_1164.all;
    use IEEE.std_logic_arith.all;
    use IEEE.std_logic_unsigned.all;
    use work.my_arith.all;

    entity alu32pe is
    port (
    opa : in std_logic_vector(31 downto 0);
    opb : in std_logic_vector(31 downto 0);
    opalu : in std_logic_vector(4 downto 0);
    reset : in std_logic;
    sclk : in std_logic;
    cealu : in std_logic;
    cb_in : in std_logic;
    result: out std_logic_vector(31 downto 0);
    cc : out std_logic_vector(3 downto 0)
    );
    end;

    Что касается самих операций АЛУ, то их лучше оформить в отдельном файле библиотеки (package, у меня это my_arith.vhd),
    и вызывать их в файле описания АЛУ.
    Если надо, могу дать свой.

    P.S.
    Сигнал cealu - разрешение записи в регистры АЛУ (может быть использован для остановки
    конвейера при извлечении операнда из синхронной памяти данных за 2 такта).
    cb_in - (carry/borrow) вход переноса/заема от предыдущего вычисления.
    Выходные флаги сс лучше хранить в одном из регистров регистрового файла (сделать его
    специализированным, например, регистром флагов).
    Если этот регистр делать отдельно - это увеличит аппаратуру.
    Последний раз редактировалось Ynicky; 25.05.2015 в 20:29.

  3. #323

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Как-то я немного по другому это всё представляю. В виде единого файла, где есть интерфейс entity и архитектура, но это всего процессора, а АЛУ внутри в архитектуре, как небольшая его часть.
    Единый файл у Вас будет оооооочень большой.
    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Где можно про это более подробно почитать?
    У Вас же есть книжка Паттерсона, со стр.388.
    Только там регистровый файл выполнен в виде ОЗУ.
    И вычисление адреса памяти данных выполняется в АЛУ. У меня не так.
    Вычисление адреса происходит на том же такте, что и операции АЛУ.
    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Я пока не знаю насколько один регистр увеличит аппаратуру, поэтому мне сложно ориентироваться, нужно понимать сколько логических ячеек занимает один регистр, чтобы стало понятно, учитывая логические ячейки семейства Spartan-6.
    Это я не могу посчитать, но потребуются свои дешифраторы, отдельный код операции и что-нибудь еще.
    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Я так понимаю, что это трёх уровневый конвейер, но в самом АЛУ, то есть как бы есть АЛУ и есть местное устройство управления, которое имеет конвейер?
    Нет, это я просто вычленил схему вычисления данных из общей архитектуры своего процессора.

  4. #324

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

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Это к тому, что меня тогда заинтересовало в datasheet ds160 (Memory Controller Blocks are not supported in the -3N speed grade.)
    Выбор чипа имеет весьма косвенное отношение к реализации.
    Емкость чипа вообще есть смысл выбирать уже по занимаемым ресурсам после синтеза.
    Разработку в симуляторе вести надо.

  5. #325

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

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Но у меня наоборот, микросхема ПЛИС является определяющей и проект будет делаться так, чтобы он, удовлетворял её возможностям.
    Честно говоря я не пойму, какова цель тогда тут что то спрашивать?, тебе говорят, ты же в ответ, извиняюсь за выражение "херню городишь".

    Выбор вечно не по прямому простому пути, а через непонятные дали.

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Пока ограничимся головой и текстовым редактором
    Это как на гитаре по книжке учиться играть, не беря в руки гитару.

  6. #326

    Регистрация
    21.04.2015
    Адрес
    г. Всеволожск
    Сообщений
    52
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А пока ещё и нечего брать, код даже для АЛУ ещё не написан, самой гитары нет.
    АЛУ не самое сложное. ИМХО не с него надо начинать.

    Не пойму, это к чему. Здесь и сейчас изучается и будет применяться микросхема ПЛИС фирмы Xilinx семейства Spartan-6.
    Мой совет - не закладываться вообще на конкретный ПЛИС. Делать чтобы работало на чем угодно. Это вполне возможно. Я в качестве изучения переделывал Forth процессор J1 под себя (переписал с Verilog на VHDL, сделал его 32 битным, дописал байтовый доступ к памяти, инструкции ускорений циклов итд итп) все делал на чистом VHDL под эмулятором ghdl. Планирую делать из них 2D сеть на LX25 или LX75 (есть 2 платы от ztex)
    Радио-86РК, Апогей БК01

  7. #327

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

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    В общим по теме есть что сказать, полезного?
    По всей видимости нет, я понял, это у тебя такой вид тролинга.

  8. #328

    Регистрация
    21.04.2015
    Адрес
    г. Всеволожск
    Сообщений
    52
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Так же ещё не разобрался с умножением, так как постоянно натыкаюсь на то, что результат получается в два раза больше по разрядности, как-то не приходилось сталкиваться с умножением.
    Берем 1 и сдвигаем на 1 бит - это умножение на 2. Получается 2 бита. Сдвигаем еще на 1 бит - это умножение на 4. Получается 3 бита. Все логично. Если не понятно как делается умножение - делайте его в столбик как с десятичными числами - там получается сдвиг и суммирование с переносом.
    Радио-86РК, Апогей БК01

  9. #329

    Регистрация
    21.04.2015
    Адрес
    г. Всеволожск
    Сообщений
    52
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну пока это единственное, что мне кажется стало более менее понятным, по крайней как будет выглядеть код, и как вообще этот блок работает, поэтому начинаю с него. Хотя как мне видится, не важно с чего начинать.
    В этом конечно что-то есть. Но например fetch и decode намного проще alu но их реализация уже создает иллюзию работы (; Да и потом к ним alu цеплять и проверять проще, чем один alu "в воздухе"

    Но тут выбор уже сделан, так как смысл написать код, который влезет только в LX16
    Мой 32 битный процессор занимает четверть от LX25, а уж я там себя не сдерживал (; Кстати он получился даже меньше чем "самый маленький 32 битный с поддержкой gcc toolchain" (ZPU)
    Радио-86РК, Апогей БК01

  10. #330

    Регистрация
    21.04.2015
    Адрес
    г. Всеволожск
    Сообщений
    52
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интересно, и это оправдано?
    Мне было интересно смогу ли я. Смог. Заодно разобрался как он работает просто досконально.

    снизилась частота дизайна.
    Я оригинальную частоту не знаю. У меня на LX25 получилось 106Мгц. Меня соотношение размер/fmax устроил.

    Вся эпопея здесь - http://strijar.livejournal.com/tag/k32

    И смысл тогда в байтовом доступе к памяти, если он уже может оперировать 4-мя?
    Экономия RAM - можно иметь быстрый доступ (за один такт) к байтовым массивам. У меня в качестве теста реализована игра Life

    ---------- Post added at 15:06 ---------- Previous post was at 14:48 ----------

    Цитата Сообщение от MVV Посмотреть сообщение
    Я собирал оригинальный дизайн J1 (ссылка на мою git) на verilog под CycloneIV -7 для ReVerSE-U16 и переписал также на vhdl без доработок
    Посмотрел ваш код. У вас получился "подстрочный перевод". Я сделал по честному - логично связанные сигналы упаковывал в record (;

    Код:
    entity k32 is
        port (
            clk             : in std_logic;
            rst             : in std_logic;
            en              : in std_logic;
    
            ibus_in         : in ibus_in_type;
            ibus_out        : out ibus_out_type;
    
            data_in         : in dbus_in_type;
            data_out        : out dbus_out_type;
    
            io_in           : in dbus_in_type;
            io_out          : out dbus_out_type;
    
            exception       : out exception_type
        );
    end k32;
    А циклические сдвиги делал через srl и sll

    Код:
                   when x"8" =>
                        ds_top <= alu_a srl to_integer(unsigned(alu_b(4 downto 0)));
    
                    when x"9" =>
                        ds_top <= alu_a sll to_integer(unsigned(alu_b(4 downto 0)));
    Последний раз редактировалось Strijar; 26.05.2015 в 15:09.
    Радио-86РК, Апогей БК01

Страница 33 из 41 ПерваяПервая ... 293031323334353637 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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