Code Monkey home page Code Monkey logo

fpga_pract's Introduction

Курс "Практикум по ПЛИС на основе Verilog"

Курс посвящен изучению продвинутых тем, связанных с проектированием устройств на языках описания аппаратуры (SysytemVerilog) и внутренней структурой FPGA на примере семейства Xilinx 7.

Однажды тут появится красивое и вдохновляющее описание, но пока только так.

Список материалов

Bug bounty

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

Вы можете помочь с разработкой курса и предлагать свои правки и улучшения через механизм Pull Request.

Почему вы можете захотеть помогать? Думаю, что на это есть несколько причин:

  • Моральное удовлетворение. Согласитесь, приятно внести свой вклад во какое-то общее дело.
  • Дополнительные баллы. Тут всё понятно, за помощь можно получить некоторое количество благодарностей от преподавателя - от "спасибо" до автомата на зачёте. Зависит от объёма этой самой помощи. Конечно, оценка объёма это субъективная штука, но мы постараемся активных студентов не обижать.
  • Включение в список создателей курса. Круто же, когда на протяжении многих лет следующие поколения студентов будут видеть ваше имя в списках людей, приложивших свои силы к созданию курса?

Последний пункт требует некоторых пояснений. Список создателей курса состоит из двух категорий:

  • Автор - человек, который:
    • Написал хотя-бы одну лабораторную работу
    • Выполнил капитальную переработку хотя-бы одной лабораторной работы
    • Готовый материал которого лёг в основу лабораторной работы
  • Участник - человек, который внёс вклад в доработки лабораторной работы:
    • Исправления ошибок и опечаток
    • Улучшения формулировок
    • Добавление абзацев поясняющего текста
    • Добавление картинок и иллюстраций

По мере накопления (субъективно) достаточно большого вклада в проект Участник может быть переведён в Авторы.

fpga_pract's People

Contributors

konf avatar shuregg avatar sorukohi avatar bobablebobbobinski avatar slavo0 avatar chistikk avatar jrvvv avatar

Stargazers

 avatar Paul Matyukov avatar Georgiy Lebedev avatar  avatar  avatar Nikita avatar Alexandre avatar  avatar Adam Henault avatar  avatar  avatar Nickolay avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fpga_pract's Issues

модуль crc8 всё время в сбросе

Добрый день! Если следовать примерам из лабораторной работы, выходит, что модуль вычислителя находится в сбросе во время симуляции:
В тестовом окружении в initial блоке сброса сигнал p_rst_i изначально выставляется в высокий уровень и, спустя 200 нс, в низкий.

initial
begin
  p_dat_i    = 'hz;
  p_enable_i = 0;
  p_sel_i    = 0;
  p_we_i     = 'hz;
  p_adr_i    = 'hz;
  p_rst_i    = 1;
  #200
  p_rst_i    = 0; // Запись #200 обозначает что смена значения сигнала сброса произойдет через 200нс.
end

В в порты подключаемого wrapper'а этот сигнал подаётся без инверсии,

wrapper_crc8
dut_wrapper_crc8
(
  .p_rst_i    (p_rst_i),
  ...
);

а в самом wrapper'е при подключении crc8 появляется инверсия.

  crc8
  i_crc8
  (
    .clk_i        (p_clk_i),
    .rst_i        (!p_rst_i),
    .din_i        (din_i),
    .data_valid_i (data_valid_i),
    .crc_rd       (crc_rd),
    .crc_o        (crc_o)
  );

Внутри модуля CRC сброс осуществляется по высокому уровню соответствующего сигнала

always_ff @(posedge clk_i)
  begin
    if (rst_i) begin // Сигнал сброса - обнуляем все регистры
      state_ff         <= IDLE;
      data_current_ff  <= 8'b0;
      crc_ff           <= 8'b0;
      crc_counter_ff   <= 4'd0;
    end
    else begin

Вся эта цепочка сигнала p_rst_i приводит к тому, что после 200нс p_rst_i = 0, а в модуле crc8 rst_i будет равен 1 на протяжении всей последующей симуляции (как указал ранее, crc8 сбрасывается по высокому уровню).
Не стал делать pr, оставлю место корректировки сигнала на ваше усмотрение.

Пропущена APB2

На картинке 4 вида APB, но в таблице указаны только APB, APB3, APB4

Идеи по ЛР8

  • Мне не очень нравится, что в задании предлагается реализовать "переключение" между двумя модулями CRC. На практике такое встречается нечасто. Кажется, правильнее будет просить студентов просто ставить второй модуль CRC с добавлением новых регистров.

  • Если говорить про CRC, то с годами я планомерно упрощаю эту лабу, чтобы сделать фокус не на модулях, а на шине APB. В этом ключе возможно стоит выкинуть CRC и сделать ещё более простой модуль, например, GPIO?

Добавление отдела методички для людей, использующих gcc на Windows (ЛР 9)

Лаба рассчитана на то, что человек будет делать ее в Linux, поэтому некоторые флаги в командах (например, для создания динамических библиотек) также предоставлены для этой оси. Предлагаю добавить пару сносок с комментариями по этой проблеме.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.