User Tag List

Страница 57 из 81 ПерваяПервая ... 535455565758596061 ... ПоследняяПоследняя
Показано с 561 по 570 из 803

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

  1. #561

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

    По умолчанию

    Цитата Сообщение от andrews Посмотреть сообщение
    у чипов DC год неделя, только британцы по своему выеживаются
    Вообще не понял, на что этот ответ)

    - - - Добавлено - - -

    Еще несколько вопросов по vivad'е:

    1. Как компилировать проект без запуска симуляции, чтобы просто проверить на ошибки?
    2. Можно ли счетчику (регистру, вход которого соединен с выходом), не задавать никакого начального значения? Это используется в Z80, например, для выбора набора регистров, общий набор/альтернативный. Там абсолютно все равно, какой набор включен при старте процессора, т.к. наборы равнозначные. В vivad'е если такому регистру не установить начальное значение, то он всегда будет в неопределенном состоянии. Можно ли, чтобы при запуски в нем просто было случайное значение любое?
    3. По поводу встроенных в ПЛИС модулей памяти. Когда я пишу вот такой простейший модуль памяти:

    Код:
    module ram(
        input            clk,                           // Тактовый сигнал для синхронного чтения
        input  [7:0]     data_in,                       // Шина данных (8 бит) (ввод)
        output reg [7:0] data_out,                      // Шина данных (8 бит) (вывод)
        input  [15:0]    adr,                           // Шина адреса (16 бит)
        input            mreq,                          // Запрос доступа к памяти (на шине адреса установлен адрес для доступа к памяти)
    //  input            rd,                            // Запрос чтения памяти
        input            wr                             // Запрос записи в память
        );
        
        reg [7:0] ram [0:15];                           // ОЗУ на 16 байт
        
        initial $readmemh("ram_image.mem", ram);        // Загрузить дамп данных из файла в память
        
        always @(negedge clk)                           // Активность по отрицательному фронту clk
    	begin
            if (wr & mreq)                              // Если активны сигналы WR (запись) и MREQ (запрос памяти),
                ram[adr] <= data_in;                    // то записать байт в память по адресу adr
            else                                        // Всегда, когда не записи, идет чтение памяти
                data_out <= ram[adr];                   // то выдать байт из памяти по адресу adr на выходной регистр шины данных  
        end
        
    endmodule
    Из него получается вот такая схема:

    Скрытый текст

    [свернуть]


    Меня смущает, что RTL_RAM тактируется фронтом на входе WCLK, а сгенерированный регистр RTL_REG тактируется (но спадом). Тогда по логике, память работает по фронту CLK, а выходной регистр по спаду. Но это не соответствует моему коду. Почему так? Если у встроенной памяти есть на выходе защелка, зачем компилятор ставит дополнительную (RTL_REG)? И зачем тут вообще этот RTL_MUX?

    - - - Добавлено - - -

    4. Да, и как запомнить положение и соотношение окон в проекте? А то каждый раз при запуске симуляции все сьезжает.
    5. И наконец снова не нарадуюсь, на сколько Vivado дружественней, чем ModelSim.
    6. Как настроить, чтобы при запуске симуляции она запускалась сразу на какое-то количество временных отрезков заданное мною, чтобы я сразу видел результат в окне. Да и как сделать, чтобы окно симулятора запомнило, какие сигналы я хочу смотреть, какие надо скрыть?
    Последний раз редактировалось Titus; 18.10.2024 в 18:52.

  2. #562

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

    По умолчанию

    Написал счетчик T-циклов и он даже сразу заработал) Удивительно, учитывая, что я ноль в verilog'е и делаю первые чайниковские шаги)

    Код:
        always @ (negedge clk)                                              // Счетчик T-циклов
        begin
            reg_t1 <= res_tclk_bus_z;                                       // T1
            t2     <= t1 & (!res_tclk_bus_z);                               // T2
            reg_t3 <= (reg_t3 | t2) & (!t3) & (!res_tclk_bus_z);            // T3
            t4     <= t3 & (!res_tclk_bus_z);                               // T4
            t5     <= t4 & (!res_tclk_bus_z);                               // T5
            t6     <= t5 & (!res_tclk_bus_z);                               // T6
        end


    - - - Добавлено - - -

    Единственное, не могу посмотреть schematic, как построился счетчик T-циков. Видимо, потому что наружу процессора результат их работы никак не выведен.
    Разве нельзя построить schematic для конкретного модуля?

  3. #563

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

    По умолчанию

    Алгоритм (очень усреднённо)
    1) после наколачивания текстов запускаю eleborated/schematic
    2) думать. если надо см п1
    3) симулятор behavearal
    4) думать. если надо см п1

    Цитата Сообщение от Titus Посмотреть сообщение
    1. Как компилировать проект без запуска симуляции, чтобы просто проверить на ошибки?
    чтоб проверить на ошибки есть 100500 способов
    1) включить "реалтайм" подсветку ошибок в окне редактирования (text editor->sintax cheking. выбрать sigasi)
    2) в RTL Analysis RunLinter - текстовые указания глюков семантических (к примеру объявлена переменная, которая не используется)
    3) рядом ( в open elaborated design) есть report DRC и Metodology. тут же можно посмотреть "схему" по исходному коду (без всяких синтезов и симуляций итд)
    когда на этом этапе довольно мало "глюков" идём дальше
    4) Syntesis
    тут тоже есть аналогичные отчёты + ряд других +схема после синтеза
    когда на этом этапе довольно мало "глюков" идём дальше
    5) implement
    тут тоже есть аналогичные отчёты + ряд других +схема после имплемента (то что реально в будет в плисе)

    - - - Добавлено - - -

    Цитата Сообщение от Titus Посмотреть сообщение
    2. Можно ли счетчику (регистру, вход которого соединен с выходом),
    можно.
    после загрузки прошивки плисы - все триггера в исходной позиции "0", если не было указано иное в исходниках.
    однако для симулятора оный счётчик будет в состоянии хххх (красным цветом).
    Посему в данном случае добавляем исходное значение для симулятора.
    ПС:
    но что значит "вход которого соединен с выходом" ?

    - - - Добавлено - - -

    Цитата Сообщение от Titus Посмотреть сообщение
    3. По поводу встроенных в ПЛИС модулей памяти.
    если не указывать явно способ реализации памяти - то синтезатор в данном случае сгенерит на элементах памяти 32*1 бит с инвертированным клоком.
    пс: у вас то что в rtl (это некоторая абстракция)

    - - - Добавлено - - -

    Цитата Сообщение от Titus Посмотреть сообщение
    Из него получается вот такая схема:
    Меня здесь смущает "генератор на инверторе" - вот это жесть.
    "Чисто поржать" - можно увидеть "весь" код ТОПа и tb ?

    - - - Добавлено - - -

    Цитата Сообщение от Titus Посмотреть сообщение
    4. Да, и как запомнить положение и соотношение окон в проекте?
    В общем случае ни разу не заморачивался.
    Однако для разных режимов есть меню layout -> save as...
    А если конкретно для симулятора. то есть такой волшебный файл ?????_behav.wcfg (для его "поиска" нажать на дискетку в окне с диаграмами, рядом с лУпой). его рекомендуется сохранить в каталоге рядом с исходниками. И добавить его в проект как "файл исходников"
    тогда при открытии окна диаграмм - все требуемые сигналы (их можно добавлять и убирать, менять кодировку итд) будут на месте.

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

    Titus(18.10.2024)

  4. #564

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

    По умолчанию

    Цитата Сообщение от AlexG Посмотреть сообщение
    Меня здесь смущает "генератор на инверторе" - вот это жесть.
    Код:
    	always
      		#10 clk = ~clk;                                     // Каждые 10 тиков меняем полярность clk
    Да это так, для теста просто.

    - - - Добавлено - - -

    Цитата Сообщение от AlexG Посмотреть сообщение
    но что значит "вход которого соединен с выходом" ?
    Ну когда инверсный выход триггера соединен с его входом.

  5. #565

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

    По умолчанию

    ну или выложи свои исходники, гляну - подправлю.

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

    Titus(18.10.2024)

  6. #566

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

    По умолчанию

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

    - - - Добавлено - - -

    Цитата Сообщение от AlexG Посмотреть сообщение
    Дык это самое оная строчка должна быть в другом файле (отличном от файла, где описан модуль). и это файл должен распологаться в "категории" simulation source и быть "там" в топе.
    Эта строчка находится в топе. Зачем ее куда-то выносить, если топ - это тестбенч.

  7. #567
    HardWareMan
    Гость

    По умолчанию

    Цитата Сообщение от AlexG Посмотреть сообщение
    Меня здесь смущает "генератор на инверторе" - вот это жесть.
    Не особая жесть. Маршрут закольцовывания LAB/LE таков, что создаётся необходимый сдвиг фазы и генерация стабильна. Я на Arria2GX получал ~1ГГц на коротком инверторе. Эту частоту использовать нельзя - сложная схема не работала, но поделив 1 раз на 2 и получив ~500МГц уже моя достаточно сложная IP завелась и работала стабильно. Понятно, что генерация не стабильна: она зависит от грейда чипа, от его архитектуры, от температуры и прочих параметров, которые приведут к дрейфу частоты, но генерация при этом не сорвётся. Но можно пойти дальше и вывести пару таких "инвертора" на ноги и навесить на них стандартные RC да кварцевый резонатор и вот вы уже сэкономили на генераторе. Результат подаём на CLK вход (а иногда можно прямо внутри чипа даже конфигурацией) и вот оно уже закварцованное и стабильное.

  8. #568

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Эта строчка находится в топе. Зачем ее куда-то выносить, если топ - это тестбенч.
    Отделяем мух от котлет.
    должны быть файлы для синтеза (топ модуль с "реальным списком портов" для реальной плисы)
    и
    должны быть файлы для моделирования (тут свой топ с "пустым списком портов") и в этом ТОПе внутри подключен ТОП для синтеза.

    Иначе ломается "логика" работы утилит САПРа

    - - - Добавлено - - -

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Не особая жесть.
    Ну да при цене плисы в несколько сотен уе делать такой генератор это "Не особая жесть".
    Параметры такого генератора даже на кварце будут так себе... да на таких частотах - ну его нафик

    Вот так с помощью не хитрых приспособлений буханка хлеба превращается в троллейбус (с)
    А оно стоит того чтоб экономить на нормальном генераторе частоты ??

    ------------------
    вроде на всё ответил ??? ничего не пропустил ??

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

    Titus(18.10.2024)

  9. #569

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

    По умолчанию

    Цитата Сообщение от AlexG Посмотреть сообщение
    должны быть файлы для синтеза (топ модуль с "реальным списком портов" для реальной плисы)
    У меня нет реальной плис, поэтому наверху топ для теста вообще без портов. Это работает для симуляции, и это для меня пока главное.

    - - - Добавлено - - -

    Цитата Сообщение от AlexG Посмотреть сообщение
    вроде на всё ответил ??? ничего не пропустил ??
    Вроде все! )

  10. #570

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    У меня нет реальной плис, поэтому наверху топ для теста вообще без портов. Это работает для симуляции, и это для меня пока главное.
    нукактотаконотожеможетчто тоделать.
    Но всё же повторю
    "Иначе ломается "логика" работы утилит САПРа"
    и ряд тулзов вряд ли будут работать адекватно.

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

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

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

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

Похожие темы

  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

Ваши права

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