User Tag List

Страница 14 из 81 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя
Показано с 131 по 140 из 803

Тема: Реверс-инжиниринг Z80

  1. #131

    Регистрация
    27.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    974
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    164 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    примерно так для триггера по нарастанию фронта
    always_ff @ ( posedge clk)
    bus_d <= bus_c;

    а так для триггера по спаду фронта
    always_ff @ ( negedge clk)
    bus_e <= bus_d;

    Этот пользователь поблагодарил AlexG за это полезное сообщение:

    Titus(29.08.2024)

  2. #132

    Регистрация
    27.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    974
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    164 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    тут есть статейка в картинках про "плисоварение" от истории до конечного продукта.
    https://fpga-systems.ru/fs_fsm/state_0/fsm_state_0.pdf

    Этот пользователь поблагодарил AlexG за это полезное сообщение:

    Titus(30.08.2024)

  3. #133

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,378
    Спасибо Благодарностей отдано 
    1,697
    Спасибо Благодарностей получено 
    2,217
    Поблагодарили
    871 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от AlexG Посмотреть сообщение
    тут есть статейка в картинках про "плисоварение" от истории до конечного продукта.
    Вот соблазните меня ПЛИСами, и перестану писать эмуляторы и буду писать FPGAторы, т.к. это проще и ближе к оригиналу)

  4. #134

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,644
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Одну из разновидностей Tang Nano за копейки можно купить, чтобы понять нужно оно вообще или нет. Спектрум там есть.
    С уважением, Станислав.

  5. #135

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,378
    Спасибо Благодарностей отдано 
    1,697
    Спасибо Благодарностей получено 
    2,217
    Поблагодарили
    871 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Одну из разновидностей Tang Nano за копейки можно купить, чтобы понять нужно оно вообще или нет. Спектрум там есть.
    Мне тут посоветовали пока что с китайскими ПЛИСами не связываться, поэтому лучше Xilinx.

  6. #136

    Регистрация
    27.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    974
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    164 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С китайцами есть нюансы - не всегда предсказуемы (по документации, сами плисы, среды разработки...).
    И покупать сразу платы вовсе не обязательно - для начала можно порезвиться в симуляторе. Цена вопроса - цена интернета за время скачивания среды разработки.
    ПС: Рабочую модель с veriloga можно переписать на Си.
    ПСПС: ну а для совсем "продвинутых" можно писать на Си (в среде VivadoHLS) и получать работающий проект в железе (я до этого ещё не дорос - потребности такой ещё не возникало).

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

  8. #137

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,378
    Спасибо Благодарностей отдано 
    1,697
    Спасибо Благодарностей получено 
    2,217
    Поблагодарили
    871 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от AlexG Посмотреть сообщение
    ПС: Рабочую модель с veriloga можно переписать на Си.
    В смысле переписать на си?

  9. #138

    Регистрация
    27.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    974
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    164 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну как бы программу на паскале можно переписать на фортран и обратное тоже верно. Так и здесь. взять тот же сега мегадрайв. там есть верилог модель и есть си реализация...

  10. #139

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Мне еще пока не понятно главное - как при произвольной CLK, но не превышающей определенную частоту, сделать, чтобы часть триггеров работала по спаду, часть по фронту?
    Могу точно пояснить по Spartan-6.
    Там в каждом блоке SLICE (в котором имеется 4-8 триггеров, 4 6-входовых комбинационных LUT6 и кое-что еще) можно конфигурировать полярность сигнала CLK на триггеры.

    Поэтому можно взять тактовый сигнал, описать на языке (VHDL/Verilog) инвертор для него, и подавать прямой или инверсный CLK на тактовый вход всех триггеров. Та часть из них, на которую подается прямой CLK, будет срабатывать по его нарастанию, а другая часть (с инверсным CLK) - по спаду. При синтезе схемы этот инвертор не займет никаких ресурсов кристалла. Ни буферов тактовой частоты (BUFG), ни комбинационной логики (LUT), ничего. И даже задержки сигнала от инверсии не будет.

    Как на Spartan-7 или Artix-7 - не знаю. У Xilinx была тенденция уменьшения гибкости логических ресурсов от поколения к поколению, чтобы упаковать их больше на один кристалл. Например, в Spartan-3 были триггеры с входами R и S, а в Spartan-6 - только один из двух (R или S). Также у Spartan-6 были асинхронные R- или S-входы у триггеров, а у Artix-7 - только синхронные (по фронту тактовой частоты). На самом деле эти ограничения даже полезные, они повышают культуру разработки и ни в коей мере не ограничивают свободу разработчика, если только он немного по-другому решит задачу, которую ранее решал асинхронными входами. В общем, по Artix-7 или Spartan-7 надо смотреть по докам, есть ли там тоже возможность инверсии тактового входа триггеров. В Spartan-6 точно есть.

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

    Потому, что скважность тактового сигнала неизвестна. А размещение/разводка схемы требуют конкретных чисел. Например: что частота сигнала не более стольки-то МГц, и скважность не менее x % и не более y%. Тогда оптимизатор, исходя из наихудших условий (экстремально короткие тактовые импульсы и т.д.), раскидает и разведет схему по ресурсам ПЛИС, гарантируя ее работоспособность.

    Но широкие допуски на входной тактовый сигнал приведут к тому, что максимальная тактовая частота, при которой синтез проекта пройзойдет успешно, окажется весьма низкой. В самом деле, а вдруг пользователь подаст на тактовый вход сигнал самой неприятной для схемы скважности? Очень короткие положительные или отрицательные импульсы на тактовом входе приведут к трудностям при генерации работоспособной конфигурации ПЛИС.

    Что я предлагаю взамен? Гарантировать скважность 50% для тактовой частоты. Это можно сделать при условии, что входной тактовый сигнал периодический (без выпадений импульсов и т.п.). Подать входной тактовый сигнал на ФАПЧ, умножить его в n раз, и наслаждаться. На практике, у меня в железе на Spartan-6 работал 32-битный Softcore-процессор на частоте 80МГц, а некоторые модули схемы (напр. Gigabit MAC) - на 125МГц. Еще были приемники данных, работавшие на битовой частоте 960МГц и байтовой - 120МГц. Более современные поколения ПЛИС могут дать и более высокие рабочие частоты.

    Если внешней схеме требуется задержать работу процессора - то это следует делать не путем манипуляций с тактовой частотой, а другим способом. Сделать какой-нибудь сигнал типа WAIT, возможно - с более высоким приоритетом, который безусловно заставляет процессор в любом состоянии пропустить тактовый импульс.

    По языкам программирования (Verilog или VHDL) - наверное, это спор о вкусах. Когда учился, я пробовал освоить их оба, легче зашел VHDL, на нем и работал далее. Как профессиональный программист на Си, скажу, что "сходство" Verilog и C - кажущееся. Это совершенно разные языки, для совершенно разных задач, и способ мышления для них различается коренным образом. Между VHDL и Verilog больше сходств, чем между Verilog и C.

    Оба языка, повторюсь, задумывались для описания симуляции. Самые главные их концепции:
    1) описание узла схемы состоит из "параллельных" и "последовательных" инструкций.
    2) Параллельные инструкции выполняются (в абстрактной среде исполнения) все параллельно, непрерывно и одновременно. Как правило, они описывают комбинационные схемы.
    3) Последовательные инструкции исполняются как в обычном языке программирования, одна за другой. Они объединяются в "процессы" (Process в VHDL, Always-блоки в Verilog). Основная идея: "процесс" запускается по какому-либо событию (как правило - фронту тактовой частоты) и всякий раз мгновенно (в абстрактной среде исполнения) исполняется до конца. Отсюда конструкции VHDL типа: proc1: process(CLK) begin if CLK='1' and CLK'Event then ......... end if; end process;. В Verilog используется конструкция always @posedge(CLK). Хотя языки VHDL/Verilog допускают запуск "процесса" по изменению произвольных сигналов или их комбинаций, для синтезируемых схем следует запускать процессы только по фронту CLK. Ведь "процессы" синтезируются инструментами разработки в триггеры и комбинационную логику на их входах. Тело "процесса" может содержать разные команды, в том числе циклы, сложные конструкции if/else. Но опять же, для синтезируемых в приемлемых размерах схем следует ограничиться записью в какие-либо сигналы (это будут выходы триггеров) некоторой логической функции от каких-то других сигналов. "Процессов" в узле схемы может быть произвольное количество. По одному и тому же событию может запускаться много разных процессов, и все они (в абстрактной среде исполнения) исполняются одновременно и мгновенно.
    Последний раз редактировалось Barmaley_m; 30.08.2024 в 23:14.

    Этот пользователь поблагодарил Barmaley_m за это полезное сообщение:

    Titus(30.08.2024)

  11. #140

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,378
    Спасибо Благодарностей отдано 
    1,697
    Спасибо Благодарностей получено 
    2,217
    Поблагодарили
    871 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от AlexG Посмотреть сообщение
    Ну как бы программу на паскале можно переписать на фортран и обратное тоже верно. Так и здесь. взять тот же сега мегадрайв. там есть верилог модель и есть си реализация...
    Я не сторонник в лоб переписывать с параллельного языка на последовательный. Понятно, что так можно получить наибольшую идентичность исходному коду, с меньшими шансами накосячить при оптимизации. Однако, на мой взгляд, это крайне расточительно в плане ресурсов.

Страница 14 из 81 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 1739
    Последнее: 09.01.2025, 10:55
  2. Ответов: 32
    Последнее: 18.12.2024, 18:19
  3. Реверс-инжиниринг игры Boovie
    от Oleg N. Cher в разделе Программирование
    Ответов: 41
    Последнее: 09.01.2022, 23:07
  4. Реверс МК-92
    от Случайность в разделе Программируемые калькуляторы
    Ответов: 55
    Последнее: 24.04.2021, 23:47
  5. Реверс инжиниринг печатной платы
    от Filin в разделе Несортированное железо
    Ответов: 36
    Последнее: 11.03.2018, 22:46

Ваши права

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